Consistency (一致性)¶
本章讨论为了实现一致性, 通常由那些解决方案.
首先要明白, 一致性有多个不同级别. 简单来说有两种:
强一致
最终一致
Table of Content
什么是 Consistency¶
在分布式系统语境下, 一致性指的是在分布式的多个节点中, 一旦系统确认状态发生了更改, 所有的节点上的状态应该是一致的. 举例来说集群说你的把银行账户余额变更为了 1200 元, 那么所有的节点上你余额的状态应该都是 1200 元.
在该语境下, 一致性也有不同级别:
Strong consistency (强一致), 最高级别. 你的写入成功后, 立即从任意节点读获得的数据应该是一样的.
Eventual consistency (弱一致), 工业常用, 你写入成功后立刻读, 大概率读到正确数据, 小概率读到的是旧数据. 过一段时间后 (工业界通常是 1 秒以内) 所有的节点都能读到正确数据.
Strong Consistency (强一致)¶
我们来讨论两种场景:
银行 A 要求向银行 B 转账 $100, 两个银行的数据库系统记录必须要同时完成或者同时失败.
用户在某银行中要求从 账户 A 向 账户 B 转账 $100, 两条记录保存在同一个数据库的同一个表中.