在CAP定理中,Redis被指定为一个缺乏可用性(具有分区容限和一致性)的数据库。
但在许多地方,Redis被认为是一个高可用性的键值商店。
晓以大义?如果你能给我一个深入的答复,我将不胜感激。
发布于 2019-12-29 06:35:24
我首先要说的是,没有'CA‘类别。在没有网络分区的情况下,大多数系统都是CA。
帽定理适用于分布式数据存储,并在发生网络划分(P)时生效。它说,当(P)发生时,分布式数据存储必须在一致性(C)和可用性(A)之间进行选择。
也就是说,当P发生时,要么是PA,要么是PC。
RDBMS过去是PC的,但随着时间的推移,它们也开始支持PA。
具体来说,高可用性不仅仅是对分区的容忍。Redis有主从体系结构,如果主从失败,那么Redis哨兵将奴隶提升为新主人,从而使整个解决方案变得非常可用。由于许多原因(例如内存不足),主机可能会失败(或变得不可用),这并不一定是由于网络分区造成的。
然后是网络分区(P),如果(P)发生,那么Redis就无法在少数分区中生效。这就是为什么从CAP的角度来看,Redis是CP,因为它在少数分区中变得不可用。请注意,它仍将在大多数分区可用。
您可以阅读更多关于Redis高可用性的内容。有关分区的详细信息,请参阅标题为“分区下的一致性”的段落。
Redis也被称为“最终一致”,因为当(P)发生时,少数人的感觉仍然可用几秒钟,而在这段时间内对少数人的感知所做的任何写都最终会被丢弃。
发布于 2021-03-11 08:26:30
根据第170页中的"Redis要点“一书:
由于Redis Sentinel和Redis集群是分布式系统,利用CAP定理对它们进行分析是公平的。网络分区在分布式系统中是不可避免的,因此它应该确保一致性或可用性;也就是说,它应该是CP或AP。理论上,Redis Sentinel和Redis群集在网络分区下既不一致也不可用。但是,有些配置可以最大限度地减少一致性和可用性问题。它们无法提供可用性,因为有法定人数需要就主选举达成一致,并且取决于法定人数的决定,系统的一部分可能变得不可用。它们不能在网络分区下提供一致性,例如,当两个或多个分区同时接受写操作时。当网络恢复和分区连接时,其中一些写操作将丢失(冲突不会自动解决,客户端也不会公开)。
希望这将有助于you.The在线图书:(intelligence/9781784392451/9/ch09lvl1sec52/the-cap-theorem))
https://stackoverflow.com/questions/59511275
复制相似问题