RocketMQ
北海宇微
生命源于感动,感动让我们有了羁绊,让我们有了不舍,让我们在生去生命那—刻可以笑看人生一一一一我来过
展开
-
RocketMQ4.7.0新特性
三月24日(March 04, 2020)Apache RocketMQ发布了4.7.0最新版本。这次的新版本中增加了一个新特性(同步复制更改为管道方式)。同时也做了一些优化,包括防止客户端提交过于频繁,添加MessageExt的获取BrokerName方法等。修复的bug包括修复MessageClientIDSetter注入问题,修复关于异步发送重试的问题等。本文对部分更新进行翻译,然后补充一下最新的源码。(没办法每次都看英文版太累了,本文摘录了一部分自己感兴趣的内容。)原创 2020-05-09 17:58:20 · 939 阅读 · 0 评论 -
RocketMQ可视化管理控制台-使用指南
RocketMQ提供一个自带web项目rocketmq-console-***.war,对RocketMQ集群进行可视化管理。控制台提供运维管理,查询消息,查询消息轨迹,查看消费者状态,重置消费位点,死信队列,全球消息路由,查看订阅关系,资源报表,监控报警。原创 2020-05-06 15:19:32 · 2299 阅读 · 0 评论 -
RocketMQ安装部署
一、简介rocketMQ二、相关术语1.Nameserver 为整个MQ集群提供服务协调与治理,可集群部署。集群中Nameserver互相独立,彼此没有通信关系,每个节点独立记录维护完整的Topic、Broker的信息,及监控Broker的运行状态。2.Broker 为MQ集群提供消息中转、存储服务。Broker分为Master与Slave,一个Maste...原创 2020-05-06 11:20:13 · 2215 阅读 · 0 评论 -
RocketMQ生产者及消费者实现-官网实例
生产者有三种模式,同步,异步(提供重试机制),单向。消费者提供错误重试机制。原创 2020-05-05 19:04:25 · 3485 阅读 · 0 评论 -
RocketMQ常见问题--producer消息重试
RocketMQ生产者的消息重试是在异步模式下实现消息重发机制,这也是RocketMQ消息可靠性的一方面,话不多说标记一下源码。原创 2020-05-05 17:44:54 · 3021 阅读 · 0 评论 -
RocketMQ常见问题——顺序消费原理以及实现
RocketMQ提供局部顺序一致性的机制,Broker为每个Topic每个QueueID构建消息队列(ConsumerQueue),实现了单个队列中的消息严格有序。按照业务划分消息队列,然后将需要顺序消费的消息发往同一队列,消费者根据消息队列拉取消息进行消费,即可做到顺序消费。顺序消费原理1.生产者Producer端:生产端实现有序性,依赖于MessageQueue选择能力,Ro...原创 2020-05-05 17:28:30 · 2498 阅读 · 0 评论 -
RocketMQ常见问题-消息有序性
RocketMQ能做到顺序消费,但是单独依赖RocketMQ做不到消息有序性,保证消息有序性必须进行业务干预。通常来讲,顺序消费是指消息的消费顺序和消息的投递顺序保持一致,但是消息有序性是指消息参数的顺序与消息最终的使用顺序保持一致。我之前的观点是消息的生命周期包含消息产生源,消息发送,消息投递,消息消费,消息持久化(业务使用消息)。而实际上RocketMQ只负责了消息发送,消息投递,消息消费这三个阶段,在消息的整个生命周期中如果没有任何干预,当消息产生源产生无序的消息,消息队列(RocketMQ顺序原创 2020-05-05 16:44:58 · 2606 阅读 · 0 评论 -
RocketMQ消息存储--Index构建过程
RocketMQ中Broker在收到生产者发送的消息时,会将消息持久化到磁盘,这些消息以文件的形式存储在内存或者磁盘中,不能被直接用来消费,这个也很好理解,毕竟消息会有一个很大的体量,如果直接操作的话效率会很低。RocketMQ的Index提供一个全局索引,可以通过key和时间戳进行消息查询。原创 2020-05-04 16:57:08 · 1896 阅读 · 0 评论 -
RocketMQ消息存储--ConsumeQueue构建过程
通过源码追溯,我们发现Store包里的DefaultMessageStore是Consumer的构建入口(DefaultMessageStore做了很多工作并不仅限于构建ConsumerQueue)。DefaultMessageStore提供ConcurrentMap(private final ConcurrentMap<String/* topic */, Con...原创 2020-05-04 16:08:02 · 1231 阅读 · 1 评论 -
Rocketmq消息存储(顺序写,随机读)
RocketMQ消息存储高性能,底层依赖于nio提供的基于内核的I/O管理(ZeroCopy)。在RocketMQ中,文件的读取主要通过MappedByteBuffer进行操作,文件的中转主要通过FileChannel模型。文件基于内核操作,以及大部分的使用基于内存都是直接提高RocketMQ的关键点。对RocketMQ消息存储的理解,我是分两部分进行的,第一部分是梳理消息存储...原创 2020-05-04 09:24:35 · 4572 阅读 · 0 评论 -
Rocketmq消息存储(顺序写,随机读)--DefaultMessageStore的启动梳理
先写一半开个头,后面补吧。 消息存储是有ConsumerQueue和CommitLog配合完成。一个Topic里面有多个MessageQueue,每个MessageQueue对于一个ConsumerQueue.ConsumerQueue是一个逻辑队列里面记录者消息的物理存储地址,consumer根据消息的consumeQueue找到消息存储具体路径,从而读取里面信息Commit...原创 2020-05-03 20:22:54 · 1011 阅读 · 1 评论 -
ZeroCopy高性能零拷贝(DMA)
操作系统的核心是内核,独立于分内核应用程序,可以访问受保护的内存空间,也可以访问底层硬件设备。为了避免用户进程直接操作内核,保证内核安全,操作系统将虚拟内存划分为两部分,一部分是内核空间(Kernel-space),一部分是用户空间(User-space)。在传统文件读取流程中,数据信息需要经过用户空间之后才能在底层设备之间进行转换(比如磁盘与磁盘之间,网卡与网卡之间,磁盘与网卡,网...原创 2020-05-03 15:58:03 · 2702 阅读 · 0 评论 -
RocketMQ常见问题-服务高可用
MQ架构配置顺序写、随机读、零拷贝同步刷盘SYNC_FLUSH和异步刷盘ASUNC_FLUSH同步复制和异步复制,同步BrokerRoe配置发送端高可用双主双从架构:当Master不可用是,组内其他Master可用,但是机器资源不足的时候,需要手工将Slave转成Master消费端高可用Broker读写分离:Master提供读写,Slave支持读Consumer消费自动切换:当Ma...原创 2020-05-03 12:02:40 · 1624 阅读 · 0 评论 -
RocketMQ常见问题-RocketMQ消息堆积问题-TOPIC队列扩容
划个重点:RocketMQ是按照队列进行消息负载的,如果consumer中的一台机器由于机器硬件、系统、远程RPC或者JavaGC等原因导致该机器上的消息队列不能及时处理,整个消息队列的消息都会堆积。原创 2020-05-03 11:48:52 · 13120 阅读 · 2 评论 -
RocketMQ常见问题-RocketMQ消息堆积问题-consumer消费异常
工具:RocketMQ控制台现象描述业务量无明显高峰,RocketMQ服务器性能正常,consumer服务器性能正常,这种情况下RocketMQ服务告警。问题分析1.确认消费者GROUP状态,GROUP管理-选中GROUP-消费者状态查询,查看消费者GROUP状态是否高于预期2.消息轨迹跟踪,消息轨迹-创建查询-Message ID查询-输入对于的消息。如果消息阻塞会出现,消息投递给B...原创 2020-05-03 10:55:18 · 4216 阅读 · 0 评论 -
RocketMQ常见问题-RocketMQ消息堆积问题
RocketMQ消息堆积主要分为三个层次的问题: 其一是producer生产速率过快,什么场景呢,比如producer故障,比如DOS攻击,比如业务高峰(超过企业预估的,例如 12306订票,双十一下单,这些一开始的时候都有超过预期的情况)。 其二是Broker消息堆积,比如Broker的性能瓶颈,Broker同步策略导致消...原创 2020-05-03 09:57:58 · 10600 阅读 · 0 评论 -
RocketMQ常见问题-如何保证消息传递的可靠性
作为一个消息中间件,RocketMQ的消息可靠性就是指确保消息数据不丢失。具体而言就是从消息在生产者产生,经过服务端投递,一定能被消费者消费。消息生产者Producer消息发送有三种方式:同步,异步,单向(Oneway)1.同步发送 ,需要同时等待SendResult sendResult = producer.send(message);2.异步发送,异步线程发送出去...原创 2020-05-02 20:02:43 · 3522 阅读 · 0 评论 -
RocketMQ常见问题-消息重复消费和消息重复的问题
RocketMQ不解决消息重复问题,RocketMQ不解决消息重复问题,RocketMQ不解决消息重复问题,重要的事情说三遍。基本上说我很讨厌有人问这个问题,问这个问题首先你对消息的生命周期缺乏理解,其次RocketMQ的定位不是很清楚,RocketMQ单机写入TPS单实例约7万条/秒,单机部署3个Broker,可以跑到最高12万条/秒,消息大小10个字节。换句话说单机RocketMQ的每分钟...原创 2020-05-02 18:05:01 · 5408 阅读 · 0 评论 -
RocketMQ启动多个Producer实例
RocketMQ启动过多个Producer实例,本质就是producer实例的问题方法一:采用RocketMQ 自身管理Producer实例,这种情况可以通过设置不同的InstanceName来实现。方法二:将Producer对象交给Spring管理,通过Spring容器生成两个不同的Producer实例。原创 2020-04-30 16:03:26 · 2207 阅读 · 0 评论 -
MQ同类产品对比以及选型-RocketMq的背后故事
2012年RocketMQ是阿里巴巴开源的消息中间件,着眼与用于交易核心消息的流转,做为阿里巴巴开源的消息中间件,主要面向有序消息场景能够提供更大的消息堆积能力,拉模式,消息持久化在磁盘。。阿里巴巴消息中间件起源于2001年的五彩石项目,Notify在这期间应运而生,用于交易核心消息的流转。到2012年RocketMQ正式开源RocketMQ名字的由来没有找到相关人的表述,...原创 2020-04-30 12:40:26 · 2672 阅读 · 0 评论 -
MQ同类产品对比以及选型-Kafka的背后故事
Kafka诞生于LinkedIn,使用Scala语言编写,目标是为处理实时数据提供一个统一、高通量、低等待的平台。Kafka设计之初是为了解决Linkedin公司数据管道(datapipe)问题(主要是监控和跟踪系统的需求,也就是日志)。截至2015年8月, Kafka帮助LinkedIn的使用量增长了超过1万亿条消息,每天消耗的数据超过1 PB。Kafka名字的由来 ...原创 2020-04-30 10:35:46 · 2702 阅读 · 0 评论 -
MQ同类产品对比以及选型-RabbitMQ的背后故事
RabbitMQ是采用Erlang语言实现的AMQP开源版本,用于解决JMS消息协议标准化使得大型系统之间应用程序之间的结合变动的脆弱(JMS的解耦特性)。为什么叫RabbitMQ 兔子行动非常迅速而且繁殖起来也非常疯狂,所以就把Rabbit用作这个分布式软件的命名----《RabbitMQ实战》。RabbitMQ产生背景1、消息队列系统最早由26岁孟买工程师...原创 2020-04-30 09:16:51 · 1288 阅读 · 0 评论 -
JMS接口API和技术规范
JMS(JAVA Message Service,java消息服务)API是Java平台上有关面向消息中间件(MOM)的技术规范,2001年6月25日sun公司发布第一个版本,后经过多次完善。它是一个接口和语义的集合,这些语义定义了应用程序组件基于JavaEE平台创建、发送、接收和读取消息的标准和规范。它使分布式通信耦合度更低,消息服务更加可靠以及异步性。原创 2020-04-29 16:22:29 · 2878 阅读 · 0 评论 -
RocketMq 消费者
总结一下RMQ消费者的一些问题。原创 2020-04-28 16:17:25 · 2126 阅读 · 0 评论 -
RocketMQ 消费者Consumer消息的消费策略
RocketMQ 消费者Consumer消息的消费策略简略记录一下消费者消费消息跟group和消息队列(准确点说是消息队列的offset)以及消费模式有关(以下未特别说明默认为集群模式)。1.对同一个group的消费者实例,每个消费者group只能消费一次消息。消费完成后移动消息队列的offset,保证其他消费者不会重复消费。2.多个Group消费者,每个group都会订阅一份消息,每个...原创 2020-04-23 11:27:06 · 2485 阅读 · 0 评论 -
RocketMQ生产者Producer启动时是否需要指定TOPIC
Producer启动是和Name Server建立连接不需要指定TOPIC,Producer发送消息需要和Broker(master)建立连接需要指定TOPIC。关于这个结论我们可以从Producer的使用和连接机制着手理解,理论结合实际嘛。启动代码和消息发送代码/*1.producer的配置 init-start方法在实例化对象的时候执行,通过配置文件我们可以直观的发现“...原创 2020-04-23 10:08:12 · 3069 阅读 · 0 评论