假设有一个分布式系统,为了实现它的可用性,要对数据进行冗余存储
- N 表示数据冗余的份数
- W 表示更新数据时需要保证写完成的节点数
- R 表示读取数据的时候需要读取的节点数
1、W+R > N 强一致性
- 如对于典型的主从数据库,一主一从 N=2,同步复制 W=2,读取其中一个就马上返回 R=1 读的都是最新数据
- N=W R=1 任何一个节点写失败,则写失败,因此可用性会降低
- HBase 借助底层的 HDFS 来实现数据冗余备份,使用的是 N=W R=1,牺牲可用性来保证强一致性
2、W+R <= N 弱一致性
- N=2,只往主服务器写一份 W=1,R=1,如果读的是备库,就不一致