zookeeper-zookeeper 的应用场景
配置中心
前面有提到过,zookeeper 可以作为分布式应用配置中心,其主要思想为:
应用连接 zookeeper 服务器
读取 zookeeper 中的配置信息,并且注册 watcher 监听器,将读取到的配置信息存入本地变量中
当 zookeeper 中的配置信息发生变化时,通过 watcher 的回调方法捕获数据变化事件,应用接收事件,做对应的响应处理
应用重新获取配置信息,更新应用
生成分布式唯一 id
不管是在传统的单体应用,或者是单实例 or 多实例的微服务应用中,单表的情况下,通常都是设置字段属性为自增主键,自动为每条记录生成一个唯一的 ID。但是如果进行了分库分表,就无法在依靠数据库的 auto_increment 属性来唯一标识一条记录了。因为在不同表中,主键 id 是有可能会重复的。要应对这种情况,对业务来说,可以对表进行设置业务主键,不利用 id 来进行业务代码的唯一标识,但是也可以利用 zookeeper 来生成分布式唯一 id,其主要的设计思路:
应用连接 zookeeper 服务器
创建一个指定目录,用于生成临时有序节点作为子节点
每次生成 id 时,在指定路径下,生成临时有序的一个节点
取刚刚生成的有序节点路径,截取序列号作为分布式环境下的唯一 ID
实现分布式锁
zookeeper 实现分布式锁的思路很简答,因为 Zookeeper 本身由集群保证数据一致,并自带 Watch 机制、客户端过期失效检测等机制,所以也非常适合实现分布式锁。
Zookeeper 实现分布式锁的方式很简单,客户端通过创建临时节点来锁定分布式锁,如果创建成功,则加锁成功,否则,说明该锁已经被其他客户端锁定,这时当前客户端监听该临时节点变化,如果该临时节点被删除,则可以再次尝试锁定该分布式锁。
版权声明: 本文为 InfoQ 作者【zarmnosaj】的原创文章。
原文链接:【http://xie.infoq.cn/article/ed651b7d05486bd5684747b3e】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论