zookeeper的工作机制

Zookeeper是分布式服务架构,是apache hadoop的一个子项目,主要是用来解决分布式应用中遇到的一下数据管理问题,如 集群管理,统一命名服务,分布式配置管理,分布式消息队列,分布式锁,分布式通知协调等

Zookeeper 没有具体的功能,他在大数据中的作用是协调大数据框架的,提供的是协调服务

Zookeeper的工作机制:
Zookeeper从设计角度来看,是一个基于观察者模式设计的分布式服务器管理框架,他负责存储和管理数据,然后接受观察者的注册,一旦这些数据状态发生改变,zookeeper就将负责通知已经在zookeeper上注册的那些观察者,做出相应的反应。
总而言之,zookeeper只需要做两件事。
第一件事:存数据
第二件事: 通知

理解: 就是在学生和讲师之间需要班主任沟通,约好的课程,但是因为讲师有事来不了,这时候需要班主任进行协调,并告知同学们,班主任的作用就是zookeeper的作用,

在实际中的应用:
  Server1    server2   server3

  Client1     client2    client3

三台server,是一个集群, 没有zookeeper的时候,三个client会直接连接三个server,中间没有任何东西,就是直连,但是当serverA 挂了之后,client1是不知道的,client1还是会连接serverA,但是serverA根本不会理client1,

如果我们加上zookeeper集群之后,结构如下:
  Server1    server2   server3
             | 1、(服务端在启动时去注册信息,将自己的信息保存到zookeeper里边)
        zookeeper集群(类似于中间件)
             | 2、(client从zookeeper获取当前在线服务器列表,并注册监听)
  Client1     client2    client3

我们上边说了,zookeeper干两件事,一件事是存数据,一件事是通知,三台server,会把自己提供的服务和端口的信息,保存到zookeeper里边 ,

Client就是从zookeeper里边读取数据,看哪台能够正常连接

**
1、服务端在启动时去注册信息,将自己的信息保存到zookeeper里边
2、client从zookeeper获取当前在线服务器列表,并注册监听
3、server2挂了,
4、zookeeper会主动通知在在zk上注册的主机,就是三台client,告诉他们server2 已经挂了,这就是zk完成的第二件事
5、zk进行通知了之后,三个client,会再次向zookeeper进行注册监听,这是zookeeper提供服务的一个过程
**

Zookeeper=文件系统+通知机制 zookeeper就是通过这两个来实现协调的功能,(文件系统就是存储数据的)