zoukankan      html  css  js  c++  java
  • Zookeeper 学习笔记(一)之功能介绍

    Zookeeper 主要在以下场景中可以使用

    一,命名服务(用到了zookeeper的文件系统)

    命名服务是指通过指定的名字来获取资源或者服务的地址,利用zk创建一个全局的路径,提供服务的地址或者一个远程的对象等等。(Dubbo就是用zookeeper作为服务注册中心的)

    二,配置管理(用到了zookeeper的文件系统,通知机制)

    程序分布式的部署在不同的机器上,将程序的配置信息放在zk的znode下,当有配置发生改变时,也就是znode发生变化时,可以通过改变zk中某个目录节点的内容,利用watcher通知给各个客户端,从而更改配置。

    三,集群管理(用到了zookeeper的文件系统,通知机制)——帮助其他软件搭建集群

    所谓集群管理无在乎两点:是否有机器退出和加入、选举master。

    对于第一点,所有机器约定在父目录下创建临时目录节点,然后监听父目录节点的子节点变化消息。一旦有机器挂掉,该机器与 zookeeper的连接断开,其所创建的临时目录节点被删除,所有其他机器都收到通知:某个兄弟目录被删除,于是,集群就知道某个节点挂掉了

    新机器加入也是类似,会在该父目录下创建一个临时子节点,然后所有机器收到通知:新兄弟目录加入

    对于第二点,所有机器在zookeeper中都创建临时顺序编号目录节点,每次选取编号最小的机器作为master就好。

    四,分布式锁(用到了zookeeper的文件系统,通知机制)

    有了zookeeper的全局一致性文件系统,锁的问题变得容易。锁服务可以分为两类,一个是保持独占,另一个是控制时序。

    对于独占锁,我们将zookeeper上的一个znode看作是一把锁,通过createznode的方式来实现。所有客户端都去创建 /distribute_lock 节点,最终成功创建的那个客户端也即拥有了这把锁。用完删除掉自己创建的distribute_lock 节点就释放出锁。

    对于控制时序锁, /distribute_lock 已经预先存在,所有客户端在它下面创建临时顺序编号目录节点,和选master一样,编号最小的获得锁,用完删除,依次执行。

    PS:参考文献如下:

    1、https://blog.csdn.net/sunshine_2211468152/article/details/83051148

    2、https://blog.csdn.net/xuchuangqi/article/details/80633349    这篇对zookeeper 的功能和使用场景描述的易懂清晰。

  • 相关阅读:
    【实战】一次简单的js接口漏洞挖掘
    【实战】Location 302跳转 + CRLF 场景下的XSS
    【实战】权限绕过小结
    【实战】简单的API接口FUZZ小案例
    【实战】一次有趣的逻辑漏洞挖掘
    【实战】一个简单的SQL注入绕过
    【实战】springboot actuator未授权访问之trace接口泄漏敏感信息
    【实战】springboot actuator未授权访问之heapdump敏感信息提取
    层次分析法AHP
    pyppeteer(1)
  • 原文地址:https://www.cnblogs.com/sandyflower/p/11271057.html
Copyright © 2011-2022 走看看