ZooKeeper 学习笔记之扫盲
题外话:从字面上来看,ZooKeeper表示动物园管理员,而Hadoop生态系统中,许多项目的Logo都采用了动物,比如Hadoop采用了大象的形象,所以可以ZooKeeper就是对这些动物进行一些管理工作的。 对于单机环境进程内的协调方法,我们一般通过线程锁来协调对共享数据的访问以保证状态的一致性。 但是分布式环境如何进行协调呢?于是,Google创造了Chubby,而ZooKeeper则是对于Chubby的一个开源实现。 ZooKeeper是一种为分布式应用所设计的高可用、高性能且一致的开源 协调服务 ,它提供了一项基本服务: 分布式锁服务 。由于ZooKeeper的开源特性,后来我们的开发者在分布式锁的基础上,摸索了出了其他的使用方法: 配置维护、组服务、分布式消息队列、分布式通知/协调 等。它被设计为易于编程,使用文件系统目录树作为数据模型。 ZooKeeper集群模式典型架构 Zookeeper服务自身组成一个集群(2n+1个服务允许n个失效)。Zookeeper服务有两个角色,一个是leader,负责写服务和数据同步,剩下的是follower,提供读服务,leader失效后会在follower中重新选举新的leader。 保证 顺序一致性:按照客户端发送请求的顺序更新数据。 原子性:更新要么成功,要么失败,不会出现部分更新。 单一性 :无论客户端连接哪个server