近期忽然间考虑到了这个问题。
cap 理论
cap是实现分布式系统的思想。
由3个元素组成。
Consistency(一致性)
在任何对等 server 上读取的数据都是最新版,不会读取出旧数据。比如 zookeeper 集群,从任何一台节点读取出来的数据是一致的。
Availability(可用性)
虽然系统内部会出现一些故障,但整体一直会对外提供服务,不至于崩溃。比如有10台 server,其中4台 server 出现了故障,经过特殊处理,把请求交给剩余的6台运行正常的 server,整体还在运行中,没有因为4台出现故障的 server 造成整体失效,实现高可用。
Partition Tolerance(分区容忍性)
有 C 和 D 两台 server,C 在中国,D 在美国,如果发生网络异常,则 C 和 D 在不同网络分区中可以正常运行。
从主从复制逻辑来考虑这个问题
按照 cap 理论来讲的话,无论如何要保证分区容忍性(Partition Tolerance),因为网络是不可靠的。
如果按照单台机器来讲的话,严格意义上来讲的话不符合 cap 理论,因为这个理论是针对多台机器的,如果硬要往上靠的话,属于 cp,因为能保证一致性
考虑到 redis 的主从复制逻辑,从节点复制主节点的数据是异步,不是实时,能保证最终一致性。