ZooKeeper应用——解决分布式系统单点故障

1.单点故障问题什么是分布式系统中的单点故障:通常分布式系统采用主从模式,就是一个主控机连接多个处理节点。主节点负责分发任务,从节点负责处理任务,当我们的主节点发生故障时,那么整个系统就都瘫痪了,那么我们把这种故障叫作单点故障。传统方式是采用一个备用节点,这个备用节点定期给当前主节点发送ping包,主节点收到ping包以后向备用节点发送回复Ack ,当备用节点收到回复的时候就会认为当前主节点还活着,让他继续提供服务。如下图所示:

ZooKeeper应用——解决分布式系统单点故障

图片描述(最多50字)

但是这种方式就是有一个隐患,就是网络问题 ,来看一网络问题会造成什么后果。

ZooKeeper应用——解决分布式系统单点故障

图片描述(最多50字)

也就是说 我们的主节点的并没有挂,只是 在回复的时候网络发生故障,这样我们的备用节点同样收不到回复,就会认为主节点挂了 , 然后备用节点将他的Master实例启动起来,这样我们的分布式系统当中就有了两个主节点也就是---双Master , 出现双Master以后我们的从节点就会将它所做的事一部分汇报给了主节点,一部分汇报给了备用节点,这样服务就全乱了。 为了防止出现这种情况,我们引入了 ZooKeeper,它虽然不能避免网络故障,但它能够保证每时每刻只有一个Master。2.ZooKeeper解决方案在引入了Zookeeper以后,我们启动了两个主节点, "主节点-A"和"主节点-B"他们启动以后,都向ZooKeeper去注册一个节点 。 我们 假设"主节点-A"锁注册地节点是"master-00001","主节点-B"注册的节点是"master-00002", 注册完以后进行选举,编号最小的节点将在选举中获胜获得锁成为主节点 ,也就是我们的"主节点-A"将会获得锁成为主节点,然后"主节点-B"将被阻塞成为一个备用节点。那么,用这种方式就完成了对两个Master进程的调度。

ZooKeeper应用——解决分布式系统单点故障

图片描述(最多50字)

如果"主节点-A"挂了,这时候他所注册的节点将被自动删除, ZooKeeper会自动感知节点的变化,然后再次发出选举,这时候"主节点-B"将在选举中获胜,替代"主节点-A"成为主节点。

ZooKeeper应用——解决分布式系统单点故障

图片描述(最多50字)

3.Master 恢复

ZooKeeper应用——解决分布式系统单点故障

图片描述(最多50字)

如果主节点恢复了,他会再次向ZooKeeper注册一个节点,这时候他注册的节点将会是 "master-00003" , ZooKeeper会感知节点的变化再次发动选举 ,这时候"主节点-B"在选举中会再次获胜继续担任"主节点","主节点-A"会担任备用节点。

转载于:https://blog.51cto.com/14028890/2309926

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/537599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生活之难:生活到底难在哪里

