分布式系统原理——CAP定理 分布式系统原理——CAP定理前言 这篇文章取自这篇博客,作为整理和收录,方便后续查阅。 分布式系统 CAP 定理 P 代表什么含义 作者之前在看 CAP 定理时抱有很大的疑惑,CAP 定理的定义是指在分布式系统中三者只能满足其二,也就是存在分布式 CA 系统的。作者在网络上查阅了很多关于 CAP 文章,虽然这些文章对于 P 的解释五花八门,但总结下来这些观点大多都是指 P 是不可缺少的,也就是 2020-10-30 分布式
分布式系统设计——5. 分布式事务 分布式系统设计——5. 分布式事务前言 这篇文章取自这篇博客,作为整理和收录,方便后续查阅。 明白有哪几种方案,每种方案可能有啥坑?比如 TCC 方案的网络问题、XA 方案的一致性问题。 分布式事务的实现主要有以下 6 种方案: XA 方案 TCC 方案 SAGA 方案 本地消息表 可靠消息最终一致性方案 最大努力通知方案 两阶段提交方案/XA 方案 所谓的 XA 方案, 2020-10-30 分布式
Dubbo——6. Dubbo服务治理 Dubbo——6. Dubbo服务治理前言 这篇文章取自这篇博客,作为整理和收录,方便后续查阅。 服务治理,这个问题如果问你,其实就是看看你有没有服务治理的思想,因为这个是做过复杂微服务的人肯定会遇到的一个问题。 服务降级,这个是涉及到复杂分布式系统中必备的一个话题,因为分布式系统互相来回调用,任何一个系统故障了,你不降级,直接就全盘崩溃?那就太坑爹了吧。 失败重试,分布式系统中网络 2020-10-25 Dubbo
Dubbo——5. Dubbo的 spi 思想 Dubbo——5. Dubbo的 spi 思想前言 这篇文章取自这篇博客,作为整理和收录,方便后续查阅。 spi 是啥? spi,简单来说,就是 service provider interface ,说白了是什么意思呢,比如你有个接口,现在这个接口有 3 个实现类,那么在系统运行的时候对这个接口到底选择哪个实现类呢?这就需要 spi 了,需要根据指定的配置或者是默认的配置,去找到对应的实现类 2020-10-25 Dubbo
分布式系统设计——4. 分布式锁 分布式系统设计——4. 分布式锁前言 这篇文章取自这篇博客,作为整理和收录,方便后续查阅。 Redis 分布式锁 官方叫做 RedLock 算法,是 Redis 官方支持的分布式锁算法。 这个分布式锁有 3 个重要的考量点: 互斥(只能有一个客户端获取锁) 不能死锁 容错(只要大部分 Redis 节点创建了这把锁就可以) Redis 最普通的分布式锁 第一个最普通的实现方式,就是在 2020-10-25 分布式
分布式系统设计——3. RPC 框架简单设计 分布式系统设计——3. RPC 框架简单设计前言 这篇文章取自这篇博客,作为整理和收录,方便后续查阅。 举个栗子,说个最简单的回答思路: 上来你的服务就得去注册中心注册吧,你是不是得有个注册中心,保留各个服务的信息,可以用 zookeeper 来做,对吧。 然后你的消费者需要去注册中心拿对应的服务信息吧,对吧,而且每个服务可能会存在于多台机器上。 接着你就该发起一次请求了,咋发起?当然是基 2020-10-25 分布式
分布式系统设计——2. 接口请求顺序性 分布式系统设计——2. 接口请求顺序性前言 这篇文章取自这篇博客,作为整理和收录,方便后续查阅。 其实分布式系统接口的调用顺序,也是个问题,一般来说是不用保证顺序的。但是有时候可能确实是需要严格的顺序保证。给大家举个例子,你服务 A 调用服务 B,先插入再删除。好,结果俩请求过去了,落在不同机器上,可能插入请求因为某些原因执行慢了一些,导致删除请求先执行了,此时因为没数据所以啥效果也没有;结 2020-10-25 分布式
分布式系统设计——1. 接口幂等性 分布式系统设计——1. 接口幂等性前言 这篇文章取自这篇博客,作为整理和收录,方便后续查阅。 一个分布式系统中的某个接口,该如何保证幂等性?这个事儿其实是你做分布式系统的时候必须要考虑的一个生产环境的技术问题。啥意思呢? 你看,假如你有个服务提供一些接口供外部调用,这个服务部署在了 5 台机器上,接着有个接口就是付款接口。然后人家用户在前端上操作的时候,不知道为啥,总之就是一个订单不小心 2020-10-25 分布式
Dubbo——4. Dubbo负载均衡策略 Dubbo——4. Dubbo负载均衡策略前言 这篇文章取自这篇博客,作为整理和收录,方便后续查阅。 dubbo 负载均衡策略RandomLoadBalance 默认情况下,dubbo 是 RandomLoadBalance ,即随机调用实现负载均衡,可以对 provider 不同实例设置不同的权重,会按照权重来负载均衡,权重越大分配流量越高,一般就用这个默认的就可以了。 算法思想很简单。 2020-10-25 Dubbo
单点登录的三种实现方式 Dubbo——3. Dubbo序列化协议前言 这篇文章取自这篇博客,作为整理和收录,方便后续查阅。 序列化,就是把数据结构或者是一些对象,转换为二进制串的过程,而反序列化是将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程。 dubbo 支持不同的通信协议 dubbo 协议 默认就是走 dubbo 协议,单一长连接,进行的是 NIO 异步通信,基于 hessian 作为序列 2020-10-23 Dubbo