我们可以通过 ZooKeeper 自身的客户端和服务器运行模式,来实现一个分布式网络环境下的 ID 请求和分发过程。 ❝ 每个需要 ID 编码的业务服务器可以看作是 ZooKeeper 的客户端。ID 编码生成器可以作为 ZooKeeper 的服务端。 ❞ 客户端通过发送请求到 ZooKeeper 服务器,来获取编码信息,服务端接收到请求后,发送 ID 编码给客户端。 「实现原理:」 可以利用 ZooKeeper 数据模型中的顺序节点作为 ID 编码。 客户端通过调用 create 函数创建顺序节点。服务器成功创建节点后,会响应客户端请求,把创建好的节点信息发送给客户端。 客户端用数据节点名称作为 ID 编码,进行之后的本地业务操作。 利用 ZooKeeper 中的顺序节点特性,很容易使我们创建的 ID 编码具有有序的特性。并且我们也可以通过客户端传递节点的名称,根据不同的业务编码区分不同的业务系统,从而使编码的扩展能力更强。 ❝ 虽然使用 ZooKeeper 的实现方式有这么多优点,但也会有一些潜在的问题。 ❞ 其中最主要的是,在定义编码的规则上还是强烈依赖于程序员自身的能力和对业务的深入理解。 很容易出现因为考虑不周,造成设置的规则在运行一段时间后,无法满足业务要求或者安全性不够等问题。 整理:沉默王二,戳[转载链接](https://mp.weixin.qq.com/s/-evZg0epRrOr1IwQ3GJ2Zg),作者:月伴飞鱼,戳[原文链接](https://mp.weixin.qq.com/s/B2ngp0q5kdWsCNH8sw_5DA)。