分布式-CAP理论
分布式-CAP理论
背景
在大规模拓展服务下存在三个特性:
C(Consistency):一致性
A(Availability):可用性
D(Partition Tolerance):分区容错性
一致性
一致性: All nodes see the same data at the same time
所有节点数据,在同一时刻,读数据都是最新的
流程:
对主存储写数据
进行上锁,要求对从存储进行同步
同步成功,释放锁,返回成功
可用性
可用性:Reads and writes always succeed
服务永远可用,用户感知不到异常
流程:
用户向master请求
master从从存储请求
分区容错性
分区容错性:The system continues to operate despite arbitrary message loss or failure of part of the system
在分布式系统中,尽管部分节点出现任何消息丢失或者故障,系统还应继续运⾏
流程:
尽使⽤异步取代同步操作,例如使⽤异步⽅式将数据从主数据库同步到从数据,这样节点
之间能有效地实现松耦合。
CAP的取舍
CAP一般都是只能三选二,其中P应该是分布式系统的必须项目,所以只能在CA中权衡
CP放弃A
CP放弃A,就是允许系统停机和长时间无响应
放弃可⽤性,追求⼀致性和分区容错性,如Redis、HBase等,还有分布式系统中常⽤的
Zookeeper也在CAP三者之中选择优先保证CP。
典型的CP应⽤场景,如跨⾏转账,⼀次转账请求要等待双⽅银⾏系统完成整个事务才算完
成。
AP放弃C
AP放弃C,在某一段时间内无法保持一致性,但是会保持最终一致性
典型的应⽤场景1,如淘宝订单退款。今⽇退款成功,明⽇到账,只要⽤户可以接受在⼀定时
间内到账即可
参考
- 刘丹冰:深入理解Go语言
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joohwan!
评论