基于ZooKeeper实现简单的配置中心
程序员文章站
2022-05-19 08:06:32
配置中心使用ZooKeeper的持久节点的特性,将配置信息写入到持久节点。客户端启动时,从ZooKeeper读取配置信息,进而初始化内部资源,达到配置统一管理的目的。再结合ZooKeeper的Watch特性,配置信息变化实时推送到客户端,即时生效,无需重启客户端,达到配置热更新的效果。 ......
zookeeper节点的类型分为以下几类:
1. 持久节点:节点创建后就一直存在,直到有删除操作来主动删除该节点
2. 临时节点:临时节点的生命周期和创建该节点的客户端会话绑定,即如果客户端会话失效(客户端宕机或下线),这个节点自动删除
3. 时序节点:创建节点是可以设置这个属性,zookeeper会自动为给定的节点加上一个数字后缀,作为新的节点名。数字后缀的范围是整型的最大值
4. 临时性时序节点:同时具备临时节点与时序节点的特性,主要用于分布式锁的实现
配置中心使用zookeeper的持久节点的特性,将配置信息写入到持久节点。客户端启动时,从zookeeper读取配置信息,进而初始化内部资源,达到配置统一管理的目的。再结合zookeeper的watch特性,配置信息变化实时推送到客户端,即时生效,无需重启客户端,达到配置热更新的效果。
基于zookeeper实现简易配置中心的实例代码如下:
往服务端写入配置,代码如下:
客户端从zookeeper查询配置,代码如下:
以上就是简单的配置中心实现样例。但是还存在以下改进空间:
1.没有对数据变化进行监听,需要在数据变化时实时获取新的配置。(注:zookeeper的api中的watch只能消费一次,需循环设置监听)
2.可以使用zkclient或者curator等zookeeper客户端工具,解决了非常底层的细节开发工作,包括连接重连、反复注册watcher和nodeexistsexception异常等
欢迎关注我的微信公众号(sunnick,请扫码关注),随时留言交流~
上一篇: 自己的六年程序生涯小结