• 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 的无线可能。

  • 相关阅读:
    [转]面向对象的三个基本特征
    C#验证Email
    天气预报
    【原】c#实现数字金额转换成大写金额
    C#发送Email
    DIV 显示最上层
    ArrayList 与 String[] 之间的转换
    Flex与.NET互操作(五):FileReference+HttpHandler实现上传/下载
    Flex与.NET互操作(三):基于WebService的数据访问(下)
    Flex与.NET互操作(六):Flex和.NET协同开发利器FluorineFx
  • 原文地址:https://www.cnblogs.com/chen--biao/p/10089745.html
Copyright © 2020-2023  润新知