通过OB的文档描述,在进行paxos多副本管理时是通过选举、日志复制,以及安全功能实现的。选举,即多个副本,只有一个为leader,其他都是follower,leader通过lease租约进行维护,优先选择用户指定的副本和primary zone副本,只有leader副本能够进行读写服务。leader通过paxos对其他follower进行日志复制。
这样的描述其实已经和原生的paxos协议相差较大了,感觉和tidb的raft协议基本结构是一样的了,所以这两个分布式数据库中分布式一致性协议虽然名字依然保留的paxos和raft命名,但结构、流程和功能感觉都极其相近。
现在正在学习这些新技术,就有些疑惑,这两个产品之间的一致性协议除了名称不同以外,到底有什么实质性区别?
从这个内容看,paxos最重要的优势是可以乱序同步日志,所以可以支持更好的并发性能。所以ob即便按照partition切割打散数据,一个partition可能有很大的数据量,但这个partition内的不同行数据被多个事务同时修改时,也能进行并行的副本同步,降低存储层副本一致性对性能影响。
raft协议在同一个raft-group中,即便多个事务修改不同行的数据时,底层副本同步也是串行进行同步的,所以会导致事务之间争抢、等待“同步通道”,影响性能。所以raft协议就不能像OB这样用partition进行数据切割,最终都是以更细粒度的range范围切割,range切割粒度越细,并发度就能支持的越高,但也仅仅是一种解决并发问题的折中办法。
我这样理解对不对呢?