欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

基于ZooKeeper实现简单的配置中心

程序员文章站 2022-05-19 08:06:32
配置中心使用ZooKeeper的持久节点的特性,将配置信息写入到持久节点。客户端启动时,从ZooKeeper读取配置信息,进而初始化内部资源,达到配置统一管理的目的。再结合ZooKeeper的Watch特性,配置信息变化实时推送到客户端,即时生效,无需重启客户端,达到配置热更新的效果。 ......

zookeeper节点的类型分为以下几类:

    1. 持久节点:节点创建后就一直存在,直到有删除操作来主动删除该节点

    2. 临时节点:临时节点的生命周期和创建该节点的客户端会话绑定,即如果客户端会话失效(客户端宕机或下线),这个节点自动删除 

    3. 时序节点:创建节点是可以设置这个属性,zookeeper会自动为给定的节点加上一个数字后缀,作为新的节点名。数字后缀的范围是整型的最大值

     4. 临时性时序节点:同时具备临时节点与时序节点的特性,主要用于分布式锁的实现

 

    配置中心使用zookeeper的持久节点的特性,将配置信息写入到持久节点。客户端启动时,从zookeeper读取配置信息,进而初始化内部资源,达到配置统一管理的目的。再结合zookeeper的watch特性,配置信息变化实时推送到客户端,即时生效,无需重启客户端,达到配置热更新的效果。

 

    基于zookeeper实现简易配置中心的实例代码如下:

 

往服务端写入配置,代码如下:

基于ZooKeeper实现简单的配置中心

 

客户端从zookeeper查询配置,代码如下:

基于ZooKeeper实现简单的配置中心

 

以上就是简单的配置中心实现样例。但是还存在以下改进空间:

1.没有对数据变化进行监听,需要在数据变化时实时获取新的配置。(注:zookeeper的api中的watch只能消费一次,需循环设置监听)

2.可以使用zkclient或者curator等zookeeper客户端工具,解决了非常底层的细节开发工作,包括连接重连、反复注册watcher和nodeexistsexception异常等

 

 

欢迎关注我的微信公众号(sunnick,请扫码关注),随时留言交流~

基于ZooKeeper实现简单的配置中心