Consistency (一致性)

本章讨论为了实现一致性, 通常由那些解决方案.

首先要明白, 一致性有多个不同级别. 简单来说有两种:

  • 强一致

  • 最终一致

什么是 Consistency

在分布式系统语境下, 一致性指的是在分布式的多个节点中, 一旦系统确认状态发生了更改, 所有的节点上的状态应该是一致的. 举例来说集群说你的把银行账户余额变更为了 1200 元, 那么所有的节点上你余额的状态应该都是 1200 元.

在该语境下, 一致性也有不同级别:

  • Strong consistency (强一致), 最高级别. 你的写入成功后, 立即从任意节点读获得的数据应该是一样的.

  • Eventual consistency (弱一致), 工业常用, 你写入成功后立刻读, 大概率读到正确数据, 小概率读到的是旧数据. 过一段时间后 (工业界通常是 1 秒以内) 所有的节点都能读到正确数据.

Strong Consistency (强一致)

我们来讨论两种场景:

  • 银行 A 要求向银行 B 转账 $100, 两个银行的数据库系统记录必须要同时完成或者同时失败.

  • 用户在某银行中要求从 账户 A 向 账户 B 转账 $100, 两条记录保存在同一个数据库的同一个表中.

Eventual Consistency 弱一致