redis集群是符合cap中的ap还是cp

近期忽然间考虑到了这个问题。

redis集群是符合cap中的ap还是cp_第1张图片

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 的主从复制逻辑,从节点复制主节点的数据是异步,不是实时,能保证最终一致性。

你可能感兴趣的:(redis,redis,数据库,缓存,分布式)