首页 > 其他分享 >分布式系统心跳机制(一)

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

时间:2024-07-26 15:22:35浏览次数:6  
标签:worker2 节点 分布式系统 心跳 机制 超时 leader

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

分布式系统架构

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

 

有一个中心节点来存储集群元数据和管理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发送。

标签:worker2,节点,分布式系统,心跳,机制,超时,leader
From: https://www.cnblogs.com/developer-tianyiyun/p/18325416

相关文章

  • 源码拆解SpringBoot的自动配置机制
    SpringBoot相比于Spring系列的前作,很大的一个亮点就是将配置进行了简化,引入了自动化配置,仅靠几个注解和yml文件就取代了之前XML的繁琐配置机制,这也是SpringBoot的独有特点,下面我们从源码角度,一点点拆开自动配置的机制是如何实现的。从@SpringBootApplication开始从SpringBoot......
  • KingbaseES 集群运维典型案例 03 --“双主” sys_rewind恢复机制
    案例说明:主库主机系统重启,触发failover切换,原主库系统启动后,数据库服务被启动,出现“双主”,使用“repmgrnoderejoin--force-rewind”恢复集群。通过本案例了解,集群“双主”产生的原因及解决方案,并熟悉sys_rewind在集群恢复中的应用。数据库版本:KingbaseESV8R6一、集群架构......
  • C++中的虚函数与多态机制如何工作?
    在C++中,虚函数和多态机制是实现面向对象编程的重要概念。虚函数是在基类中声明的函数,可以在派生类中进行重写。当基类的指针或引用指向派生类的对象时,通过调用虚函数可以实现动态绑定,即在运行时确定要调用的函数。多态是指通过基类的指针或引用调用虚函数时,会根据对象的实......
  • 掌握Postman中的分布式系统API测试:构建弹性架构的秘诀
    掌握Postman中的分布式系统API测试:构建弹性架构的秘诀在当今的软件开发中,分布式系统变得越来越普遍。这些系统由多个组件分布在不同的服务器或服务上,它们通过网络进行通信。测试分布式系统中的API交互是一个复杂但至关重要的任务。Postman,作为一个强大的API开发工具,提供了......
  • 嵌入式学习第9天——C语言运算符,程序设计结构,输入输出缓冲机制
    2024.7.25第九天笔记关于++混合操作,不同计算结果推理第一种编译结果:inti=5;intsum=(++i)+(++i)=6+7=13第二种编译结果:inti=5;intsum=(++i)+(++i)=6+7=7+7前面的7是因为后面i的变化被影响后,重新赋值=14第一种编译结果:inti=5;in......
  • 一文彻底搞懂浏览器事件机制、事件委托、事件冒泡、事件循环、Event Loop、react事件
    一、事件是什么?事件模型?事件是用户操作网页时发生的交互动作,比如click/move,事件除了用户触发的动作外,还可以是文档加载,窗口滚动和大小调整。事件被封装成一个event对象,包含了该事件发生时的所有相关信息(event的属性)以及可以对事件进行的操作(event的方法)。事件是用......
  • 分布式系统常见软件架构模式
    常见的分布式软件架构Peer-to-Peer(P2P)PatternAPIGatewayPatternPub-Sub(Publish-Subscribe)Request-ResponsePatternEventSourcingPatternETL(Extract,Transform,Load)PatternBatchingPatternStreamingProcessingPatternOrchestrationPattern总结......
  • PostgreSQL学习笔记----GUC机制
    GUC介绍在守护进程Postmaster初始化内存环境之后,需要配置Postmaster运行时所需的各种参数。GUC(GrandUnifedConfiguralion)模块实现了多种数据类型(目前有boolean、int、real、string、enum五种)的变量配置。这些参数可能会由不同的进程在不同的时机进行配置,系统会根据......
  • 一文了解MySQL索引机制
    接触MySQL数据库的小伙伴一定避不开索引,索引的出现是为了提高数据查询的效率,就像书的目录一样。某一个SQL查询比较慢,你第一时间想到的就是“给某个字段加个索引吧”,那么索引是什么?是如何工作的呢?一起静下心来,耐心看完这篇文章吧,干货不啰嗦,相信你一定会有所收获。一、索引模型模......
  • UVM-config_db机制和用法
    1.用途        config_db机制用于在UVM验证平台间传递参数,通常成对出现,其中set相当于寄信,get相当于收信。UVM提供的config_db机制可在组件实例化前就设定好配置信息,这样就可在tb的initial块中就进行设定了。真正将这些配置信息落实在各component,是在testbench运行过程......