Closed shihuili1218 closed 1 year ago
N:成员总数 W:写入数据的Quorum数 R:读取数据的Quorum数
满足W+R>N的情况下,读和写一定存在交集,系统一定是满足强一致性的。
基于这个条件,用户可以根据业务场景动态调节读和写Quorum的大小,甚至让其达到一个极端情况,例如W=1,R=N,此时写效率最高,当然这需要付出的代价是不允许有成员宕机。
Raft中Leader选举存在两个功能:
在原生的Raft协议中,读写场景都使用多数派作为Quorum数量,两个多数派正好满足W+R>N的场景。如果NWR适用于Raft,用户则可动态调节Quorum数量,例如在一个五成员的集群中,R可以设置为4,W设置为2,那么写性能将会有大幅度的提升。
在这里讨论过 https://github.com/sofastack/sofa-jraft/issues/265
在这里讨论过 #265
我说怎么隐约有印象,就没想起来
NWR介绍
N:成员总数 W:写入数据的Quorum数 R:读取数据的Quorum数
满足W+R>N的情况下,读和写一定存在交集,系统一定是满足强一致性的。
基于这个条件,用户可以根据业务场景动态调节读和写Quorum的大小,甚至让其达到一个极端情况,例如W=1,R=N,此时写效率最高,当然这需要付出的代价是不允许有成员宕机。
基于NWR的描述,该设计是否可以用于Raft?
Raft中Leader选举存在两个功能:
在原生的Raft协议中,读写场景都使用多数派作为Quorum数量,两个多数派正好满足W+R>N的场景。如果NWR适用于Raft,用户则可动态调节Quorum数量,例如在一个五成员的集群中,R可以设置为4,W设置为2,那么写性能将会有大幅度的提升。