一直以来只知道Zookeeper是一个分布式协调组件,但究竟其中的原理一直也没深究过,今天看了一点书籍及文章,在此总结一下自己的心得。

zookeeper如何解决高并发 zookeeper高可用原理_原语

Zookeeper的概念
Zookeeper是一个分布式的、开源的分布式应用程序协调服务,包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等,它是Google的 Chubby一个开源实现。

Zookeeper的特点
1 简单: Zookeeper的核心是一个精简的文件系统,提供一此简单的操作和额外的抽象操作,如排序和通知。
2 富有表现力: Zookeeper的原语操作是一组丰富的“构件”,可用于实现很多协调数据结构和协议,如分布式队列、分布式锁和“领导者选举”等。
3 高可用: Zookeeper运行于一组机器这上,通过是奇数个节点,如3、5节点,本身具有高可用性。它可以帮助系统避免出现单点故障。
4 松耦合: Zookeeper支持的交互过程中,参与者不需要彼此了解。
5 资源库: Zookeeper提供一个关于通用协调模式实现和方法的开源共享存储库。

Zookeeper的实现
Zookeeper有两种运行模式,一种是“独立模式”,即只有一个Zookeeper节点,这种模式不具有高可用性。另外一种是“复制模式”,即有一组Zookeeper服务运行于多个节点,组合一个“集合体”,Zookeeper通过复制来实现高可用性,只要集合体中半数以上的机器处于可用状态,它就能够提供服务。一个集合体中通常包含奇数个节点。
Zokeeper实现过程主要包括两个步骤,
1 领导者选举
Zookeeper集合体中所有机器通过一个选择过程选出一台机器作为“领导者”(leader),其余机器称为“跟随者”(follower)。一时半数以上的follower状态与leader同步,表明这个阶段已经完成。

2 原子广播
所有写请求都被转发给leader,leader再将更新广播给follower。当半数以上的follower将更新持久化后,leader才会提交更新响应给客户端。
如果leader故障,其余机器会再选出一个leader并提供服务。如果之前的leader恢复正常,就转换为follower。