目录 1.DLedgerEntryPusher 1.1 核心类图 1.2 构造方法 1.3 startup 2.EntryDispatcher 详解 2.1 核心类图 2.2 Push 请求类型 2.3 doWork 方法详解 3.EntryHandler 详解 3.1 核心类图 3.2 handlePush 3.3 doWork 方法详解 4.QuorumAckChecker 4.1 类图 4.2 doWork 详解 温馨提示:源码分析RocketMQ DLedger 多副本系列连载中: 1.…
目录 1.DLedger关于选主的核心类图 1.1 DLedgerConfig 1.2 MemberState 1.3 raft协议相关 1.4 DLedgerRpcService 1.5 DLedgerLeaderElector 1.6 DLedgerServer 2.源码分析Leader选举 2.1 DLedgerLeaderElector 类图 2.2 启动选举状态管理器 2.3 选举状态机状态流转 2.4 投票与投票请求 2.5 心跳包与心跳包响应 温馨提示:<RocketMQ技术内幕>…
目录 1.DLedger 存储相关类图 1.1 DLedgerStore 1.2 DLedgerMemoryStore 1.3 DLedgerMmapFileStore 2.DLedger 存储 对标 RocketMQ 存储 3.DLedger 数据存储格式 4.DLedger 索引存储格式 5.思考 @(本节目录) RocketMQ DLedger 的存储实现思路与 RocketMQ 的存储实现思路相似,本文就不再从源码角度详细剖析其实现,只是点出其实现关键点.我们不妨简单回顾一下 Commi…
Netty源码分析第四章: pipeline 第四节: 传播inbound事件 有关于inbound事件, 在概述中做过简单的介绍, 就是以自己为基准, 流向自己的事件, 比如最常见的channelRead事件, 就是对方发来数据流的所触发的事件, 己方要对这些数据进行处理, 这一小节, 以激活channelRead为例讲解有关inbound事件的处理流程 在业务代码中, 我们自己的handler往往会通过重写channelRead方法来处理对方发来的数据, 那么对方发来的数据是如何走到chan…
Netty源码分析第五章: pipeline 第五节: 传播outBound事件 了解了inbound事件的传播过程, 对于学习outbound事件传输的流程, 也不会太困难 在我们业务代码中, 有可能使用wirte方法往写数据: public void channelActive(ChannelHandlerContext ctx) throws Exception { ctx.channel().write("test data"); } 当然, 直接调用write方法是不能往对方…
Netty源码分析第四章: pipeline 第6节: 传播异常事件 讲完了inbound事件和outbound事件的传输流程, 这一小节剖析异常事件的传输流程 首先我们看一个最最简单的异常处理的场景: @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { throw new Exception("throw Exception"); } @Override…
目录 1.发送消息轨迹流程 1.1 DefaultMQProducer构造函数 1.2 SendMessageTraceHookImpl钩子函数 1.3 TraceDispatcher实现原理 2. 消息轨迹数据如何存储 2.1 使用系统默认的主题名称 2.2 用户自定义消息轨迹主题 本文沿着<RocketMQ消息轨迹-设计篇>的思路,从如下3个方面对其源码进行解读: 发送消息轨迹 消息轨迹格式 存储消息轨迹数据 @(本节目录) 1.发送消息轨迹流程 首先我们来看一下在消息发送端如何启用消息轨…
目录 1.BrokerController#initialAcl 2.PlainAccessValidator 2.1 类图 2.2 构造方法 2.3 parse方法 2.4 validate 方法 3.PlainPermissionLoader 3.1 类图 3.2 PlainPermissionLoader构造方法 3.3 load 3.4 watch 3.5 validate 4.AclClientRPCHook 4.1 doBeforeRequest 有关RocketMQ ACL的使用请…
rocketmq在存储消息的时候,最终是通过mmap映射成磁盘文件进行存储的,本文就消息的存储流程作一个整理.源码版本是4.9.2 主要的存储组件有如下4个: CommitLog:存储的业务层,接收"保存消息"的请求 MappedFile:存储的最底层对象,一个MappedFile对象就对应了一个实际的文件 MappedFileQueue:管理MappedFile的容器 AllocateMappedFileService:异步创建mappedFile的服务 对于rocketmq来说,存…
目录 1.RocketMQ DLedger 多副本日志复制流程图 1.1 RocketMQ DLedger 日志转发(append) 请求流程图 1.2 RocketMQ DLedger 日志仲裁流程图 1.3 RocketMQ DLedger 从节点日志复制流程图 2.RocketMQ DLedger 多副本日志复制实现要点 2.1 日志编号 2.2 追加与提交机制 2.3 日志一致性如何保证 上一篇 源码分析 RocketMQ DLedger(多副本) 之日志复制(传播) ,可能有不少读者朋…