理解分布式系统一致性(1)

 

一、概念通常来说,分布式一致性指的是数据一致性,可理解为所有节点都能访问到最新版本的数据,即数...



一、概念

通常来说,分布式一致性指的是数据一致性,可理解为所有节点都能访问到最新版本的数据,即数据的正确性需求。

数据一致性在单机的情况下很好实现,只需要共享内存或者锁的形式就可以解决。但数据存储在单机会有两个限制:1)单机不可用系统整体将不可用;2)系统吞吐量受限于单机的计算能力。因此我们会用多机来存储数据的多个副本(数据的复制)来消除上面的限制。

二、模型

一致性模型主要有强一致性,弱一致性和最终一致性三种。

强一致性

当更新操作完成之后,任何多个后续进程或者线程的访问都会返回最新的更新的值。这种是对用户最友好的,就是用户上一次写什么,下一次就保证能读到什么。但是这种实现对性能影响较大。

弱一致性

系统并不保证续进程或者线程的访问都会返回最新的更新过的值。系统在数据写入成功之后,不承诺立即可以读到最新写入的值,也不会具体的承诺多久之后可以读到。但会尽可能保证在某个时间级别(比如秒级别)之后,可以让数据达到一致性状态。

最终一致性

弱一致性的特定形式。系统保证在没有后续更新的前提下,系统最终返回上一次更新操作的值。在没有故障发生的前提下,不一致窗口的时间主要受通信延迟,系统负载和复制副本的个数影响。DNS是一个典型的最终一致性系统。

三、原理

CAP

任何基于网络的数据共享系统最多只能满足数据一致性(Consistency)、可用性(Availability)和网络分区容忍(Partition Tolerance)三个特性中的两个,三个特性的定义如下:

  • 数据一致性:等同于所有节点拥有数据的最新版本
  • 可用性:数据具备高可用性
  • 分区容忍:容忍网络出现分区,分区之间网络不可达


    关注 lytest


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册