理解分布式系统一致性(1)
一、概念通常来说,分布式一致性指的是数据一致性,可理解为所有节点都能访问到最新版本的数据,即数...
一、概念
通常来说,分布式一致性指的是数据一致性,可理解为所有节点都能访问到最新版本的数据,即数据的正确性需求。
数据一致性在单机的情况下很好实现,只需要共享内存或者锁的形式就可以解决。但数据存储在单机会有两个限制:1)单机不可用系统整体将不可用;2)系统吞吐量受限于单机的计算能力。因此我们会用多机来存储数据的多个副本(数据的复制)来消除上面的限制。
二、模型
一致性模型主要有强一致性,弱一致性和最终一致性三种。
强一致性
当更新操作完成之后,任何多个后续进程或者线程的访问都会返回最新的更新的值。这种是对用户最友好的,就是用户上一次写什么,下一次就保证能读到什么。但是这种实现对性能影响较大。
弱一致性
系统并不保证续进程或者线程的访问都会返回最新的更新过的值。系统在数据写入成功之后,不承诺立即可以读到最新写入的值,也不会具体的承诺多久之后可以读到。但会尽可能保证在某个时间级别(比如秒级别)之后,可以让数据达到一致性状态。
最终一致性
弱一致性的特定形式。系统保证在没有后续更新的前提下,系统最终返回上一次更新操作的值。在没有故障发生的前提下,不一致窗口的时间主要受通信延迟,系统负载和复制副本的个数影响。DNS是一个典型的最终一致性系统。
三、原理
CAP
任何基于网络的数据共享系统最多只能满足数据一致性(Consistency)、可用性(Availability)和网络分区容忍(Partition Tolerance)三个特性中的两个,三个特性的定义如下:
- 数据一致性:等同于所有节点拥有数据的最新版本
- 可用性:数据具备高可用性
- 分区容忍:容忍网络出现分区,分区之间网络不可达
关注 lytest
微信扫一扫关注公众号