一、发布/订阅

  配置文件的集中管理。

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

  解决方法:使用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 的无线可能。

最新文章

  1. ubuntu 16.04 安装nodejs
  2. OpenCV Haartraining
  3. cocos2d-x游戏开发之烟花粒子效果
  4. nandflash操作详解
  5. STM32移植UCGUI3.90笔记
  6. C#学习笔记1:正则表达式和数据库连接
  7. unity3D射线检测敌人是否在前方
  8. <ASP.NET4 从入门到精通>学习笔记1
  9. Java之多线程
  10. Windows、Linux -- 远程登录、文件传输、文件共享
  11. leetcode — word-ladder-ii
  12. css选择器的优先级算法
  13. Oracle报错#“ORA-01791: 不是 SELECTed 表达式”解决方法
  14. 表单enctype不对导致action中无法接受数据
  15. Linux系统下CPU使用(load average)梳理
  16. vue接口地址配一个全局的
  17. 浅谈 Make 命令
  18. 两台linux服务器之间实现挂载
  19. HBulider打包
  20. InnoDB表优化

热门文章

  1. Datetimepicker.js用法
  2. Mac OS 10.12 - 如何关闭Rootless机制?
  3. 任务查询系统(cqoi2015,bzoj3932)(主席树)
  4. django url 路由设置技巧
  5. 哈夫曼树——c++
  6. 前端入门CSS(3)
  7. 攻防组网之—-VMware路由器安装设置
  8. IdentityServer4登陆中心
  9. Python绑定方法与非绑定方法
  10. iOS下载图片失败