定义
一个分布式的,开放源码的分布式应用程序协
调服务。为分布式应用提供一致性服务
发布订阅(配置中心)
负载均衡
命名服务
分布式协调/通知
集群管理
Master选举
分布式锁
分布式队列
崩溃恢复过程
1. 各个节点向其他节点发起投票,投票当中包含自己的服务器ID及最新事务ID(ZXID),此时处于Looking状态
2. 节点会用自身的ZXID 与其他节点的ZXID做比较,如果发现其他节点的ZXID比较大,则重新发起投票(ZXID相同则取ID最大的),投票给目前已知最大的ZXID所属节点
3. 每次投票后,服务器都会统计投票数量,判断是否有某个节点得到半数以上的投票,该节点将会成为准leader, 状态变为 Leading, 其他节点为 Following
4. 发现阶段,检查是否有多个leading状态的节点,即leading接收Followler发来的各自的最新的epoch值,leading从中选出最大的epoch值,基于此值加一,生成新的epoch分发给各个Follower,各个Follower 收到最新epoch后返回ACK给leading 节点,带上各自最大的ZXID和历史事务日志
5. 同步阶段,把leader 刚才收集到的最新历史事务日志,同步给集群中所有的Follower, 只有当过半数的Follower同步成功,这个leading状态的节点才会成为正式的Leader