1. 数据发布/订阅
数据 发布 / 订阅(Publish / Subscribe)系统,即所谓的配置中心,顾名思义就是发布者将数据发布到 ZooKeeper 的一个或一系列节点上,供订阅者进行数据订阅,进而达到动态获取数据的目的,实现配置信息的集中式管理和数据的动态更新。
发布/订阅系统一般有两种设计模式,分别是推(Push)模式和拉(Pull)模式。在推模式中,服务端主动将数据更新发送给所有订阅的客户端;而拉模式则是由客户端主动发起请求来获取最新数据,通常客户端都采用定时进行轮询拉取的方式。
ZooKeeper 采用的是推拉相结合的方式∶客户端向服务端注册自己需要关注的节点,一旦该节点的数据发生变更,那么服务端就会向相应的客户端发送Watcher事件通知,客户端接收到这个消息通知之后,需要主动到服务端获取最新的数据。
如果将配置信息存放到Zookeeper上进行集中管理,那么通常情况下,应用在启动的时候都会主动到Zookeeper服务端上进行一次配置信息的获取,同时,在指定节点上注册一个Watcher监听,这样一来,但凡配置信息发生变更,服务端都会实时通知到所有订阅的客户端,从而达到实时获取最新配置信息的目的。
2. 案例
在平常的应用系统开发中,经常会碰到这样的需求∶系统中需要使用一些通用的配置信息,例如机器列表信息、运行时的开关配置、数据库配置信息等。这些全局配置信息通常具备以下3个特性。
数据量通常比较小。数据内容在运行时会发生动态变化。集群中各机器共享,配置一致。
对于这类配置信息,一般的做法通常可以选择将其存储在本地配置文件或是内存变量中。无论采用哪种方式,其实都可以简单地实现配置管理,在集群机器规模不大、配置变更不是特别频繁的情况下,无论刚刚提到的哪种方式,都能够非常方便地解决配置管理的问题。但

本文介绍了Zookeeper如何作为配置中心实现数据发布/订阅功能。客户端通过订阅Zookeeper上的节点,实现配置信息的动态更新。在推送模式下,服务端主动推送更新,而在拉取模式下,客户端定时轮询获取。通过在Zookeeper上注册Watcher监听,当配置变更时,客户端能实时获取最新信息。案例展示了如何存储和管理应用的数据库配置信息,使得在集群规模扩大和配置变更频繁时,仍能高效地进行配置管理。
最低0.47元/天 解锁文章
1515

被折叠的 条评论
为什么被折叠?



