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

dledger原理源码分析系列(一)架构,核心组件和rpc组件

简介

      dledger是openmessaging的一个组件, raft算法实现,用于分布式日志,本系列分析dledger如何实现raft概念,以及dledger在rocketmq的应用

本系列使用dledger v0.40

本文分析dledger的架构,核心组件;rpc组件

关键词

Raft

Openmessaging

参考资料

In Search of an Understandable Consensus Algorithm  raft论文简版

技术架构

  • 应用/client  client是dledger提供给应用访问节点的组件
  • rpc服务

rpc服务内置rpc client/rpc server,对外接收外部rpc访问,包括client和节点间通讯;对内,解释rpc请求,转发给Server;对外,发送rpc请求到其他节点

  • Server

主程序,负责节点启动,其他组件的启动;写入日志请求初步处理等

  • Elector

选举类,负责集群主节点选举

  • EntryPusher

日志写入器,内置分发器和处理器,分发器主节点用于复制日志到跟随者;处理器跟随者使用,写入日志

  • 存储

存储日志条木,有两个实现,基于内存和基于文件

  • 快照/状态机

新版本的dledger提供状态机,dledger成为通用的raft组件,不再是转为rocketmq使用

启动

本节分析节点启动,下图是典型的dledger启动代码

  1. 构建和初始Server,Server代表节点
  2. 注册状态机,若需要的话
  3. 注册自定义的处理器,扩展rpc服务,若有的话
  4. Metrics组件初始化
  5. 启动server

     Server启动,负责启动核心组件

     6. 优雅关机

rpc

本节介绍dledger的rpc模块,dledger选主,日志写入和复制通过来来回回的rpc完成,本节介绍dledger业务层面的rpc设计

节点间通讯

上图节点间通讯模型

RaftProtocol/RaftProtocolHanlder  raft服务接口/处理器接口,raft服务接口定义外部,包括client和节点间访问接口;处理器定义raft处理服务接口

ClientProtocol/ ClientProtocolHanlder 日志服务接口/处理器接口,日志服务接口定义外部,包括client和节点间访问接口;处理器定义日志处理服务接口

RpcService 内置rpc client/rpc server, 对内使用NettyRemotingServer接收rpc请求,解释rpc请求,转发给Server;对外,使用NettyRemotingClient发送rpc请求到其他节点

Server  handler的真正实现者

技术架构图很直观的展示rpc调用关系

客户端通讯

Client组件是应用用于集成dledger,应用可使用client组件访问集群

MetadataUpdate 定时更新leaderId,让Client访问领导者节点

DLedgerClientProtocol 定义了访问集群的接口

扩展机制

Dledger提供rpc扩展机制,通过增加rpc处理器,DLedgerRpcService提供方法注册用户定义处理器

 系列文章

  • 架构,核心组件和rpc组件 完成
  • 心跳和选举 TBD
  • 日志写入/复制和存储  包括日志写入和复制,日志存储组件
  • 集成rocketmq  rocketmq使用dledger实现消息存储复制;broker控制器 元数据复制
  • 快照/状态机
  • 集群成员变更  成员变更管理,节点的上线下线发现,dledger v0.4未实现,但计划中,未来版本实现
  • jraft  “double check”  多重分析,jraft比较忠实实现了raft算法,在dledger基础上,再研究jraft对raft更深入的认识

相关文章:

dledger原理源码分析系列(一)架构,核心组件和rpc组件

简介 dledger是openmessaging的一个组件, raft算法实现,用于分布式日志,本系列分析dledger如何实现raft概念,以及dledger在rocketmq的应用 本系列使用dledger v0.40 本文分析dledger的架构,核心组件;rpc组…...

第七节:如何浅显易懂地理解Spring Boot中的依赖注入(自学Spring boot 3.x的第二天)

大家好,我是网创有方,今天我开始学习spring boot的第一天,一口气写了这么多。 这节通过一个非常浅显易懂的列子来讲解依赖注入。 在Spring Boot 3.x中,依赖注入(Dependency Injection, DI)是一个核心概念…...

Postman自动化测试实战:使用脚本提升测试效率

在软件开发过程中,接口测试是确保后端服务稳定性和可靠性的关键步骤。Postman作为一个流行的API开发工具,提供了强大的脚本功能来实现自动化测试。通过在Postman中使用脚本,测试人员可以编写测试逻辑,实现测试用例的自动化执行&am…...

CSMA/CA并不是“公平”的

CSMA/CA会造成过于公平,对于最需要流量的节点,是最不友好的,而对于最不需要流量的节点,则是最友好的。 CSMA/CA是优先公平来工作的。 CSMA/CA首先各节点使用DIFS界定air idle,在此期间大家都等待 其次,为了同时发送引起碰撞,在DIFS之后随机从CWmin和CWmax之间选择一个时…...

