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

张裕  金牌会员 | 2024-11-14 10:16:19 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 701|帖子 701|积分 2103

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
简介

      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启动代码


  • 构建和初始Server,Server代表节点
  • 注册状态机,若需要的话
  • 注册自界说的处理器,扩展rpc服务,若有的话
  • Metrics组件初始化
  • 启动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组件 完成
  • 心跳 完成
  • 推选 完成
  • 日志 完成
  • 存储和快照/状态机
  • 集群成员变动  成员变动管理,节点的上线下线发现,dledger v0.4未实现,但计划中,未来版本实现
  • jraft  “double check”  多重分析,jraft比较忠实实现了raft算法,在dledger基础上,再研究jraft对raft更深入的熟悉

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张裕

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表