分布式系统心跳机制(一)

天翼云开发者社区
• 阅读 237

本文分享自天翼云开发者社区《分布式系统心跳机制(一)》,作者:白杨

分布式系统架构 当前大部分分布式系统架构如下图:

分布式系统心跳机制(一)

有一个中心节点来存储集群元数据和管理work儿节点,中心节点采用主备模式来实现HA。当中心节点主故障后,备节点接管业务成为主节点。我们下面讨论的心跳机制就是基于这种分布式架构而设计的。

心跳设计目标: 1.master控制节点的切换,不可以影响server的心跳。 2.server可以感知到master的每一次切换。 3.master在任意场景下都不会丢失server故障的事件。 4.心跳可以作为其它控制消息是否需要重试的依据。

心跳Clien端设计

分布式系统心跳机制(一)

a.worker2启动后只有master的列表,并不知道哪个是leader,因此先广播bootstrap信息。 b.只有leader节点响应bootstrap信息,leader生成session id并持久化,返回bootstrap ack 给worker2,标记worker2为Up。 c.worker2收到ack信息本地记录leader的epoch,sessionid等信息作为后续发送心跳的凭证,并进入connected状态。 d.bootstrap ack消息还需要携带,心跳超时时间,假心跳超时时间。

假心跳超时:假心跳超时的时间一般小于心跳超时的时间,例如:心跳超时的时间为5s,假心跳超时的时间就为3s。这主要是为了识别leader切换,当到了假心跳超时时间后,worker将开始广播心跳,尝试连接到新的leader,在心跳超时时间内连接上新的leader则对外是无感知的。

分布式系统心跳机制(一)

a.worker2进入connected状态后,后续定期发送HB消息给leader,leader返回ACK。 b.如果这时候leader故障了,follwer变成leader,超过假心跳超时时间后将会触发心跳广播。

分布式系统心跳机制(一)

a.leader故障后,新的leader接管了业务,并且从持久化存储中load起worker2的相关信息,主要是sessionid信息。 b.worker2到达假心跳时间后意识到旧leader可能故障,因此开始广播心跳寻找新的leader。 c.新的leader收到worker2的信息,并且比对sessionid是一致的则接收并返回hb ack。 d.worker2收到新的HB ack后更新新的leader地址与epoch信息,整个流程对外是透明的。

分布式系统心跳机制(一)

a.worker2找到新leader后,不再广播心跳而是单一的给leader发送。

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
springcloud知识点笔记
Eureka的自我保护机制:默认情况下EurekaClient定时向EurekaServer端发送心跳包,如果EurekaServer在一定时间内没有收到EurekaClient发送的心跳包,便会直接从服务注册列表中剔除该服务(默认90S),但是在短时间丢失大量的服务实例心跳,这时候EurekaServer会开启自我保护机制,不会剔除该服务。Ribbon
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
Netty 超时机制及心跳程序实现
本文同步至http://www.waylau.com/nettytimeoutandheartbeat/(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.waylau.com%2Fnettytimeoutandheartbeat%2F)本文介绍了Netty
Stella981 Stella981
3年前
Netty(一) SpringBoot 整合长连接心跳机制
 https://github.com/crossoverJie/JCSprout原创: crossoverJie 阅读原文(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fmp.weixin.qq.
Wesley13 Wesley13
3年前
MCU的心脏
晶振是石英晶体谐振器(quartzcrystaloscillator)的简称,它被称为电路系统的心脏,它为整个系统提供“心跳”。中央处理器(CPU)一切指令的执行都是建立在这个“心跳”上的,这个心跳就是CPU执行指令所必须的时钟频率信号,一般来说时钟信号频率越高,CPU的运行速度也就越快。只要是包含CPU的电子产品,都至少包含一个时钟源,有些在外面看不到晶
Stella981 Stella981
3年前
Netty 如何实现心跳机制与断线重连?
作者:sprinkle\_lizwww.jianshu.com/p/1a28e48edd92心跳机制何为心跳所谓心跳,即在 TCP 长连接中,客户端和服务器之间定期发送的一种特殊的数据包,通知对方自己还在线,以确保 TCP 连接的有效性.注:心跳包还有另一个作用,经常被忽略,即:一个连接如果长时间不用,防
Wesley13 Wesley13
3年前
ES基础分布式架构、横向扩容、容错机制
Elasticsearch的基础分布式架构Elasticsearch对复杂分布式机制的透明隐藏特性Elasticsearch是一套分布式系统,分布式是为了应对大数据量。Elasticsearch隐藏了复杂的分布式机制:分片:我们之前随随便便就将一些document插入到es集群中去
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Stella981 Stella981
3年前
Socket心跳机制
本文是我在实际工作中用到的Socket通信,关于心跳机制的维护方式,特意总结了一下,希望对朋友们有所帮助。Socket应用:首先Socket封装了tcp协议的,通过长连接的方式来与服务器通信,是由服务器和客户端两部分组成的,当客户端成功连接之后,服务器会记录这个用户,并为它分配资源,当客户端断开连接后,服务器会自动释放资源。但在实际的网络环
天翼云开发者社区
天翼云开发者社区
Lv1
天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。
文章
722
粉丝
15
获赞
40