dolphinscheduler服务RPC心跳机制之实现原理与源码解析

news/2024/12/28 22:56:41/

RPC心跳机制设计

  • 1.概述
  • 2.设计
    • 2.1.心跳机制流程设计
      • 2.1.1.常规RPC心跳机制设计
      • 2.1.2.Dolphinscheduler的RPC心跳机制设计
    • 2.2.心跳机制数据模型设计
    • 2.3.心跳机制动态配置
  • 3.实现
    • 3.1.心跳机制数据模型
      • 3.1.1.HeartBeat接口
      • 3.1.2.基础实现类BaseHeartBeat
      • 3.1.3.Master服务中的心跳消息MasterHeartBeat
      • 3.1.4.Worker服务中的心跳消息WorkerHeartBeat
    • 3.2.系统资源监控服务`dolphinscheduler-meter`
      • 3.2.1.系统监控服务配置类MeterAutoConfiguration
      • 3.2.2.资源监控数据提供者服务类DefaultMetricsProvider
      • 3.2.3.判断服务节点是否负载BaseServerLoadProtection
      • 3.2.4.对外提供资源监控数据的类SystemMetrics
    • 3.3.心跳检测任务模型
      • 3.3.1.心跳检测任务基础类BaseHeartBeatTask
      • 3.3.2.Master服务心跳检测任务类MasterHeartBeatTask
      • 3.3.3.Worker服务心跳检测任务类WorkerHeartBeatTask
    • 3.4.心跳检测任务启动的时机
      • 3.4.1.WorkerRegistryClient
      • 3.4.2.MasterRegistryClient
    • 3.5.RPC消费者如何接收心跳消息
      • .3.5.1.心跳消息的订阅处理核心类ServerNodeManager
  • 4.总结

1.概述

在分布式系统中,RPC(远程过程调用)框架需要设计心跳机制的主要原因是为了保持系统的稳定性和高可用性。心跳机制通常用于检测服务端与客户端之间的连接是否仍然有效,并及时处理因网络故障、服务器宕机、长时间无响应等原因导致的连接中断。

  • 1.检测连接是否正常

网络不稳定:在分布式系统中,网络可能出现瞬时的波动或断开。如果没有心跳机制,客户端和服务端无法知道对方是否仍然在线,可能会误认为连接仍然有效,导致请求发送失败。
服务器宕机:服务器可能由于崩溃、重启等原因失去响应。如果没有心跳机制,客户端无法及时知道服务端的故障,从而可能会继续发送请求,导致请求失败。
心跳机制通过定期发送心跳包(简单的空消息或固定格式的消息)来验证连接的有效性。一旦心跳包未能在指定时间内得到响应,客户端或服务端可以知道对方的连接已断开,并采取适当的恢复措施。

  • 2.故障恢复和负载均衡

在分布式系统中,服务端或客户端可能会由于各种原因失去连接。如果没有心跳机制,客户端无法得知服务端已经不可用,从而无法快速切换到其他可用的服务节点。通过心跳机制,客户端可以在


http://www.ppmy.cn/news/1558911.html

相关文章

Python 端口访问邮件提醒工具

Python 端口访问邮件提醒工具 1.简介: 该脚本主要实现的功能是获取指定端口连接的远程 IP 地址,并将其发送给指定的邮箱,可用于一些远程工具的登录通知,或者其他你需要检测的程序。 特点: 可在配置文件内自定义需要检测的端口…

基于Sentinel的服务保护方案的三种方式(请求限流、线程隔离、服务熔断)超详细讲解

目录 1、三种方式介绍 1.1请求限流 1.2 线程隔离方案 1.3 服务熔断 2、基于sentinel实现 2.1 启动sentinel 2.2 基于springboot整合sentinel 2.2.1请求限流 2.2.2请求隔离 2.2.2.1 OpenFeign整合Sentinel 2.2.3 服务熔断 2.2.3.1 编写降级代码 2.2.3.2 服务熔断 1、…

嵌入式学习-QT-Day06

嵌入式学习-QT-Day06 六、多窗口编程 1、QMessageBox 消息对话框 2、QWidget类 3、parent参数 4、堆栈窗口(QStackedWidget) 5、新建自定义窗口类 6、对象传值 6.1 父对象 → 子对象 6.2 子对象 → 父对象 7、事件机制 8、QMainWindow主窗口类 8.1 QMenu…

机器学习之scikit-learn(简称 sklearn)

scikit-learn(简称 sklearn)是 Python 生态中一个非常流行且强大的机器学习库,支持各种机器学习算法和工具。 核心模块和功能 监督学习 (Supervised Learning): 分类 (Classification): 支持的算法:KNN、SVM、决策树、…

Scala_【2】变量和数据类型

第二章 注释标识符的命名规范命名规则关键字 变量字符串输出数据类型关系变量和数据类型整数类型(Byte、Short、Int、Long)浮点类型(Float、Double)字符类型(Char)布尔类型(Boolean)…

leetcode hot 100 二叉搜索

35. 搜索插入位置 已解答 简单 相关标签 相关企业 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solut…

Hadoop中MapReduce过程中Shuffle过程实现自定义排序

文章目录 Hadoop中MapReduce过程中Shuffle过程实现自定义排序一、引言二、实现WritableComparable接口1、自定义Key类 三、使用Job.setSortComparatorClass方法2、设置自定义排序器3、自定义排序器类 四、使用示例五、总结 Hadoop中MapReduce过程中Shuffle过程实现自定义排序 一…

CASA模型相关遥感数据及MODIS NDVI、FPAR遥感产品数据时序重建

植被作为陆地生态系统的重要组成部分对于生态环境功能的维持具有关键作用。植被净初级生产力(Net Primary Productivity, NPP)是指单位面积上绿色植被在单位时间内由光合作用生产的有机质总量扣除自养呼吸的剩余部分。植被NPP是表征陆地生态系统功能及可…