CAP与BASE
一、分布式系统设计的CAP理论:
Consistency:整个分布式系统内的各节点里,数据必须保证强一致性。
Avilability:整个分布式系统必须总能在有效的时间内给客户端正确的响应。
Partitioning:整个分布式系统内部各节点若发生网络分区,系统仍能保证可用性和强一致性。
通过论证,CAP三者不能同时兼得,最多只能兼得其二;
理论上有CP、AP、CA三种选择;
但在工程实践中,P是分布式系统要满足的前提,不能放弃,否则一旦网络分区,系统就可能不可用或数据不一致;
所以实际可选的策略只有CP、AP两个;
场景示例:用户提交订单,后台创建订单、然后向用户发送短信提醒。
套上业务场景分别说明:
-
CP:用户提交订单后,订单创建、短信发送都成功,才给用户界面返回成功提示。使用XA做事务协调者,保证强一致性;一致性要求,小并发。
-
AP:订单创建成功后,立即返回给用户端,通常是异步地调用短信发送逻辑;避免过多的占用资源,尽量避免调用链路的阻塞;用户响应更快,体验更佳。
短信这种非核心数据,难道就不管了吗,当然不是!
二、BASE理论
在【AP】策略下,如何【尽可能】地实现数据的一致性。
Basically Available(基本可用):快速实现用户的基本价值与诉求。(“创建订单”后立即返回给用户端,就是基本可用的体现)
Soft state(软状态):在业务操作没有最终完成前的中间状态。(订单创建后,短信记录未发或未发送成功前的过度状态)
Eventually consistent(最终一致性):通过技术手段,过一段时间后才让数据保持完整的状态。
最终一致性可以通过下列手段来达到:
- 重试:通信失败,就重试,来保证一致。(MQ就提供了重试机制)
- 数据校对:周期性地进行多端数据对账和匹配,发现未对齐的就补偿。
- 人工介入:链路监控,可支持数据回放,排查出问题后人工补录。
学习使我充实,分享给我快乐!