【漏洞复现】I doc view——任意文件读取

声明:本文档或演示材料仅供教育和教学目的使用,任何个人或组织使用本文档中的信息进行非法活动,均与本文档的作者或发布者无关。 文章目录 漏洞描述漏洞复现测试工具 漏洞描述 I doc view 在线文档预览是一个用于查看、编辑、管理文档的工具…...

图数据库 vs 向量数据库

最近大模型出来之后,向量数据库重新翻红,业界和市场上有不少声音认为向量数据库会极大的影响图数据库,图数据库市场会萎缩甚至消失,今天就从技术原理角度来讨论下图数据库和向量数据库到底差别在哪里,适合什么场景&…...

企业品牌出海第一站 维基百科词条创建

维基百科是一部内容开放、自由的网络百科全书,旨在创造一个涵盖所有领域知识,服务所有互联网用户的知识性百科全书。其在国外应用非常广泛且认可度很高,国内品牌出海或国际品牌都很有必要创建企业自己的维基百科页面,以及企业高管的个人维基百科页面。 如…...

Windows下activemq集群配置(broker-network)

1.activemq版本信息 activemq:apache-activemq-5.18.4 2.activemq架构 3.activemq集群配置 activemq集群配置基于Networks of Brokers 这种HA方案的优点:是占用的节点数更少(只需要2个节点),而且2个broker都可以响应消息的接收与发送。不足&#xff…...

心理辅导平台系统

摘 要 中文本论文基于Java Web技术设计与实现了一个心理辅导平台。通过对国内外心理辅导平台发展现状的调研,本文分析了心理辅导平台的背景与意义,并提出了论文研究内容与创新点。在相关技术介绍部分,对Java Web、SpringBoot、B/S架构、MVC模…...

代理IP对SEO影响分析:提升网站排名的关键策略

你是否曾经为网站排名难以提升而苦恼?代理服务器或许就是你忽略的关键因素。在竞争激烈的互联网环境中,了解代理服务器对SEO的影响,有助于你采取更有效的策略,提高网站的搜索引擎排名。本文将为你详细分析代理服务器在SEO优化中的…...

【leetcode--三数之和】

这道题记得之前做过,但是想不起来了。。总结一下: 函数的主要步骤和关键点: 排序:对输入的整数数组nums进行排序。这是非常重要的,因为它允许我们使用双指针技巧来高效地找到满足条件的三元组。初始化:定…...

解决Java中的ClassCastException问题

解决Java中的ClassCastException问题 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 在Java编程中,ClassCastException是一个常见的运行时异常&am…...

【TensorFlow深度学习】混合生成模型:结合AR与AE的创新尝试

混合生成模型:结合AR与AE的创新尝试 引言自回归模型与自动编码器的简述混合模型的创新尝试组合AR与AE:MADE混合模型在图学习中的应用 结论与展望 在自我监督学习的广阔天地里,混合生成模型以其独特的魅力,跨越了自回归&#xff08…...

Spring:Spring中分布式事务解决方案

一、前言 在Spring中,分布式事务是指涉及多个数据库或系统的事务处理,其中事务的参与者、支持事务的服务器、资源管理器以及事务管理器位于分布式系统的不同节点上。这样的架构使得两个或多个网络计算机上的数据能够被访问并更新,同时将这些操…...

音视频开发32 FFmpeg 编码- 视频编码 h264 参数相关

1. ffmpeg -h 这个命令总不会忘记,用这个先将ffmpeg所有的help信息都list出来 C:\Users\Administrator>ffmpeg -h ffmpeg version 6.0-full_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 pro…...

标准版小程序订单中心path审核不通过处理教程

首先看自己小程序是不是已经审核通过并上线状态才在站内信里面提醒的? 如果没有提交过审核,请在提交的时候填写。path地址为:pages/goods/order_list/index 如果是已经上线的小程序,当时没要求填这个,但新的政策要求填…...

移植对话框MFC

VC版 MFC程序对话框资源移植 以下均拷贝自上面,仅用来记录 (部分有删除) 法1: Eg:将B工程调试好的对话框移植到A工程中 1.资源移植 1.1 在2017打开B工程,在工作区Resource标签页中选中Dialog文件夹下的资源文件,按…...

【开源的字典项目】【macOS】:在macOS上能打开mdd and mdx 的github开源项目

【开源的字典项目】【macOS】 在macOS上能打开mdd and mdx 的github开源项目 Here are some GitHub repositories that provide code for opening and reading mdd and mdx files in macOS: 1. MdxEdit: Repository: https://github.com/mdx-editorDescription: A free and …...

