一.Zookeeper是一个分布式协调服务,Zookeeper本身就是分布式程序,他同时为别的分布式程序服务的。
二.zk集群机制:半数机制:集群中半数以上的机器存活,集群可用。Zookeeper适合装在奇数台机器上。
三.zk特性:
1.zk是一个leader,多个follower组成集群。
2.全局数据一致,每个server保存一份相同的数据副本,clent无论连接到哪个server,数据都是一致的。
3.分布式读写,更新请求转发,由leader实施。
4.更新请求顺序进行,来自同一个client的更新请求按其发送顺序依次执行。
5.数据更新原子性,一次数据更新要么成功,要么失败。
6.实时性,在一定时间范围内,client能读到最新的数据。
四.zk数据机构
1.层次化的目录结构。
2.每个节点在Zookeeper中叫做znode,并且有唯一的路径标识。
3.节点znode可以包含数据的子节点。
4.客户端应用可以在节点上设置监视器。
五.Znode有四种目录节点(默认是persistent)
1.PERSISTENT(持久化目录节点):这个目录节点存储的数据不会丢失。
2.PERSISTENT_SEQUENTIAL(顺序自动编号的目录节点):这种目录节点会根据当前已经存在的节点数自动加1,然后返回给客户端已经成功创建的节点名。
3.EPHEMERAL(临时目录节点):一旦创建这个节点的客户端与服务器端口也就是session超时,这种节点会被自动删除。
4.EPHEMERAL_SEQUENTIAL(临时自动编号节点)
5.znode的类型在创建时确定,并且之后不能在修改。
6.短暂znode的客户端会话结束时,zk会将短暂znode删除,短暂znode不可以有子节点。
7.持久znode不依赖于客户端会话,只有当客户端明确要删除该持久znode时才会被删除。
六.zk支持以下功能
1.当提供者出现断电等异常停机时,注册中心能自动删除提供者信息。
2.当注册中心重启时,能自动恢复注册的数据,以及订阅的请求。
3.当会话过期时,能自动恢复注册数据,以及订阅请求。
七.zk典型应用场景
1.命名服务:znode都可以由其路径唯一标识。
2.配置管理:分布式系统中,要修改某个配置,一个个实例去改,比较低效,也容易出错,将公共配置内容放到zk某个znode上,所有实例在启动时都watch这个znode的配置
3.组员管理和master选举机制:master在zk上创建server、slaves节点,并设置对该节点的watcher
4.简单互斥锁(分布式锁):分布式系统中多个进程之间的同步,由zk协调服务来协助完成同步(类比多线程抢锁)。
5.负载均衡:同一个应用或同一个服务提供方都会部署多份,达到对等服务,消费端需要在这些对等的服务器中选择一个来执行相关业务。
6.分布式通知/协调:zk中持有watcher注册与异步通知机制,不同系统对zk上同一个znode进行注册,监听znode变化,其中一个系统update了znode,那么另一个系统能够收到通知,并做出相应的处理。