zoukankan      html  css  js  c++  java
  • zookeeper的通知机制

    一、znode

    Zookeeper维护一个类似文件系统的数据结构。简单来说,有点类似windows中注册表的结构,有名称,有树节点,有Key(键)/Value(值)对的关系,可以看做一个树形结构的数据库,分布在不同的机器上做名称管理。

    Znode维护了一个stat结构,这个stat包含数据变化的版本号、访问控制列表变化、还有时间戳。版本号和时间戳一起,可让Zookeeper验证缓存和协调更新。每次znode的数据发生了变化,版本号就增加。

    例如,无论何时客户端检索数据,它也一起检索数据的版本号。并且当客户端执行更新或删除时,客户端必须提供他正在改变的znode的版本号。如果它提供的版本号和真实的数据版本号不一致,更新将会失败。

     二、通知机制

    客户端注册监听他关心的目录节点,当目录节点发生变化(数据改变、被删除、子目录节点增加删除)时,zookeeper会通知客户端。

    client端会对某个znode建立一个watcher事件,当该znode发生变化时,zk会主动通知watch这个znode的client,然后client根据znode的变化来做出业务上的改变等。

    watcher的特点:

    • 轻量级:一个callback函数。

    • 异步性:不会block正常的读写请求。

    • 主动推送:Watch被触发时,由Zookeeper服务端主动将更新推送给客户端。

    • 一次性:数据变化时,Watch只会被触发一次。如果客户端想得到后续更新的通知,必须要在 Watch 被触发后重新注册一个 Watch。

    • 仅通知:仅通知变更类型,不附带变更后的结果。

    • 顺序性:如果多个更新触发了多个Watch,那 Watch 被触发的顺序与更新顺序一致。

    使用watch的注意事项:

    • 由于watcher是一次性的,所以需要自己去实现永久watch

    • 如果被watch的节点频繁更新,会出现“丢数据”的情况

    • watcher数量过多会导致性能下降

  • 相关阅读:
    在浏览器上实时显示机械臂运动,treeJS机械臂运动
    Centrifuge在vue中基础使用,soket通讯
    Mxgrapheditor编辑器汉化
    ADrive在线网络存储(50G超大免费空间)
    Gmail邮箱为电脑减负,GMailStore网络硬盘开始亮剑
    全球最受欢迎的100个网站 [转载]
    第一次亲密接触读后感(转)
    Weaver博客地址更改通知 (http://blog.sina.com.cn/weaver)
    Javascript技巧(230个)[转载]
    教师精彩课堂用语50句
  • 原文地址:https://www.cnblogs.com/jxxblogs/p/14906213.html
Copyright © 2011-2022 走看看