写点什么

分布式系统当中的 CAP 理论

发布于: 2021 年 04 月 16 日
分布式系统当中的CAP理论

分布式系统当中的 CAP 理论

 

分布式系统(distributed system)正变得越来越重要,大型网站几乎都是分布式的。

分布式系统的最大难点,就是各个节点的状态如何同步。

为了解决各个节点之间的状态同步问题,在 1998 年,由加州大学的计算机科学家 Eric Brewer 提出分布式系统的三个指标,分别是

Consistency:一致性

Availability:可用性

Partition tolerance:分区容错性

 

Eric Brewer 说,这三个指标不可能同时做到。最多只能同时满足其中两个条件,这个结论就叫做 CAP 定理

CAP 理论是指,分布式系统中,一致性、可用性和分区容忍性最多只能同时满足两个。

 

一致性Consistency

· 通过某个节点的写操作结果对后面通过其它节点的读操作可见

· 如果更新数据后,并发访问情况下后续读操作可立即感知该更新,称为强一致性

· 如果允许之后部分或者全部感知不到该更新,称为弱一致性

· 若在之后的一段时间(通常该时间不固定)后,一定可以感知到该更新,称为最终一致性

可用性Availability

· 任何一个没有发生故障的节点必须在有限的时间内返回合理的结果

分区容错性Partition tolerance

· 部分节点宕机或者无法与其它节点通信时,各分区间还可保持分布式系统的功能

一般而言,都要求保证分区容忍性。所以在 CAP 理论下,更多的是需要在可用性和一致性之间做权衡。



1、Partition tolerance

 

先看 Partition tolerance,中文叫做"分区容错"。



大多数分布式系统都分布在多个子网络。每个子网络就叫做一个区(partition)。分区容错的意思是,区间通信可能失败。比如,一台服务器放在中国,另一台服务器放在美国,这就是两个区,它们之间可能无法通信。


上图中,G1 和 G2 是两台跨区的服务器。G1 向 G2 发送一条消息,G2 可能无法收到。系统设计的时候,必须考虑到这种情况。

一般来说,分区容错无法避免,因此可以认为 CAP 的 P 总是存在的。即永远可能存在分区容错这个问题

2、Consistency

 

Consistency 中文叫做"一致性"。意思是,写操作之后的读操作,必须返回该值。举例来说,某条记录是 v0,用户向 G1 发起一个写操作,将其改为 v1。



接下来,用户的读操作就会得到 v1。这就叫一致性。



问题是,用户有可能向 G2 发起读操作,由于 G2 的值没有发生变化,因此返回的是 v0。G1 和 G2 读操作的结果不一致,这就不满足一致性了。


为了让 G2 也能变为 v1,就要在 G1 写操作的时候,让 G1 向 G2 发送一条消息,要求 G2 也改成 v1。



这样的话,用户向 G2 发起读操作,也能得到 v1。


3、Availability

Availability 中文叫做"可用性",意思是只要收到用户的请求,服务器就必须给出回应。

用户可以选择向 G1 或 G2 发起读操作。不管是哪台服务器,只要收到请求,就必须告诉用户,到底是 v0 还是 v1,否则就不满足可用性。

 

发布于: 2021 年 04 月 16 日阅读数: 17
用户头像

专注于大数据技术研究 2020.11.10 加入

运营公众号:五分钟学大数据。大数据领域原创技术号,深入大数据技术

评论

发布
暂无评论
分布式系统当中的CAP理论