CAP理论的缺点是什么?
CAP理论其实是有缺点的 , 前文也提到一些 , 具体的缺点如下:
- 理论忽略网络延迟、节点处理数据的速度
- 理论中的一致性是强一致性
- 理论中的指标的选择和放弃并不是三选二的关系
CAP理论的改进版BASE理论
由于CAP理论在定义时过于的乐观 , 导致他有些缺陷 , 于是又有大神改进了CAP理论 , 从而引申出理论改进版本:BASE理论 。eBay的架构师Dan Pritchett根据他自身在大规模分布式系统的实践经验 , 提出了BASE理论 。BASE理论是对CAP理论的延伸和补充 , 它满足CAP理论 , 通过牺牲强一致性获得可用性 , 在一定的时间窗口内 , 达到数据的最终一致性 。
BASE理论模型包含如下三个元素:
- BA:Basically Available , 基本可用 。
- S:Soft State,软状态 , 状态可以在一定时间内不同步 。
- E:Eventually Consistent , 最终一致性 , 在一定的时间窗口内 , 最终数据达成一致即可 。
BASE理论中的Basically Available 基本可用 , 就是系统在出现问题的时候 , 牺牲一部分的功能 , 来保障核心功能正常 。这其实就是一种妥协 , 相当于壁虎断臂求生 。就像前几年的双十一淘宝 , 订单支付、退款直接崩掉了 , 后面就进行改进限流需要你多试几次才能付款、退款 , 再后来双十一那几天是不能申请退款的 , 直接就把你这个功能给关闭了 , 相当于服务熔断了 。这就是牺牲非核心的功能 , 将所有的资源都用来保障核心的支付功能 。
Soft State,软状态
允许系统在一定时间内的状态不同步 , 允许系统处于软状态 , 这个软状态其实就是中间状态 。比如采用分布式架构的电商系统 , 用户下单完成并付款 , 是否支付成功 , 是支付系统完成的 , 订单系统不会等支付系统返回是否支付成功再把结果返回给客户的 , 而是先把订单状态设置为付款中 , 返回给客户 , 然后支付系统收到异步通知确定支付成功成功 , 再把状态设置为付款完成 , 再把付款完成信息推送给订单系统 。这样 , 就可以提高系统的响应速度 。即使这支付系统出现故障宕机了 , 系统重启之后可以通过定时任务补偿处理未完成的数据 , 然后根据数据所处的状态进行补偿处理 , 最终完成数据处理 。付款中这个状态 , 就是软状态即中间状态 。
推荐阅读
- 从零开始教你安装Oracle数据库
- excel怎么输入下拉选项-excel中设置下拉列表的输入-_1
- 不喜欢摄影?照片拍不出它的美
- 手机上的Linux:Termux
- ae复制粘贴快捷键是什么?ae的复制键_2
- 东汉邓太后的历史评价?汉朝的邓太后
- 初窥 Python 的 import 机制
- PLC的基本知识?plc的一些基础知识点
- 修复Windows 10更新错误的最佳方法
- 基于SpringBoot的微服务架构与K8S容器部署实践