前言
学习ZooKeeper之前,我们应该考虑一个问题,什么是Zookeeper?
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现(Chubby是不开源的),它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户 。
Zookeeper一个最常用的使用场景就是用于担任服务生产者和服务消费者的注册中心,服务生产者将自己提供的服务注册到Zookeeper中心,服务的消费者在进行服务调用的时候先到Zookeeper中查找服务,获取到服务生产者的详细信息之后,再去调用服务生产者的内容与数据。
一、ZooKeeper简介
1.分布式系统定义及遇到的问题
分布式系统定义为:分布式系统是同时跨越多个物理主机,独立运⾏的多个软件所组成系统。类⽐⼀下,分布式系统就是⼀群⼈⼀起⼲活。⼈多⼒量⼤,每个服务器的算⼒是有限的,但是通过分布式 系统,由n
个服务器组成起来的集群,算⼒是可以⽆限扩张的。
优点:干活快,相互备份(容灾)
缺点:分布式系统如何管理,保证系统有序高效地进行?
a) 系统中谁是leader
b) 任务如何分配
c) leader如何了解进度
d) 组员离职如何交接
e) leader离职,谁成为leader
f)人手不够,如何招聘?新成员如何快速融入?
Zookeeper解决分布式系统的问题
Zookeeper解决分布式系统面临的问题的原理,存储任务的分配、完成情况等共享信息,分布式系统的节点订阅这些共享信息。当主节点(组leader),对某个从节点的分⼯信息作出改变时,相关订阅的从节点得到zookeeper