ZooKeeper如何解决分布式系统面临的问题

分布式系统定义及面临的问题
  • 分布式系统定义:分布式系统是同时跨越多个物理主机,独立运行的多个模块所组成的系统。
  • 面临的问题:系统每个节点之间信息同步及共享
  • 解决方式:
  1. 通过网络进行信息共享
    这就像现实中,开发leader在会上把任务传达下去,组员通过听leader命令或者看leader的邮件知道自己要干什么。当任务分配有变化时,leader会单独告诉组员或者再次召开会议。信息通过人与人之间的直接沟通完成传递。
  2. 通过共享存储
    这就好比开发leader按照约定的时间和路径,把任务分配表放在了SVN上,组员每天去SVN上拉取最新的任务分配表,然后干活。其中SVN就是共享存储。更好一点的做法是,当SVN文件版本更新时,触发邮件通知,每个组员再去拉取最新的任务分配表。这样做更好一些,因为每次更新,组员第一时间就得到通知,从而让自己手中的任务分配表永远是最新的,此种方式依赖于中央存储。整个过程如下图

在这里插入图片描述

ZooKeeper如何解决分布式系统面临的问题

ZooKeeper对分布式系统的协调,使用的是第二种方式,即共享存储。其实共享存储,分布式应用也需要和存储进行网络通信。
实际上,通过ZooKeeper实现分布式系统的原理,和项目组通过SVM同步工作任务是一样的。ZooKeeper就像是SVN,存储了任务的分配、完成情况等共享信息。每个分布式应用的节点就是组员,订阅这些共享信息。当主节点(组leader),对某个从节点的分工情况作出改变时,相关订阅的从节点得到ZooKeeper的通过,取得自己最新的任务分配。完成工作后,把完成情况存储到ZooKeeper。主节点订阅了该任务的完成情况,所以将得到ZooKeeper的完工的通知。如下图所示,仅仅把SVN和邮件系统合二为一,以ZooKeeper代替

在这里插入图片描述
Slave节点要想获取ZooKeeper的更新通知,需要事先在关心的节点上设置观察点
大多数分布式系统中出现的问题,都源于信息的共享出现问题,如果每个节点信息不能及时共享和同步,那么就会在协作过程中产生各种问题,ZooKeeper解决协同问题的关键,就是在于保证分布式系统信息的一致性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值