分布式理论--CAP

1,什么是CAP理论?

CAP理论是指在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance),这三个要素最多只能实现两点,不可能三点兼顾。

CAP.png

额。。。图有点烂,,但还能看

2,为什么分布式系统不能同时满足系统一致性和可用性?

分布式系统与单片机不同,他设计到多节点之间的通信和交互,节点间的分区故障是必然发生的,所以在分布式系统中分区容错性(P)是必须考虑的。要么选中一致性(C),缺保数据正确;要么选择可用性(A),保证服务可用。

当选择了一致性(C)的时候,一定会读到最新的数据,不会读到旧数据,但如果因为消息丢失、延迟过高发生了网络分区,那么这个时候,当集群节点接收到来自客户端的读请求时,为了不破坏一致性,可能会因为无法响应最新数据,而返回出错信息。

当选择了可用性(A)的时候,系统将始终处理客户端的查询,返回特定信息,如果发生了网络分区,一些节点将无法返回最新的特定信息,它们将返回自己当前的相对新的信息。

3,如何理解数据一致性?

数据一致性模型可以分为强一致性和弱一致性。在互联网领域的绝大多数场景中,都需要牺牲强一致性来换取系统的高可用性,形同往往只需要保证“最终一致性”,只要这个最终时间是在用户可以接受的范围内即可。

系统一致性模型.png

强一致性:当更新完成后,任何多个后续进程的访问都会返回最新值,这种是对用户最友好的,就是用户上次写的什么,下次就保证能读到什么。根据 CAP 理论,这种实现需要牺牲可用性。

弱一致性:系统在数据写入成功之后,不承诺立即读到最新的值,也不会具体的承诺多久之后可以读到。用户读到某一操作对系统数据的更新需要一段时间,这段时间我们称之为“不一致窗口”。

最终一致性:最终一致性是弱一致性的特例,强调的是所有的数据副本,在经过一段时间的同步之后,最终都能达到一个一致的状态。因此最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。

文章作者: giles
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 我有一个朋友
待分类
喜欢就支持一下吧