Zookeeper架构
zookeeper采用典型的分布式主从架构,主节点称为leader,从节点称为follower/observer,Leader负责处理事务性请求,follower/observer从leader同步数据,follower/observer负责非事务性请求。
Zookeeper节点类型及职责
- leader:更新系统状态,处理事务请求,负责发起投票和决议
- follower:处理客户端非事务请求,将事务转发给leader,同步leader状态,选主过程中参与投票
- observer:处理非事务请求,同步leader数据(observer的主要作用是增加集群对非事务性请求对处理能力)
- client:请求发起方
Zookeeper写入流程
zookeeper采用zab原子广播协议算法来处理事务类请求,leader负责处理事务请求,follower会将事务请求转发到leader。
- 客户端向服务器发起事务请求,如果请求被发到follower,follower会把请求转发到leader
- leader生成一个全局唯一到事务id,将事务id(zxid)和事务请求组合起来加入到事务请求队列
- leader从队列中获取请求后扩散到follower
- 仲裁