zookeeper对比etcd之状态机转换

一、Zookeeper&Zab协议

zookeeper中主要有leader、follower和observer这3种角色, 各角色的主要作用如下:

1.Leader

a.事务请求的唯一调度和处理者,保证集群事务处理的顺序序性

b.集群内部各服务器的调度者

2.Follower

a.处理客户端非事务请求,转发事务请求给Leader服务器

b.参与事务请求Proposal的投票

c.参与Leader的选举投票

3.Observer

a.处理客户端非事务请求,转发事务请求给Leader服务器

b.不参加任何形式的投票,包括选举和事务投票(超过半数确认)

c.Observer的存在是为了提高zk集群对外提供读性能的能力

Zookeeper服务器中有Looking、Following、Leading这3种状态,各状态的含义如下:

1.LOOKING

a.寻找Leader状态

b.当服务器处于这种状态时,表示当前没有Leader,需要进入选举流程

2.FOLLOWING:从机状态,表明当前服务器角色是Follower

3.OBSERVING:观察者状态,表明当前服务器角色是Observer

4.LEADING:领导者状态,表明当前服务器角色是Leader

状态之间的状态如下图所示:

二、ETCD&Raft协议

在etcd服务器中,节点有三种角色:

1.Leader:负责接收客户端的请求,将日志复制到其他节点并告知其他节点何时应用这些日志是安全的

2.Candidate:用于选举Leader的一种角色

3.Follower:负责响应来自Leader或者Candidate的请求

角色转换如下图所示:

raft协议状态转换

1.所有节点初始状态都是Follower角色

2.超时时间内没有收到Leader的请求则转换为Candidate进行选举

3.Candidate收到大多数节点的选票则转换为Leader;发现Leader或者收到更高任期的请求则转换为Follower

4.Leader在收到更高任期的请求后转换为Follower

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.55vista.com