内容简介:什么是分布式系统中的单点故障:通常分布式系统采用主从模式,就是一个主控机连接多个处理节点。主节点负责分发任务,从节点负责处理任务,当我们的主节点发生故障时,那么整个系统就都瘫痪了,那么我们把这种故障叫作单点故障。
1.单点故障问题
什么是分布式系统中的单点故障:通常分布式系统采用主从模式,就是一个主控机连接多个处理节点。主节点负责分发任务,从节点负责处理任务,当我们的主节点发生故障时,那么整个系统就都瘫痪了,那么我们把这种故障叫作单点故障。
传统方式是采用一个备用节点,这个备用节点定期给当前主节点发送ping包,主节点收到ping包以后向备用节点发送回复Ack ,当备用节点收到回复的时候就会认为当前主节点还活着,让他继续提供服务。如下图所示:
但是这种方式就是有一个隐患,就是网络问题 ,来看一网络问题会造成什么后果。
也就是说 我们的主节点的并没有挂,只是 在回复的时候网络发生故障,这样我们的备用节点同样收不到回复,就会认为主节点挂了 , 然后备用节点将他的Master实例启动起来,这样我们的分布式系统当中就有了两个主节点也就是---双Master , 出现双Master以后我们的从节点就会将它所做的事一部分汇报给了主节点,一部分汇报给了备用节点,这样服务就全乱了。 为了防止出现这种情况,我们引入了 ZooKeeper,它虽然不能避免网络故障,但它能够保证每时每刻只有一个Master。
2.ZooKeeper解决方案
在引入了Zookeeper以后,我们启动了两个主节点, "主节点-A"和"主节点-B"他们启动以后,都向ZooKeeper去注册一个节点 。 我们 假设"主节点-A"锁注册地节点是"master-00001","主节点-B"注册的节点是"master-00002", 注册完以后进行选举,编号最小的节点将在选举中获胜获得锁成为主节点 ,也就是我们的"主节点-A"将会获得锁成为主节点,然后"主节点-B"将被阻塞成为一个备用节点。那么,用这种方式就完成了对两个Master进程的调度。
如果"主节点-A"挂了,这时候他所注册的节点将被自动删除, ZooKeeper会自动感知节点的变化 ,然后再次发出选举,这时候"主节点-B"将在选举中获胜,替代"主节点-A"成为主节点。
3.Master 恢复
如果主节点恢复了,他会再次向ZooKeeper注册一个节点,这时候他注册的节点将会是 "master-00003" , ZooKeeper会感知节点的变化再次发动选举 ,这时候"主节点-B"在选举中会再次获胜继续担任"主节点","主节点-A"会担任备用节点。
以上所述就是小编给大家介绍的《ZooKeeper应用——解决分布式系统单点故障》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 分布式系统中的故障模型
- Ceph分布式存储-常见OSD故障处理
- [译] 分布式系统如何从故障中恢复?— 重试、超时和退避
- 利用zookeeper实现分布式服务故障自动剔除/服务自动注册的思路
- 故障公告:Linux 内核故障导致网站宕机近 1 个小时
- 线上故障处理手册
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Twenty Lectures on Algorithmic Game Theory
Tim Roughgarden / Cambridge University Press / 2016-8-31 / USD 34.99
Computer science and economics have engaged in a lively interaction over the past fifteen years, resulting in the new field of algorithmic game theory. Many problems that are central to modern compute......一起来看看 《Twenty Lectures on Algorithmic Game Theory》 这本书的介绍吧!