摘要: 一、ArrayList的一个不安全的案例 ​ 我们都知道 ArrayList 是一个线程不安全的集合类,下面是一段 ArrayList 不安全的代码: ​ 我们可以看到运行结果报错,错误为并发修改异常 ,如下图所示: 二、解决线程不安全问题 ​ 可以通过以下三个方法解决 ArrayList 线程不安 阅读全文
posted @ 2020-05-14 18:29 xhanglog 阅读(668) 评论(0) 推荐(1) 编辑
摘要: 一、为什么值和预期不一样? ​ 我们先来看下下面的这段 Java 程序,开启十个线程,每个线程进行 number++ 操作 1000 次,最终输出的值大小应该为 10000: ​ 这个方法包含了四个参数, 代表的是期望被修改的值, 代表的是新的值, 代表期望被修改的版本号, 代表新的版本号。只有当预 阅读全文
posted @ 2020-05-11 12:22 xhanglog 阅读(528) 评论(0) 推荐(0) 编辑
摘要: 一、概述 1、简介 ​ 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。github地址:https://github.com/alibaba/Sentinel 。具有以下特征: 丰富的应用场景 阅读全文
posted @ 2020-04-01 19:12 xhanglog 阅读(2420) 评论(0) 推荐(0) 编辑
摘要: 一、概述 1、简介 ​ 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,可以替代Eureka做服务配置中心,替代Config做服务配置中心。官方文档地址:https://nacos.io/en us/docs/quick start.html 。 2、安装运行 ​ 本地环境首先需要安 阅读全文
posted @ 2020-03-29 21:25 xhanglog 阅读(3204) 评论(0) 推荐(0) 编辑
摘要: 一、概述 ​ 在微服务框架中,一个客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果,每一个前端请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。SpringCloud Sleuth 提供了一套完整的服务跟踪的解决方案 阅读全文
posted @ 2020-03-28 17:12 xhanglog 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 一、概述 1、简介 ​ Spring Cloud Stream是一个框架,用于构建与共享消息系统连接的高度可扩展的事件驱动型微服务。该框架提供了一个灵活的编程模型,该模型建立在已经建立并熟悉的Spring习惯用法和最佳实践的基础上,包括对持久性pub / sub语义,使用者组和有状态分区的支持。可以 阅读全文
posted @ 2020-03-28 15:15 xhanglog 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 一、概述 ​ SpringCloud Bus 配合SpringCloud Config使用可以实现配置的动态刷新。支持两种消息代理:RabbitMQ 和Kafka 。它整合了 Java 的事件处理机制和消息中间件的功能,能管理和传播分布式系统间的消息,就像一个分布式执行器,可用于广播状态更改、事件推 阅读全文
posted @ 2020-03-27 13:56 xhanglog 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 一、概述 1、简介 ​ SpringCloud Config 为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。官方文档地址:https://cloud.spring.io/spring cloud static/spring clo 阅读全文
posted @ 2020-03-27 11:21 xhanglog 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 一、概述 1、Gateway简介 ​ SpringCloud Gateway是SpringCloud的一个全新的项目,基于Spring 5.0 + SpringBoot 2.0和Project Reactor等技术开发的网关。为提高网关性能,SpringCloud Gateway 是基于WebFlu 阅读全文
posted @ 2020-03-26 12:07 xhanglog 阅读(729) 评论(0) 推荐(0) 编辑
摘要: 一、概述 1、分布式面临的问题 ​ 复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免的失败。 服务雪崩 多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的”扇出“。如果扇出的链路上某个微服务的调用响应时间过 阅读全文
posted @ 2020-03-24 21:55 xhanglog 阅读(229) 评论(0) 推荐(0) 编辑