美文网首页
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