前言:
这一章我们来阅读Zookeeper源码,对其执行原理进行大致的了解。
zookeeper源码解析


跟进到initializeAndRun()方法中,方法一共分为三模块
1)加载配置文件(zoo.cfg)

FastLeaderElection.lookForLeader()方法:开始新一轮领导人选举。每当QuorumPeer将其状态更改为LOOKING时,就会调用该方法,并向所有其他对等体发送通知。
Zookeeper应用场景
配置中心
在平常的业务开发过程中,我们通常需要将系统的一些通用的全局配置,例如机器列表配置,运行时开关配置,数据库配置信息等统一集中存储,
让集群所有机器共享配置信息,系统在启动会首先从配置中心读取配置信息,进行初始化。传统的实现方式将配置存储在本地文件和内存中,
一旦机器规模更大,配置变更频繁情况下,本地文件和内存方式的配置维护成本较高,使用zookeeper作为分布式的配置中心就可以解决这个问题。
我们将配置信息存在zk中的一个节点中,同时给该节点注册一个数据节点变更的watcher监听,一旦节点数据发生变更,所有的订阅该节点的客户端都可以获取数据变更通知。
负载均衡
建立server节点,并建立监听器监视servers子节点的状态(用于在服务器增添时及时同步当前集群中服务器列表)。在每个服务器启动时,
在servers节点下建立具体服务器地址的子节点,并在对应的字节点下存入服务器的相关信息。这样,我们在zookeeper服务器上可以获取
当前集群中的服务器列表及相关信息,可以自定义一个负载均衡算法,在每个请求过来时从zookeeper服务器中获取当前集群服务器列
表,根据算法选出其中一个服务器来处理请求。
