分布式系统的CAP定理

CAP

C:consistency一致性

All node see the same data at the same time.

A:available可用性

Reads and write always succeed.即服务一直可用,且必须在正常时间内响应。

P:partition tolerance分区容错性

The system continues to operate despite arbitrary message loss or failure of part of the system.

举个简单例子,一个分布式系统数据库有主节点一个,从节点两个,主节点写,从节点读。主节点数据更新后需要同步更新到从节点,这个需要依赖网络,当然网络也可能故障。分区容错性是说,即使网络有故障,比如某个从节点和主节点之间的通信断掉了,系统出现了分区(partition),整个系统仍能正常运行(partition tolerance)。分布式系统必须保证分区容错性,否则就不叫分布式系统了。

如果比如某个从节点和主节点之间的通信断掉了,系统出现了分区(partition),这个时候一致性C和可用性A就只能选一个了。比如更新主库x=1变为x=2,如果主库更新后不等从库更新(比如只是通过binlog异步更新从库的数据),立即返回成功,这样保证了可用性,但如果有人访问到还没更新的从库,就会得到旧数据,这就不满足一致性了。如果要满足一致性,则主库更新时必须同步更新所有从库,并且在此期间加锁禁止访问,直到所有从库都报告数据已同步,才释放锁。加锁期间查询此数据将被阻塞,这就不满足可用性了。

在网络正常的情况下,CA是可以在很大程度上被同时满足的。

可用性和分区容错性的区别:

可用性(Availability)强调的是系统对请求的响应能力。它指的是在系统中每个请求都能在正常时间内得到响应。在分布式系统的环境下,即使部分节点发生故障,系统仍然需要保证能够正常响应用户的请求。高可用性的系统会尽量减少停机时间,确保用户可以随时访问服务。

分区容错性(Partition Tolerance)则关注的是系统在网络分区(即网络故障导致节点间通信中断)的情况下的运行能力。它意味着系统应该能够容忍任意数量的消息丢失或延迟,而不会导致系统总体功能的崩溃。也就是说,即使系统中的某些节点因为网络问题无法与其他节点通信,系统仍然需要能够继续运行并提供服务。

简而言之,可用性更侧重于系统对单个请求的响应能力,而分区容错性则更侧重于系统在网络故障等不利条件下的整体运行能力。

  • 11
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值