分布式-CAP理论

背景

在大规模拓展服务下存在三个特性:

  1. C(Consistency):一致性

  2. A(Availability):可用性

  3. D(Partition Tolerance):分区容错性

20240330204113

一致性

一致性: All nodes see the same data at the same time

所有节点数据,在同一时刻,读数据都是最新的

20240330204606

流程:

  1. 对主存储写数据

  2. 进行上锁,要求对从存储进行同步

  3. 同步成功,释放锁,返回成功

可用性

可用性:Reads and writes always succeed

服务永远可用,用户感知不到异常

20240330205316

流程:

  1. 用户向master请求

  2. master从从存储请求

分区容错性

分区容错性:The system continues to operate despite arbitrary message loss or failure of part of the system

在分布式系统中,尽管部分节点出现任何消息丢失或者故障,系统还应继续运⾏

20240330205748

流程:

尽使⽤异步取代同步操作,例如使⽤异步⽅式将数据从主数据库同步到从数据,这样节点
之间能有效地实现松耦合。

CAP的取舍

CAP一般都是只能三选二,其中P应该是分布式系统的必须项目,所以只能在CA中权衡

CP放弃A

CP放弃A,就是允许系统停机和长时间无响应

放弃可⽤性,追求⼀致性和分区容错性,如Redis、HBase等,还有分布式系统中常⽤的
Zookeeper也在CAP三者之中选择优先保证CP。
典型的CP应⽤场景,如跨⾏转账,⼀次转账请求要等待双⽅银⾏系统完成整个事务才算完
成。

AP放弃C

AP放弃C,在某一段时间内无法保持一致性,但是会保持最终一致性

典型的应⽤场景1,如淘宝订单退款。今⽇退款成功,明⽇到账,只要⽤户可以接受在⼀定时
间内到账即可

参考

  • 刘丹冰:深入理解Go语言