深入浅出RocketMQ设计思想
文章平均质量分 91
优秀的程序员的技术栈中不能只有CRUD,消息队列几乎是每个后端程序员都会用到的中间件,希望通过这个专栏,能够让你对消息队列的掌握情况、架构能力都有一个质的飞跃。
PS:更新过程中统一定价为最低价,更新完毕之后会恢复原价,所以各位同学,早买早优惠呀
小王曾是少年
通信工程本硕 for NJU ;
《Intelligent Passive Eavesdropping in Massive MIMO-OFDM Systems via Reinforcement Learning》IEEE WCL 作者;
申请国家发明专利2项;
淘天集团后端开发;
有事尽量私信
展开
-
【初探篇】初识消息队列 & RocketMQ
各位读者大家好,经过一段时间的筹备,我的新专栏《深入浅出RocketMQ设计思想》今天正式开始更文啦。原创 2022-04-28 15:26:16 · 2961 阅读 · 149 评论 -
RocketMQ 消息收发全流程图解(设计师的视角分析)
文章目录消息发送模型消息发送流程消费消息模型消息发送模型既然RocketMQ是消息队列,如果我们站在设计者的角度去思考的话,我一定会给它设计一个存储消息的机制:为了做到先发过来的消息优先被消费,很自然的就能想到使用队列这种数据结构;参考Redis的发送订阅模型,消费者通过订阅主题(Topic)下的消息实现定向投放;此外,为了提高MQ的可靠性,我们还会设计一些冗余策略来保证消息不丢失。从存储模型来看,MQ里有三个比较重要的概念:Broker:即Server,接受客户端的连接,实现服务T原创 2022-05-05 10:07:05 · 4361 阅读 · 73 评论 -
分模块详解 RocketMQ 架构原理
RabbitMQ使用了一个注册中心作为发现与注册服务器,Producer向Broker发送消息,Consumer从Broker处接收消息,Broker使用主从结构来进行消息的存储(为了方便理解,我画了最经典的一主三从结构)。接下来,我们将对每一个部分做更详细的拆解分析。原创 2022-05-15 12:01:28 · 6021 阅读 · 140 评论 -
RocketMQ 消息投递解析—— 时序图、调用链、源码级解析
在前几篇文章里我曾经也画过消息投递的模型图,这里再来简单复习一下:消息生产者集群从注册中心获取到路由信息(负载均衡),然后将消息发送给Broker集群;注册中心是无状态集群,即每一台服务器都不影响其他的服务器。原创 2022-05-24 20:33:35 · 1974 阅读 · 114 评论 -
RocketMQ 消息路由解析——图解、源码级解析
???? Java学习:Java从入门到精通总结???? Spring系列推荐:Spring源码解析???? 最近更新:2022年1月26日???? 个人简介:通信工程本硕????、代码界新人????。我的故事充满机遇、挑战与翻盘,欢迎关注作者来共饮一杯鸡汤???? 点赞 ???? 收藏 ⭐留言 ???? 都是我最大的动力!文章目录消息路由获取Topic获取路由信息函数tryToFindTopicPublishInfoTopic 路由信息表合并路由数据消息路由在RocketMQ的系原创 2022-06-04 10:44:44 · 2295 阅读 · 167 评论 -
RocketMQ 消息负载均衡策略解析——图解、源码级解析
Producer发送消息时,会首先获取Topic路由信息(通过本地 + 注册中心拉取),RocketMQ的架构里有多个Broker服务器,而消息队列也会存在于多个Broker服务器里,所以就需要负载均衡策略来将流量尽可能均匀的打到所有服务器上。本章节就介绍一下RocketMQ中常用的四种负载均衡策略。找到Producer发送消息时选择消息队列的逻辑,在类中定义了方法:进入到方法里:上述代码的类中定义了方法:根据源码可以很清楚地看到,默认策略就是依次选择消息队列进行发送,具体的执行细节如下:如何选一个原创 2022-07-01 21:52:38 · 3765 阅读 · 110 评论 -
RocketMQ 顺序消息解析——图解、源码级解析
优秀的程序员不应该只是CRUD原创 2022-07-30 21:25:37 · 3305 阅读 · 105 评论 -
RocketMQ 延迟消息解析——图解、源码级解析
文章目录定义DDMQdelay service的设计细节RocketMQ中的延迟消息生产者发送延迟消息Broker端处理延迟消息延迟消息与消息重试机制的关系定义延迟消息: 生产者发送消息之后,不能立刻被消费者消费,而是应该等到一定时间之后才可以被消费。例如: 在淘宝购物时,当用户提交一个订单之后,如果30min还没有支付的话,就给用户发送一条提示消息Broker提供延迟消息功能的核心思路是一致的:将延迟消息先存放在一个临时的空间里,等到期后才发送给Topic如上图所示,实现延迟消息的步骤如下:原创 2022-08-05 19:39:09 · 2142 阅读 · 123 评论 -
RocketMQ 容错策略 解析——图解、源码级解析
📆 最近更新:2022年8月12日🍊 个人简介:通信工程本硕💪、Java程序员🌕。做过科研paper,发过专利,优秀的程序员不应该只是CRUD。原创 2022-08-12 20:11:53 · 2262 阅读 · 91 评论 -
RocketMQ 发送失败重试机制 解析——图解、源码级解析
文章目录重试机制重试机制源码分析重试设置重试机制由于在复杂的分布式系统中,经常会有网络波动、服务器宕机、程序出现异常,所以就有可能出现消息发送或消费失败的问题。所以MQ就必须提供消息重试的机制,如果没有消息重试,就可能会产生消息丢失的问题,对系统产生较大的影响,整体示意图如下图所示:MQ消费者的消费逻辑失败时,可以通过设置返回状态来达到消息重试的结果。MQ消息重试只对集群消费方式生效,广播消息不提供失败重试的特性,消费失败后会继续往后消费新的消息。重试机制源码分析/** * 发送消息原创 2022-08-20 08:55:44 · 2460 阅读 · 108 评论 -
RocketMQ 消息存储机制分析
作为一个消息中间件,消息存储的效率直接影响到消息存取的效率,RocketMQ的单机吞吐量达到10w级别也和其存储设计有关,文本就对其进行一些探索。原创 2022-08-26 19:26:43 · 3122 阅读 · 104 评论 -
RocketMQ 消费者监听模型 解析——图解、源码级解析
文章目录前面已经把RocketMQ发送消息的主要流程梳理了一遍,接下来我将介绍消费者消费消息的源码及流程,主要包含但不仅限于一下内容:消息消费模式消息消费的流程消费者负载均衡算法消费失败如何进行重试消息如何进行重新投递...原创 2022-09-02 19:23:48 · 3141 阅读 · 138 评论 -
RocketMQ Push消息给消费者 解析——图解、源码级解析
文章目录概述Push消息消费流程开启消息消费接收消息概述RocketMQ中消费者有两种方式获得消息来消费:Push模式和Pull模式Push模式:服务端将消息推送到客户端Pull模式:客户端不断请求服务端,或许消息实际上这两种模式的底层实现都是采用的Consumer主动拉取消息的方式在Push方式里,把Consumer轮询过程封装起来了,并注册了MessageListener监听器,当拉取到消息后唤醒监听器来消费,所以感觉消息就像是被服务端推过来的一样在Pull模式中,Consumer原创 2022-09-09 19:30:37 · 1929 阅读 · 92 评论 -
RocketMQ 消费者消息回发 解析——图解、源码级解析
📆 最近更新:2022年9月9日🍊 个人简介:通信工程本硕💪、Java程序员🌕。做过科研paper,发过专利,优秀的程序员不应该只是CRUD。原创 2022-09-16 21:52:31 · 2143 阅读 · 95 评论 -
RocketMQ 消费者拉取消息(Pull) 解析——图解、源码级解析
📆 最近更新:2022年9月30日🍊 个人简介:通信工程本硕💪、Java程序员🌕。做过科研paper,发过专利,优秀的程序员不应该只是CRUD。原创 2022-09-30 20:26:54 · 3019 阅读 · 100 评论 -
RocketMQ 消费者Rebalance算法 解析——图解、源码级解析
📆 最近更新:2022年10月15日🍊 个人简介:通信工程本硕💪、Java程序员🌕。做过科研paper,发过专利,优秀的程序员不应该只是CRUD。原创 2022-10-15 20:38:37 · 2617 阅读 · 103 评论 -
RocketMQ 消息失败重试 解析——图解、源码级解析
📆 最近更新:2022年10月24日🍊 个人简介:通信工程本硕💪、Java程序员🌕。做过科研paper,发过专利,优秀的程序员不应该只是CRUD。原创 2022-10-24 21:46:17 · 3357 阅读 · 94 评论 -
RocketMQ 消息重新投递 解析——图解、源码级解析
死信队列重新投递当消息消费失败时,消息队列RocketMQ会自动进行消息重试,达到最大重试次数后,如果依然没有消费成功的话,说明消费者无法正常消费该消息了。在这种情况下,RocketMQ不能直接把消息给丢弃掉,而是会将其发送到该消费者对应的死信队列中。定时重新投递...原创 2022-11-04 19:27:08 · 1880 阅读 · 95 评论 -
RocketMQ NameServer保障数据一致性分析
文章目录路由注册角度路由剔除路由发现路由注册角度路由剔除路由发现原创 2022-12-11 17:02:30 · 2003 阅读 · 110 评论 -
RocketMQ 存储优化技术 解析——图解、源码级解析
写入消息时,`CommitLog`会先从`MappedFileQueue`(队列)中获取一个`MappedFile`,`MappedFile`对象的预分配过程如下图所示:原创 2023-01-13 19:49:02 · 2797 阅读 · 95 评论 -
RocketMQ NameServer 概览
再次回看一下RocketMQ的集群架构,里面的注册中心就是NameServer,它是一个轻量级的Topic路由注册中心,角色类似于Dubbo里的ZooKeeper,支持BrokerBroker管理路由信息管理BrokerNameServer接收Broker集群的注册信息并保存下来作为路由信息。此外,还会提供心跳检测机制,监测Broker是否“存活”。NameServer会保存关于Broker集群的整个路由信息和用于客户端查询的队列信息,之后Producer和Consumer就可以通过。原创 2022-11-18 19:46:17 · 3077 阅读 · 104 评论 -
RocketMQ Broker消息处理流程及部分源码解析
📆 最近更新:2023年2月10日🍊 个人简介:通信工程本硕 for NJU💪、Java程序员🌕。做过科研paper,发过专利,优秀的程序员不应该只是CRUD。原创 2023-02-10 21:53:03 · 3493 阅读 · 83 评论 -
RocketMQ Broker消息处理流程剩余源码解析
📆 最近更新:2023年3月4日🍊 个人简介:通信工程本硕 for NJU💪、Java程序员🌕。做过科研paper,发过专利,优秀的程序员不应该只是CRUD。原创 2023-03-04 21:19:39 · 2299 阅读 · 77 评论 -
RocketMQ 事务消息 原理及使用方法解析
📆 最近更新:2023年3月24日🍊 个人简介:通信工程本硕 for NJU💪、Java程序员🌕。做过科研paper,发过专利,优秀的程序员不应该只是CRUD。原创 2023-03-24 20:30:52 · 2994 阅读 · 66 评论 -
RocketMQ 事务消息 详解
事务消息发送流程、源码梳理原创 2023-04-09 10:14:12 · 3528 阅读 · 71 评论 -
RocketMQ 消费者Rebalance 解析——图解、源码级解析
文章目录什么是消息负载均衡?Rebalance的原因负载策略使用方法消息消费默认策略什么是消息负载均衡?Rebalance机制: 将一个Topic下的多个队列在同一个消费者组下的多个消费者实例之间进行重新分配。该机制的目的是为了提高消息的并行处理能力例如: 一个Topic下有5个队列,如果只有一个消费者的话,这个消费者就会处理所有队列的消息。如果有两个消费者的话,就可以两个消费者共同处理这5个队列但Rebalance机制也存在明显的限制与危害:如果消费者组下的消费者实例数量大于队列数量时,多原创 2023-04-15 11:27:20 · 2087 阅读 · 70 评论