CAP 与 BASE:分布式系统取舍原则
CAP 和 BASE 不是为了背概念而是为了指导分布式系统在网络异常、数据同步和服务可用之间怎么取舍。尤其是分布式事务最终都绕不开强一致和最终一致的选择。一句话概括分布式系统里 P 几乎无法避免所以真正的取舍通常发生在 C 和 A 之间BASE 是在无法同时保证强一致和高可用时选择基本可用、软状态和最终一致。否是可用性 A一致性 C分布式系统多个节点通过网络通信是否发生网络分区正常同步数据必须保证 P分区容错优先保证什么AP继续响应但可能短暂不一致CP拒绝或阻塞部分请求CAP 三个指标是什么指标含义Consistency 一致性用户访问任意节点得到的数据都一致Availability 可用性用户访问任意健康节点都能得到响应Partition Tolerance 分区容错性网络分区出现时系统仍能继续对外提供服务CAP 定理说分布式系统无法同时满足 C、A、P 三个指标。在真实分布式系统里节点之间一定通过网络通信。网络超时、丢包、断连无法彻底避免所以 P 基本是必须考虑的。为什么 P 几乎无法放弃如果两个节点之间网络断了它们就形成了分区。此时如果继续接收请求就可能出现两个节点数据不一致如果为了保证数据一致而拒绝部分请求可用性就下降。所以分区出现时只能在两条路里选选择 AP继续对外提供服务允许短时间数据不一致。选择 CP保证数据强一致部分请求可能被阻塞或拒绝。为什么 CA 在分布式系统里基本不现实有些资料会画出 CA、CP、AP 三种组合但真正到了分布式系统里CA 基本不是现实选择。原因很简单只要系统跨节点、跨机器、跨网络就一定可能发生网络分区。你可以降低概率但不能彻底消灭。举个例子要不要节点 A网络正常同步数据给节点 B节点 B网络分区发生节点 A 和节点 B互相不可达还要继续提供服务吗选择 AP可能短暂不一致选择 CP拒绝或阻塞部分请求如果完全不考虑 P就等于假设网络永远可靠。单机系统可以近似这么想分布式系统不能这么想。BASE 理论是什么BASE 是对 CAP 的一种工程化解决思路。概念含义Basically Available 基本可用出故障时允许损失部分可用性但保证核心功能可用Soft State 软状态允许系统在一段时间内存在中间状态Eventually Consistent 最终一致不保证立刻一致但最终会达到一致业务请求核心链路优先保证非核心能力降级允许短暂中间状态异步补偿或重试最终达到数据一致比如下单、扣款、扣库存三个服务中如果某个环节失败可以先记录状态再通过补偿、重试、人工处理等方式最终修复数据。AP 和 CP 对分布式事务的影响思路特点典型方案CP 强一致各分支事务等统一结果一起提交或回滚XAAP 最终一致各分支先提交异常时通过补偿恢复AT、TCC、MQ 最终一致强一致适合银行、资金强约束场景但性能和可用性压力更大。最终一致适合大多数互联网业务比如订单、积分、库存、消息通知等系统吞吐更好但要设计补偿和幂等。面试回答模板可以这样答CAP 指一致性、可用性和分区容错性。分布式系统节点之间通过网络通信网络分区是无法彻底避免的所以 P 基本必须保证。当发生分区时如果继续对外提供服务就可能牺牲强一致性属于 AP如果要保证强一致就可能阻塞或拒绝部分请求属于 CP。BASE 是 CAP 的一种工程化解决思路包括基本可用、软状态和最终一致意思是在故障时允许短暂不可用或短暂不一致但最终通过补偿、重试等方式达到一致。小结CAP 和 BASE 最重要的不是定义而是选型意识P 是现实约束C 和 A 是业务选择强一致换确定性最终一致换吞吐和可用性。讲分布式事务之前先把这个取舍讲清楚后面的 XA、AT、TCC、MQ 才不会变成背方案名。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2638047.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!