前言
分布式常见的一个问题就是发布及订阅,比如一个配置中心的功能,集群中的没个服务器需要去配置中心拉取配置,同时,当配置更新时也能感知到。
订阅模式
常见的订阅模式有两种
- 推:需要由配置中心将变更后的结果推送到各个服务器节点。需要配置中心存储节点信息,在更新操作是能够调用服务器并进行处理。
- 拉:定时轮训,服务器定时像配置中心进行拉取,缺点是对于变化的响应不够及时。
zk的订阅模式实现
zk的实现的模式是推拉相结合。
具体来说,是服务器在zk上注册自己要监听的节点,节点存放配置信息,然后注册一个watch监听器,当这个节点信息发生变化,zk不是直接将变更内容下发至服务器,而是告诉服务器这个节点内容有变化,由服务器感应到通知后重新拉取节点信息。
这种推拉相结合的方式是,减缓了配置中心的压力,zk不需要保证配置一定下发到每台机器才算成功,而是通知到就算成功,此外,由服务器自己拉取配置,服务器可以自己决策适合的时机来执行。