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

embedded/2024/12/29 0:06:20/

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/embedded/149589.html

相关文章

webRTC TURN服务器搭建

背景: 前言:如果还不清楚webrtc可以先看读这个文章webrtc的RTCPeerConnection使用_new rtcpeerconnection-CSDN博客 webRTC的RTCPeerConnection通讯,是p2p的通讯,配置的时候需要填写个stun和turn服务器 举例: cons…

家政预约小程序01搭建页面布局

目录 1 创建应用2 搭建页面布局3 设置页面背景色4 设置页面内容区域总结 我们前边已经完成了需求分析及设计工作,本篇开始就进入到具体的搭建。开发小程序先需要创建应用,应用和我们的需求相关,通常我们是有一个应用用来承载小程序&#xff0…

【Linux】小白如何看top命令及其他参数常识

top top 是 Linux 系统中用于实时监控系统性能的命令。它会显示系统的进程、内存、CPU 使用情况等信息。 top命令展示: top 反馈的各个字段的解释 1、第一行代表当前的时间、系统已运行时间(Uptime)、负载均衡(Load average)。 …

linux 中 Vi 和 Vim 的使用

Vi (Visual Interface)是 Linux下基于Shell 的文本编辑器,Vim (Visual Interface iMproved)是 Vi的增强版本,扩展了很多功能,比如对程序源文件的语法高亮。不管是 Vi 还是 Vim,我们习…

Element-plus自动导入

安装 npm i element-plus 自动引入 1. 安装两个插件 npm install -D unplugin-vue-components unplugin-auto-import2. 配置插件 vue3项目修改vite.config.js,把两个插件添加入即可,注意:不是覆盖原有配置 Vite // vite.config.js import { define…

【速成51单片机】1.已经学过stm32如何快速入门51单片机——软件下载与安装

引言 本系列专题用于已经熟悉stm32单片机的情况下,快速掌握51单片机。背景是我其实大一大二已经进入学校实验室了,已经学习了stm32单片机,但是现在大三期末考51单片机,实际期末复习更应该看老师给的重点和背书上知识点。但我不想…

运行Zr.Admin项目(后端)

1.下载Zr.Admin代码压缩包 https://codeload.github.com/izhaorui/Zr.Admin.NET/zip/refs/heads/main 2.打开项目 我这里装的是VS2022社区版 进入根目录,双击ZRAdmin.sln打开项目 3.安装.net7运行时 我当时下载的代码版本是.net7的 点击安装 点击安装&#xff0…

HTML5 Web IndexedDB 数据库

IndexedDB 是一种基于浏览器的 NoSQL 数据库,用于在客户端持久化存储大量结构化数据。 IndexedDB 允许通过键值对存储复杂的数据对象(如对象、数组、文件等),并支持事务、索引、版本控制和复杂查询操作。 IndexedDB 是异步的&am…