阿里技术大讲堂OceanBase专场中曾有专门一场讲座介绍OB本身实现的分布式选举算法:《分布式选举-破解数据库高可用性难题》算法
这里简单列一下这个选举算法和raft论文中提到的选举算法的区别。数据库
以下都是以OB的立场说的:网络
1)OB使用的选举算法,选举开始点靠timer对齐,保证网络中的参与者都是“同时”发起选举的;而Raft是一个非同步发起的选举,每每是先开始选举的candidate赢得选举;运维
2)OB选举算法有一个预投票阶段,能够保证根据特定业务逻辑选主;Raft没法实现特定选主;分布式
3)OB每一个选举周期内的投票不持久化,经过实例启动后第一个lease周期内不投票的方式,保证任何一个实例在一个lease周期内都不会重复投票;而Raft每轮的投票是持久化的;htm
4)OB因为选举起始点须要靠timer对齐,所以对机房的时钟偏差有要求;基本假设是最大误差不超过100ms;Raft论文中明确提出其对timing无依赖;get
5)OB容许有主状态下根据指令进行改选,便于运维;同步
感受最主要的区别就是如上几点。it