Zookeeper是一个分布式协调服务的开源框架,为分布式程序提供协调服务,同时用来解决分布式集群中应用系统的数据一致性问题。
zookeeper在本质上是一个分布式的小文件存储系统,以目录树方式存储数据,对树中的节点进行管理,从而维护和监控存储数据的节点状态变化,达到基于数据的集群管理目的。
1)Zookeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群
2)集群中只要有半数以上节点存储,Zookeeper集群就能正常服务
3)全局数据一致:每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的
4)可靠性:如果消息被其中一台服务器接收,那么将被所有服务器接收
5)顺序性:更新请求顺序进行,来自同一个Client的更新请求按其发送顺序依次执行
6)数据更新原子性:一次数据更新要么成功(半数以上节点成功),要么失败,不存在中间状态
7)实时性:Zookeeper保证客户端在一定事件间隔范围内获取服务器的更新信息,或则服务器失效的信息
总体上分为2类,细分为4类
持久节点:客户端和服务器端断开连接后,创建的节点不删除
临时节点:客户端和服务器端断开连接后,创建的节点自己删除
1)持久化目录节点
2)持久化顺序编号目录节点
3)临时目录节点
4)临时顺序编号目录节点
1)Client向ZooKeeper的Server1 写数据,发送一个写请求
2)如果Server1不是Leader,那么Server1会把接受到的这个事务请求进一步转发给Leader。
Leader会将写请求广播给各个Server,各个Server写成功后,会向Leader发送成功信息
3)当Leader收到半数以上(大多数) Server数据写成功的信息,说明该数据写成功了。Leader会告诉server1数据写成功了.
4)Server1会进一步通知 Client 数据写成功了,就认为整个写操作成功