已解决javax.security.auth.login.LoginException:登录失败的正确解决方法,亲测有效!!!

已解决javax.security.auth.login.LoginException:登录失败的正确解决方法,亲测有效!!! 目录 问题分析 出现问题的场景 报错原因 解决思路 解决方法 1. 检查用户名和密码 用户名和密码验证 2. 验证配置文件 …...

2741. 特别的排列 Medium

给你一个下标从 0 开始的整数数组 nums &#xff0c;它包含 n 个 互不相同 的正整数。如果 nums 的一个排列满足以下条件&#xff0c;我们称它是一个特别的排列&#xff1a; 对于 0 < i < n - 1 的下标 i &#xff0c;要么 nums[i] % nums[i1] 0 &#xff0c;要么 nums[…...

微信机器人WeixinBot完整指南:从零构建自动化微信应用

微信机器人WeixinBot完整指南&#xff1a;从零构建自动化微信应用 【免费下载链接】WeixinBot 网页版微信API&#xff0c;包含终端版微信及微信机器人 项目地址: https://gitcode.com/gh_mirrors/we/WeixinBot 微信机器人WeixinBot是一个功能强大的网页版微信API框架&am…...

华为OD新系统机试真题 2026.5.10 - 美观的灯笼

美观的灯笼(Py/Java/C/C/Js/Go)题解 华为OD新系统机试真题 华为OD新系统上机考试真题 5月10号 100分题型 华为OD新系统机试真题目录点击查看: 华为OD新系统机试真题题库目录&#xff5c;机考题库 算法考点详解 题目描述 春节将至&#xff0c;工人要在古镇老街挂灯笼。街上有…...

FGA自动化助手:告别FGO重复刷本,每天节省3小时游戏时间

FGA自动化助手&#xff1a;告别FGO重复刷本&#xff0c;每天节省3小时游戏时间 【免费下载链接】FGA Auto-battle app for F/GO Android 项目地址: https://gitcode.com/gh_mirrors/fg/FGA 你是否厌倦了在《命运/冠位指定》&#xff08;FGO&#xff09;中重复点击刷素材…...

ATF IronPython集成:如何在C应用中嵌入Python脚本引擎的完整指南

ATF IronPython集成&#xff1a;如何在C#应用中嵌入Python脚本引擎的完整指南 【免费下载链接】ATF Authoring Tools Framework (ATF) is a set of C#/.NET components for making tools on Windows. ATF has been in continuous development in Sony Computer Entertainments …...

为什么选择update-golang:5大优势对比传统安装方式

为什么选择update-golang&#xff1a;5大优势对比传统安装方式 【免费下载链接】update-golang update-golang is a script to easily fetch and install new Golang releases with minimum system intrusion 项目地址: https://gitcode.com/gh_mirrors/up/update-golang …...

IPBan快速入门:一键安装配置,立即阻止僵尸网络入侵

IPBan快速入门&#xff1a;一键安装配置&#xff0c;立即阻止僵尸网络入侵 【免费下载链接】IPBan Since 2011, IPBan is the worlds most trusted, free security software to block hackers and botnets. With both Windows and Linux support, IPBan has your dedicated or …...

把边界立起来,理解 ABAP Cloud 的几根主梁

项目里最让人头疼的时刻,往往不是写代码那天,而是系统升级后的那个早晨。很多团队都有过类似体验,业务明明没有改,几个增强点、几段直连标准表的逻辑、几次对未发布对象的调用,却在升级后一起冒烟。表面上看,这是兼容性问题,往深处看,其实是开发边界没有真正立起来。AB…...

医疗建筑粘滞阻尼器减震性能遗传算法优化设计【附模型】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导&#xff0c;毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;多目标优化模型与非线性阻尼参数化&#xff1a; 针对…...

OpenClaw工作空间管理工具:自动化配置维护与AI Agent开发效率提升

1. 项目概述&#xff1a;一个为OpenClaw工作空间量身打造的“管家”如果你正在使用OpenClaw&#xff0c;或者对AI Agent、Claude这类工具构建的自动化工作流感兴趣&#xff0c;那你大概率和我一样&#xff0c;经历过一个甜蜜的烦恼&#xff1a;随着项目越来越复杂&#xff0c;工…...

GPT_ALL:统一AI模型接口,构建高效可维护的AI应用架构

1. 项目概述&#xff1a;一个面向全栈开发者的AI集成工具箱最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“Eloquent-Algorithmics/GPT_ALL”。光看名字&#xff0c;你可能会觉得这又是一个围绕GPT的简单封装库&#xff0c;但实际深入进去&#xff0c;你会发现它的定位远…...