当前位置: 首页 > article >正文

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

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.kler.cn/a/455511.html

相关文章:

  • OpenHarmony-5.PM 子系统(2)
  • 敏捷测试文化的转变
  • 树形查询转成TreeNode[],添加新节点
  • 洛谷 P1725:琪露诺 ← 单调队列+DP
  • 《数据结构》期末考试测试题【上】
  • Llama 3 预训练(二)
  • 华为管理变革之道:管理制度创新
  • 【连续学习之SSL算法】2018年论文Selfless sequential learning
  • 在 Ubuntu 上搭建 MinIO 服务器
  • thingjs 基础案例整理
  • vulnhub靶场-jangow-01-1.0.1(截止至获取shell)
  • 《Web 项目开发之旅》
  • 工厂+策略模式之最佳实践(疾病报卡维护模块API设计)
  • 复合机器人:开启智能制造新时代
  • 单例模式的写法
  • IOS safari 播放 mp4 遇到的坎儿
  • QT + FFMPEG实现简易播放器
  • Django 管理界面中注册和配置 ECSCluster 模型
  • 第T4周:TensorFlow实现猴痘识别(Tensorboard的使用)
  • 如何实现底部导航栏
  • springboot478基于vue全家桶的pc端仿淘宝系统(论文+源码)_kaic
  • Log4j2的Policies详解、SizeBasedTriggeringPolicy、TimeBasedTriggeringPolicy
  • Qt 模型Model/视图View/代理Delegate
  • 解锁 Claude 的无限潜力:Prompt Engineering 从入门到精通
  • 游戏开发线性空间下PS工作流程
  • 使用c#制作坐标