生活之难:生活到底难在哪里 一、总结 一句话总结:难在天性,难在竞争,难在积累,难在追求,难在自己 难在天性 人的天性就是好吃懒做好玩不动脑的,但是生存的压力(食物,房子…

python中元祖 字典 列表的区别_Python中元祖,列表,字典的区别

原博文 2016-08-16 15:25 − Python中有3种內建的数据结构:列表、元祖和字典: 1.列表 list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目。 列表中的项目应该包括在方括号中,这样Python就知道你是指明一个…

Intellij IDEA展示类中的方法树形结构

在intellij Idea中叫Structure(结构体),如下图; 也可以直接AltF7快捷键,这样默认会把Structure显示在屏幕下方,如下图操作就可以移动到右侧。 效果如下:

时间计算题100道_2019四校及分校自招开放日情况汇总(含时间安排、考试内容难度、到场人数等)...

点击上方“上海初升高”,选择“星标公众号”回复“加群”就能加入上万家长信赖的升学群受到疫情的影响,今年各市重点的自招开放日报名迟迟没有提上日程。但不管怎样,自招应该是不会取消的,以下是去年四校及分校自招开放日情况汇总…

linux I/O 栈 预习(上)

二、预习 在我们进去device mapper的dm dedup学习之前,我们先要预习一下,什么是device mapper,和为什么device mapper能够做块重删。 1、device mapper照旧,我们先看一下维基百科对它的介绍。The device mapper is a framework pr…

springboot controller 访问 404

两种解决方式: 1、因为SpringBoot的项目启动类,会只扫描该包下的文件或者改包下所有子包内的文件,只要你把该文件移动到启动类的相同目录报下就可以。 2、就是在该类上面加者在启动类上添加注解 ComponentScan(basePackages {"com.boota…

fegin需要实现类_【第24条】静态成员类优于非静态成员类

第24条静态成员类优于非静态成员类嵌套类(nested class)是指定义在另一个类的内部的类。嵌套类存在的目的应该只是为它的外围类(enclosing class)提供服务。如果嵌套类将来可能会用于其他的某个环境中,它就应该是顶层类(top-level class)。嵌套类有四种:…

Springboot 多线程的使用

直接上代码 线程配置类 package zengmg.nbpi.com.thread;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework…

vlookup函数练习_为什么职场要学excel函数?看这个案例演示:自动计算快递价格...

在上一篇文章里面,我们讲了如何整理完成一个规范化的表格,以便于下一步的函数计算。最初的信息内容如图所示。经过整理,我们得到了表2这样的规范化表格。现在,我们就通过表2来实现快递费用自动计算,最终实现图中这样的…

蓝牙芯片排行_7月TWS 全球品牌出货量排行榜出炉

数据铸造影响力撰文 / 旭日大数据编辑 / 柏序旭日大数据公布了2020年7月全球TWS品牌销量排行榜,与上期数据相比,全球品牌七排名TOP20汰换率为15%,其中DOSS,万魔、BOSE跌出前20,广州由我,Tzumi登榜&…

project 打印的时候上面的表格和下面的图例中间有个很大的空白,这块东西怎么能去掉呢?

“打印预览”的“页面设置”里面,“页面”选项卡里的“缩放”项设为1页宽,1页高就可以了, 当然如果你的任务项比较少的话,怎么调也不容易去掉下面的空白 操作如下图(下图的任务太少,去不掉空白的&#xf…

加密机工作原理_端子机压力检测装置工作原理

上期我们介绍了端子机压力管理装置的使用常识,这期我们介绍端子机压力管理装置的工作原理,端子机压接管理装置,有单通道压力监测和双通道压力监测二种,双通道压力监测装置,一般用于双头端子压接机上,一台主…

win10解决java多版本java -version问题

电脑环境 先安装了Jdk8,后安装了jdk11.(发现Jdk11没有单独的jre,官网也不提供下载,集成在一起了) Java -version 将环境变量切换为 JDK11 后 javac -version 是 java编译环境是jdk11了,但 java -versio…

vs设计窗口不见了_碳纤维的巅峰:VS沛纳海616V3

各位朋友,你们好!欢迎大家关注XYZ腕表俱乐部。专注腕表资讯,致力于做腕表拆解测评,为大家普及分享有价值的腕表知识,真正让大家实实在在透明玩表。想了解更多,欢迎搜索:XYZ腕表俱乐部。可以让您…

CSharpGL(49)试水OpenGL软实现

CSharpGL(49)试水OpenGL软实现 CSharpGL迎来了第49篇。本篇内容是用C#编写一个OpenGL的软实现。暂且将其命名为SoftGL。 目前已经实现了由Vertex Shader和Fragment Shader组成的Pipeline,其效果与显卡支持的OpenGL实现几乎相同。下图左是常规OpenGL渲染的结果&#…

SonarQube结合IDEA实现代码检测

环境准备 1.SonarQube下载:https://www.sonarqube.org/downloads/ 建议用最新版本,SonarQube与idea的结合 需要SonarQube很多插件,需要借助idea的SonarLint 插件。 不同的SonarQube版本,有不同的插件版本 idea的SonarLint 插件…

二维小波变换_【外文文献速读】实时二维水波模拟

题目:Water surface wavelets 作者:Stefan Jeschke, TomšSkřivan, MatthiasMller-Fischer, Nuttapong Chentanez, Miles Macklin, Chris Wojtan

技术开发(委托)合同怎么写?

一直基于宁波市科技局备案合同模板签订合同,并完成科技局备案工作,成功了N次,直接分享模板,该模板通过了法务审核,财务审核,只需要批示修改相关内容即可,一份技术开发委托合同,十几分…

最常用的15个前端表单验证JS正则表达式

2019独角兽企业重金招聘Python工程师标准>>> 在表单验证中,使用正则表达式来验证正确与否是一个很频繁的操作,本文收集整理了15个常用的JavaScript正则表达式,其中包括用户名、密码强度、整数、数字、电子邮件地址(Ema…

程序员个人外包合同怎么写?

分享一份工作上经常用到的个人外包合同协议,该协议通过了法务与财务审核,兼顾甲乙双方利益,程序员接私活必备!!!! ---需要电子word版,请关注--------- 回复:个人外包合同…