随笔分类 -  RocketMQ源码解读

摘要:mqbroker if [ -z "$ROCKETMQ_HOME" ] ; then ## resolve links - $0 may be a link to maven's home PRG="$0" # 当前文件名 # need this for relative symlinks whil 阅读全文
posted @ 2021-08-26 21:53 gaojy 阅读(553) 评论(0) 推荐(0) 编辑
摘要:数据结构 在commitlog中维护了一组MappedFile,属性为MappedFileQueue,具体看一下里面包含哪些字段 public class MappedFileQueue { private static final Logger log = LoggerFactory.getLog 阅读全文
posted @ 2021-08-26 15:09 gaojy 阅读(421) 评论(0) 推荐(0) 编辑
摘要:简述 rocketmq发送的消息有以下类型,普通并发消息,分区有序消息,全局有序消息(topic分区数=1),延迟消息和事务消息。 发送方式分为同步发送,异步发送,指定队列发送,单向发送,批量发送。 DefaultMQProducerImpl#start public void start(fina 阅读全文
posted @ 2021-08-25 23:16 gaojy 阅读(197) 评论(0) 推荐(0) 编辑
摘要:前面讲解到对于consumequeue的文件恢复和过期文件删除,和flush的过程这边就不再重点阐述,实际上consumequeue中的存储单元是一个20个字节的数据,前8个字节存储消息在commitlog上的物理点位,接着是4字节的消息size,最后是8字节的tag的hash值。可以看做消息在co 阅读全文
posted @ 2021-08-24 00:36 gaojy 阅读(538) 评论(0) 推荐(0) 编辑
摘要:broker过期文件删除机制 RocketMQ会每隔10秒执行文件清理任务 this.scheduledExecutorService.scheduleAtFixedRate(new Runnable() { @Override public void run() { DefaultMessageS 阅读全文
posted @ 2021-08-23 21:37 gaojy 阅读(910) 评论(0) 推荐(0) 编辑
摘要:RocketMQ的消费模式分为集群消费和广播消费 启动机制分两种:pull模式和push模式 PULL模式 pull模式相对简单,获取到messaqueue,用户自行遍历,获取的到当前queue的消息进行处理,最后自行管理点位或者上报给broker /* * Licensed to the Apac 阅读全文
posted @ 2021-08-21 23:43 gaojy 阅读(440) 评论(0) 推荐(0) 编辑
摘要:RocketMQ事务支持 整体流程 实现细节 下面的代码是producer完成1-4的步骤: public TransactionSendResult sendMessageInTransaction(final Message msg, final LocalTransactionExecuter 阅读全文
posted @ 2021-08-15 12:31 gaojy 阅读(634) 评论(0) 推荐(0) 编辑
摘要:RocketMQ-broker存储机制-Index 数据结构 在indexFileHeader中存放着开始和结束的时间戳,开始和结束的物理点位,以及索引的个数。 索引文件加载 public boolean load(final boolean lastExitOK) { File dir = new 阅读全文
posted @ 2021-08-12 20:26 gaojy 阅读(174) 评论(0) 推荐(0) 编辑
摘要:RocketMQ-broker存储机制-HA数据同步 HA机制解决读写分离模式下slave与master的数据同步问题,在master broker高负载的情况下,实现slave broker的数据订阅。HA的主要实现逻辑在HaServer类中,入口在putMessage的handleHA()方法初 阅读全文
posted @ 2021-08-10 21:42 gaojy 阅读(223) 评论(0) 推荐(0) 编辑
摘要:RocketMQ-存储机制-刷盘机制 在理解RocketMQ刷盘实现之前,先理解一下上图展示的刷盘的2种实现的: 1)直接通过内存映射文件,通过flush刷新到磁盘 2)当异步刷盘且启用了对外内存池的时候,先write到writeBuffer,然后commit到Filechannel,最后flush 阅读全文
posted @ 2021-08-09 20:50 gaojy 阅读(766) 评论(0) 推荐(0) 编辑
摘要:broker的可用性策略-快速失败机制 具体实现在BrokerFastFailure,会执行一个定时任务扫描写消息任务的队列,当发现ospagecache繁忙的时候,就取出一个请求任务快速返回,直到OSPageCache不在繁忙。 然后会遍历任务队列,如果发现某一个请求任务已经超时,那么也会立即返回 阅读全文
posted @ 2021-08-04 20:55 gaojy 阅读(71) 评论(0) 推荐(0) 编辑
摘要:RocketMQ-broker状态管理及数据统计 在RocketMQ中,状态管理有BrokerStatsManager,ConsumerStatsManager,FilterServerStatsManager,其实现的方式都是一样的。 这边就拿BrokerStatsManager做介绍 一个Sta 阅读全文
posted @ 2021-08-04 20:20 gaojy 阅读(878) 评论(0) 推荐(0) 编辑
摘要:什么是ACL? 简称访问控制列表,涉及到用户,资源,权限,角色。 用户 用户是访问控制的基础要素,也不难理解,RocketMQ ACL必然也会引入用户的概念,即支持用户名、密码。 资源 资源,需要保护的对象,在RocketMQ中,消息发送涉及的Topic、消息消费涉及的消费组,应该进行保护,故可以抽 阅读全文
posted @ 2021-08-04 15:02 gaojy 阅读(1086) 评论(0) 推荐(0) 编辑
摘要:RocketMQ-broker存储机制 该篇主要讲解rocketmq-store模块,了解其存储机制,文件读写原理。 为何Rocketmq存储写文件这么快呢? 简单来说,总结两点: 1)pagecache+虚拟内存 2)零拷贝+java文件映射 Broker存储目录结构 commitlog 文件名是 阅读全文
posted @ 2021-08-01 21:23 gaojy 阅读(360) 评论(0) 推荐(0) 编辑
摘要:前言 在看完rocketmq通信层的源码之后,再来看namesrv的代码相对容易些,rocketmq的服务注册和发现并没有采用zookeeper这样的开源分布式协作框架,而是自研了一套服务注册和发现的服务,相对来说比较简单,多个namesrv之间不相互通信,也不是主从关系。 namesrv主要有两个 阅读全文
posted @ 2021-08-01 12:38 gaojy 阅读(128) 评论(0) 推荐(0) 编辑
摘要:RocketMQ日志 RocketMQ提供了一个日志模块,实现自定义的Appender,目的是为了将日志发送到MQ中。 可以参考文章https://blog.csdn.net/wanbf123/article/details/77988801 在RocketMQ的client模块中中,提供一个适配l 阅读全文
posted @ 2021-07-31 17:11 gaojy 阅读(1060) 评论(0) 推荐(0) 编辑
摘要:前言 RocketMQ的网络通信是基于Netty实现的RPC框架,这些RPC框架实现的功能都具有通用性,如sofa-bolt,分布式服务框架Dubbo,实现的网络通信模型都具有协议定义,同步请求,异步请求,单向请求,负载均衡,流控,心跳,重连等机制。 服务端NettyRemotingServer 通 阅读全文
posted @ 2021-07-31 15:52 gaojy 阅读(173) 评论(0) 推荐(0) 编辑
摘要:布隆过滤器 可以google一下对布隆算法的理解,总的来说就是可以精确判断某个key不存在,但是存在的判断结果有一定的误差,支持数据的插入和查询,对频繁删除数据的场景不支持。在分布式环境下可以配合redis的bitset命令,实现分布式布隆过滤器。 package org.apache.rocket 阅读全文
posted @ 2021-07-31 11:10 gaojy 阅读(240) 评论(0) 推荐(0) 编辑
摘要:为什么要使用消息队列 1 削峰填谷 2 系统解耦 3 异步处理 4 数据的最终一致性 RocketMQ部署 RocketMQ代码工程 broker:存放RocketMQ的Broker相关的代码,这里的代码可以用来启动Broker进程; client:存放RocketMQ的Producer、Consu 阅读全文
posted @ 2021-07-29 22:21 gaojy 阅读(72) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示