cap定理指的是,在一个分布式系统中,只能满足cap中的两项。
cap定理
C consistency 一致性
A availability 可用性
P partition tolerance 分区可容错性 --在任意分区网络故障的情况下系统仍能继续运行
网络并不可靠,所以你应要支持分区容错性,并需要在软件可用性和一致性间做出取舍。
为何不能同时满足C和A
- 一般分布式系统中首先都要保证P(分区可容错性)
- 一致性指的是所有的节点返回的数据都是一致的
- 可用性指的是服务器在正常响应时间内可用
- 假设分布式系统有两个服务A和B,在A服务修改用户名admin,改成user
- 如果要满足一致性,即所有节点返回数据都是一致,访问B服务时,在A服务修改数据期间,需要锁定B服务读和写操作,修改完成后A和B服务返回都是更新后的数据,这样就不能保证可用性(因为有锁定时间)。
- 如果要保证可以性,在修改数据期间就不能锁定B服务的读和写操作,这样修改后,A返回更新后的数据,B返回旧数据,不满足一致性。
应用
- 一致性
- 在系统中对数据比较敏感的数据,比如商品的价格,库存,需要保证一致性,放弃可用性。
- 可用性
- 对于对数据不太敏感的数据,比如商品的名称,用户头像,昵称不敏感的数据,需要保证可用性,放弃一致性。
- 网页的更新
网友评论