美文网首页
zk命名服务

zk命名服务

作者: 丹之 | 来源:发表于2018-12-02 11:21 被阅读23次

Zookeeper可以实现命名服务有两个重要的前提

一、节点类似于文件系统中的目录结构

二、可以创建顺序节点

上面说过,我们想在分布式环境生成一组自增的、唯一的ID,那么看看zookeeper如何保证这两点。

  • 唯一性
    由于zookeeper中的节点的结构和文件系统中的目录结构是类似的,想想我们自己的电脑,我们使用一个全路径是不是可以唯一定位到某个目录中的某个文件。如 /home/admin/hollis.txt是可以唯一定位到一个文件的。

  • 自增性
    在zookeeper中可以创建顺序节点,在ZooKeeper中,每个父节点会为他的第一级子节点维护一份时序,会记录每个子节点创建的先后顺序。基于这个特性,在创建子节点的时候,可以设置这个属性,那么在创建节点过程中,ZooKeeper会自动为给定节点名加上一个数字后缀,作为新的节点名。如 /home/admin/hollis1 /home/admin/hollis2 /home/admin/hollis3
    下面是一个用开源客户端ZKClient实现的命名服务的例子:

ZkClient client = new ZkClient(server, 5000, 5000, new BytesPushThroughSerializer());
final String fullNodePath = root.concat("/home/admin").concat("hollis");
final String ourPath = client.createPersistentSequential(fullNodePath, null);
client.delete(ourPath);
sout(ourPath);

以上代码就可以在/home/admin节点下创建出顺序的hollis节点,节点名称hollis-0000000001 hollis-0000000002 hollis-0000000003那么,我们就可以通过/home/admin/hollis-0000000001来唯一定位到一个节点了,那么我们直接用这个名称给其他的资源命名了。

https://www.hollischuang.com/archives/1595

相关文章

网友评论

      本文标题:zk命名服务

      本文链接:https://www.haomeiwen.com/subject/tphjcqtx.html