zoukankan      html  css  js  c++  java
  • zookeeper 典型应用

    一、发布/订阅

      配置文件的集中管理。

      问题:当分布式系统变多后,每个系统保存相应的配置文件,会造成同个文件有多份,修改起来非常麻烦。

      解决方法:使用zk的发布/订阅功能,配合Watcher机制,在应用启动的时候,从注册中心获取配置文件,并监听配置文件的改动。当配置文件修改时,相应的系统接收到watcher的通知,进行相应处理。

    二、命名服务

      分布式系统中,被命名的实体通常是集群中的机器、提供的服务地址或远程对象等。

      如:分布式服务框架(RPC)中的服务地址列表,通过使用命名服务,客户端应用能够根据指定名字来获取资源的实体、服务地址和提供者的信息等。

    三、集群管理

      1、Watcher 机制

      2、ZooKeeper 的节点

      通过以上两点,就可以根据节点的变化情况,对集群进行监控和控制。

    四、Master 选举

    五、分布式锁

      分布式锁是控制分布式系统之间同步访问共享资源的方式。

      1、排他锁(写锁、独占锁)

        用zk的节点来表示锁,获取锁的时候,就调用create() 方法在节点内创建子节点,由于zk保证只有一个客户端能够创建成果,因此保证了锁的唯一。没有或得锁的客户端,在节点内注册子节点变更的Watcher事件,等节点有变化时再尝试获取锁,以此循环获取锁的过程。

        释放锁的时候,客户端宕机或者锁拥有者释放锁。

      2、共享锁(读锁)

        锁类型的判断:

        1)、获取节点下所子节点。

        2)、如果没有比自己序号小的节点,或者比自己序号小的节点都是读请求,那么可以获取读锁。

        3)、如果比自己序号小的节点中有写请求,那么等待锁。

        4)、如果写请求对比所有的序号,发现自己不是最小的,那么重复排它锁的获取方式。

        注意:序号决定锁的归属。

    六、分布式队列

      1、FIFO

      2、Barrier 分布式屏障,等待某个状态,状态到达时,再执行往下步骤。

    总结:

      ZooKeeper 节点

      Watcher 机制

      这两个特性,创造了ZooKeeper 的无线可能。

  • 相关阅读:
    oracle查询锁表解锁语句
    转:js,jQuery 排序的实现,网页标签排序的实现,标签排序
    禁止页面缩放功能
    js 操作 cookie
    random模块
    以及模块的四种形式模块的四种形式和模块的调用
    函数的调用
    函数的返回值
    可变长参数
    函数的重点内容
  • 原文地址:https://www.cnblogs.com/chen--biao/p/10089745.html
Copyright © 2011-2022 走看看