Zookeeper
1、Zookeeper是什么?
Zookeeper是一个大型分布式系统的可靠地协调系统,提供的功能包括配置维护,名字服务,分布式同步,组服务等。Zeepkeeper是可以通过集群复制的,集群间通过自动广播协议来保持数据的一致性。该协议包括leader election和atomic broadcas阶段。集群中将选出一个leader,其他的机器则称为follower,所有的写操作都被传送给leader,并通过broadcas将所有的更新告诉follower。当leader崩溃或者失去大量follower时,需要重新选举出一个leader,让所有的服务器都恢复正常的状态。当leader被选举出来,且大多数服务器完成了和leader的状态同步后,leader election的过程就完成了。接下来atomic broadcas同步leader和follower之间的信息,保证leader和follower具有相同的系统状态。
2、使用Zookeeper的好处?
Zookeeper的核心类似于一个文件系统,提供一些简单的操作和一些附加的抽象,如znode的排序于watch机制,并且集群的部署方式使其具有较高的可靠性。Zookeeper的协作过程简化了松散耦合系统之间的交互,即使参与者彼此不知道对方的存在,也能够互相发现并且完成交互。
3、zookeeper简单使用。
Zookeeper包含
创建一个node节,
删除一个node节点,
设置和获取节点内容,
添加子节点,
判断节点是否存在,
以及当节点的状态发生变化时,可以通过watcher机制实现,让客户端得到相应的通知(类似于观察者模式)。
4、路由和负载均衡的实现。
在zookeeper中,一但服务器与zookeeper集群断开连接,znode节点已经不存在,此时通过注册相应的watcher机制,服务消费者能够第一时间获取服务提供者信息的变更。利用znode的特点和watcher机制将其作为动态注册和获取服务信息的配置中心,统一管理服务名称和其对应的服务器列表,能够实时的感知到后端服务器的状态,从而保持服务配置信息能够一致以及进行简单的扩容。
Zookeeper类似于一棵节点树,当服务提供者启动时,将服务器的名称、地址以节点的信息添加到配置中心,而服务消费中通过服务器名称以及配置中心来获得需要调用的服务节点下的服务地址,再利用负载均衡算法选取其中的某一台服务器进行调用。