Application & Practice

约定

  • W[c|d|e] watcher:代表三种观察

    • We:exists
    • Wd:getData
    • Wc:getChildren
  • N[s|e]-R znode:节点,R代表角色。

    • N:永久非顺序节点
    • Ns:永久顺序节点
    • Ne:临时非顺序节点
    • Nes:临时顺序节点。
  • C-R:client-rolename:客户端操作,rolename为角色。

  • OP:操作
    • C:Create节点
    • R:Read节点
    • D:Delete节点
    • A:Admin节点,Acl
    • W:Write节点

1.发布订阅——配置中心

能力点:

  • 多个订阅客户端,1个发布客户端充当管理员角色。即订阅客户端只能读取配置信息,发布客户端维护配置信息。权限分别为READ和ALL。
  • zk服务器结合了Push和Pull,其中服务器向客户端的Push是通过Watcher实现的。
  • 解耦物理配置文件。

设计:

N: \/company\/system\/config\/environment\/type\/keyi

  • company:公司名称
  • system:系统
  • config:代表配置
  • environment:环境,如开发,测试,生产
  • type:类型,如连接字符串,AppSetting
  • keyi:具体的键名。

C-sub:订阅客户端

  • We(N):在N添加We;
  • R(N):读取N的数据。
  • 解释:

    • C-sub启动时,注册服务器,并We(N);
    • C-sub当收到Watch时,更新本地配置缓存。

      • C-pub:发布客户端
    • A\/C\/R\/D\/W(N):Admin,Create,Read,Delete,Write

2. 命名服务——服务发现中心

其实可以归结到配置中心,也可以独立出来。

能力点:

  • 将一个SOA服务注册上线、下线、更新,通过到其他服务。
  • 统计在线信息

设计:

Ne-self:\/company\/system\/soaSvc\/environment\/type\/keyi

Ne-other:\/company\/system\/soaSvc\/environment\/type\/keyj

C-sub\/pub:发布订阅客户端(同一个客户端可以充当两个角色)

  • R\/W\/A\/C\/D (Ne-self):可对Ne-self进行所有操作
  • R(Ne-other):对Ne-other进行读取
  • We(Ne-other):Watch Ne-other
  • 解释:
    • 当作为C-sub时,启动的时候,R(Ne-other),并We(Ne-other);
    • 当作为C-pub时,可发布自己的数据,W(Ne-self),以及其他操作。

3. 全局ID

能力点:

  • 能够在分布式环境中生成唯一的ID。

设计:

Nes:\/company\/system\/globalID\/environment\/type\/keyi

C-genID:节点生成客户端

  • C(Nes):创建Nes
  • 解释:
    • C-genID执行C(Nes)时,则顺序返回一个。

4.Master选举,分布式排它锁

在分布式环境中选出一个能够唯一运行的示例。

设计:

Ne:\/company\/system\/XLock\/environment\/type\/keyi

C-getXLock:获取锁的客户端

  • C(Ne):创建Ne
  • Wc(Ne):观察子节点
  • 解释:
    • 执行创建之前,先设置一个观察,收到观察时,执行创建
    • C-getXLock执行C(Ne)时,成功则获得锁。

5. 分布式共享锁

能力点:获取共享锁。

Nes:\/company\/system\/SLock\/environment\/type\/keyi

C-getSLock:

  • C(Nes):创建Nes
  • R(Nes):读取Nes的子节点
  • We(Nes):观察Nes的子节点
  • 解释:
    • 先执行创建,然后读取Nes的子节点,确定自己在子节点中的顺序。
    • 如果不是最小,且,前面有写请求,则对自己前面的最后一个写请求节点设置观察,重复;反之,获得锁

6. 分布式队列

能力点:排队执行。

Nes:\/company\/system\/Queue\/environment\/type\/keyi

C-queue:

  • C(Nes):创建Nes
  • R(Nes):读取Nes的子节点
  • We(Nes):观察Nes的子节点
  • 解释:
    • 先执行创建,然后读取Nes的子节点,确定自己在子节点中的顺序。
    • 如果不是最小,则对自己前面的一个节点设置观察,重复;反之,获得锁。

7. 其他功能

成员组管理,机器监控,心跳检测,临时节点来做。

任务分发,发布到指定的节点上。

状态汇报,客户端机器定期向指定节点写入自己的状态信息。

工作进度汇报,实时地将自己执行的任务进度汇报给分发系统。

results matching ""

    No results matching ""