zoukankan      html  css  js  c++  java
  • Zookeeper--Watcher 和 ACL

    Zookeeper--Watcher 和 ACL

    Watcher (观察)

    Zookeeper中的znode可以被监控,这是zk的核心特性。

    通过exists,getChildren和getData这些读操作可以设置观察,通过create,delete和setData这些写操作触发观察。当一个观察被触发时会产生一个事件,这个观察和触发它的操作共同决定了观察事件的类型。

    1.当所观察的znode被创建,删除或其数据被更新时,设置在exists操作上的观察被触发。

    2.当所观察的znode被删除或其数据被更新时,设置在getData操作上的观察被触发。创建znode不会触发getData上的观察。

    3.当所观察的znode的子节点被创建或删除,或所观察的znode被删除时,设置在getChildren上的观察会被触发。通过观察事件的类型来判断被删除的是znode还是其子节点:NodeDelete或NodeChildrenChanged。

    观察和触发映射表:

                                  创建节点               创建子节点                      删除节点                     删除子节点                       setData

    exists                    NodeCreated                                              NodeDeleted                                                    NodeDataChanged

    getData                                                                                  NodeDeleted                                                   NodeDataChanged

    getChildren                                   NodeChildrenChanged           NodeDeleted              NodeChildrenChanged

    观察事件参数中可获取到被观察节点的路径,因此对于NodeCreated和NodeDeleted事件可获取到是哪个节点被创建和获取。

    对于NodeChildrenChanged事件则需要使用getChildren方法获取新创建的节点。

    对于NodeDataChanged事件则需要调用getData方法获取更新后的数据。注意:观察被触发后和获取数据之间节点可能又发生了变化。

    ACL相关的操作不触发任何观察。

    ACL (访问控制表)

    每个znode被创建时都需要指定一个ACL列表,定义了该节点被执行各种操作的权限。

    ACL依赖于Zookeeper的客户端身份验证机制。zk提供了以下几种验证方式:

    Digest    通过用户名和密码来识别客户端

    sasl     通过Kerberos来识别客户端

    IP      通过客户端IP地址来识别客户端

    每个ACL都是验证方式和赋予权限的组合,如 new ACL(Perms.READ, new ID("ip", "10.11.19.18"));  使用IP验证方式赋予READ权限

    注意exists操作不需要任何权限,因此任何客户端都可以调用。

    ACL权限表:

    CREATE  允许create

    READ   允许getChildren  getData

    WRITE       允许setData

    DELETE    允许delete

    ADMIN   允许setACL

    在ZookDefs.Ids中定义了一些ACL,如OPEN_ACL_UNSAFE,将除ADMIN外的其他权限赋予每个客户端。

    end

  • 相关阅读:
    click事件——背景高亮
    color——RGB转16进制
    导航栏高亮设置
    layui table 渲染完成后,怎样拿到表个里的所有数据
    解决 AttributeError: 'dict' object has no attribute 'has_key' 错误的方法
    2019年总结:醒悟还为时不晚
    Worker Services读取配置后,发布Windows出现的问题及解决
    C# 读取配置(详细操作,让我们一起共同成长)
    程序不包含适合于入口点的静态“Main”方法
    .NET Core3.0-Worker Services
  • 原文地址:https://www.cnblogs.com/luangeng/p/7398172.html
Copyright © 2011-2022 走看看