Zookeeper是⼀种为分布式应⽤所设计的⾼可⽤、⾼性能且⼀致的开源协调服务。
ZooKeeper 是一个开源的分布式协调服务。它是一个为分布式应用提供一致性服务的软件,分布式应用程序可以基于 Zookeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。
它提供了⼀项基本服务:分布式锁服务。后来摸索出了其他使⽤⽅法:配置维护、组服务、分布式消息队列、分布式通知/协调等。
特点
1、能够⽤在⼤型分布式系统中;
2、具有⼀致性、可⽤性、容错性,不会因为⼀个节点的错误⽽崩溃;
⽤途:⽤户⼤型分布式系统作协调服务⻆⾊
1、分布式锁应⽤:通过对集群进⾏master选举,来解决分布式系统中的单点故障(⼀主n从,主挂全挂)。
2、协调服务;
3、注册中⼼;
4、原理:
术语:
数据结构Znode:zookeeper数据采⽤树形层次结构,和标准⽂件系统⾮常相似,树中每个节点被称为Znode;
通知机制Watcher:zookeeper可以为所有的读操作(exists()、getChilden()及getData())设置watch,
watch事件是⼀次性出发器,当watch的对象状态发⽣改变时,将会触发次对象上watch所对应的事件。watch事件将被异步的发送
给客户端,并且zookeeper为watch机制提供了有序的⼀致性保证。
基本流程:分布式锁应⽤场景
1、传统的⼀主n从分布式系统,容易发⽣单点故障,传统解决⽅式是增加⼀个备⽤节点,定期给主节点发送Ping包,主节点回复ack,但是如果⽹络原因ack丢失,那么会出现两个主节点,造成数据混乱。
2、zookeeper的引⼊可以管理两个主节点,其中挂了⼀个,会将另外⼀个作为新的主节点,挂的节点回来时担任备⽤节点