建设工程监理网站,西安房产网最新楼盘,手把手教你优化网站,网站联系我们页面设计CAP原则又称CAP定理#xff0c;指的是在一个分布式系统中#xff0c; Consistency#xff08;一致性#xff09;、 Availability#xff08;可用性#xff09;、Partition tolerance#xff08;分区容错性#xff09;#xff0c;三者不可兼得。 998年#xff0c;加州…CAP原则又称CAP定理指的是在一个分布式系统中 Consistency一致性、 Availability可用性、Partition tolerance分区容错性三者不可兼得。 998年加州大学的计算机科学家 Eric Brewer 提出分布式系统有三个指标
Consistency(一致性): 所有的节点上的数据时刻保持同步强一致性 Availability(可用性): 每个请求都能接受到一个响应无论返回的数据是否一致 Partition tolerance(分区容错性): 系统应该能持续提供服务即使在遇到某节点或网络分区故障的时候。 它们的第一个字母分别是 C、A、P。 Eric Brewer 说这三个指标不可能同时做到。这个结论就叫做 CAP 定理。
下面分别讲述下这三个概念
1.分区容错性 相对于单点系统分布式系统会部署在多台机器上机器之间有可能是跨区域的比如服务器机房一个在北京一个在上海如果在这两个机房之间构建了分布式系统那么这两个区域的机器是需要通信的而只要通信就有可能出现通信失败所以分区容错性P是我们在设计分布式系统中必须要考虑到的问题。
2.一致性 一致性是说客户端从分布式系统中拿数据不管从那一台机器中获取都应该是最新的。 假设某一时间client向server1服务器更新vo-v1之后不管从server1还是从server2取值都是v1这样才满足一致性。而如果cleint往server1写过数据后从server2中去获取值此时server1和server2之间还未同步那么就会依然获取到vo那么就不满足一致性。
3.可用性 可用性是指不管任何时候client向任意一台server发起请求都能得到响应不管获得的数据是v0还是v1。
一致性和可用性之间的矛盾
因为分区容错P的必然性所以一致性C和可用性A无法同时成立。 如果保证 Server2的一致性那么 Server1 必须在写操作时锁定 Server2 的读操作和写操作。只有数据同步后才能重新开放读写。锁定期间Server2 不能读写这样可用性就无法满足。
如果保证 Server2 的可用性那么就不能锁定 Server2所以一致性不成立。
综上所述Server2 无法同时做到一致性和可用性。系统设计时只能选择一个目标。如果追求强一致性那么无法保证所有节点的可用性如果追求所有节点的可用性那就没法做到强一致性。