rocketmq基本概念介绍

author author     2023-03-04     444

关键词:

参考技术A 初步接触了RocketMQ后发现其与传统意义上的实现JMS协议的消息队列(如ActiveMQ)存在着不小的区别,很有必要对其中的一些概念做个说明。

如图所示为RocketMQ基本的部署结构,主要分为NameServer集群、Broker集群、Producer集群和Consumer集群四个部分。

NameServer的作用是注册中心,类似于Zookeeper,但又有区别于它的地方。每个NameServer节点互相之间是独立的,没有任何信息交互,也就不存在任何的选主或者主从切换之类的问题,因此NameServer与Zookeeper相比更轻量级。单个NameServer节点中存储了活跃的Broker列表(包括master和slave),这里活跃的定义是与NameServer保持有心跳。

Broker是具体提供业务的服务器,单个Broker节点与所有的NameServer节点保持长连接及心跳,并会定时将Topic信息注册到NameServer,顺带一提底层的通信和连接都是基于Netty实现的。
Broker中分master和slave两种角色,每个master可以对应多个slave,但一个slave只能对应一个master,master和slave通过指定相同的Brokername,不同的BrokerId (master为0)成为一个组。master和slave之间的同步方式分为同步双写和异步复制,异步复制方式master和slave之间虽然会存在少量的延迟,但性能较同步双写方式要高出10%左右。

另外,Broker中还存在一些非常重要的名词需要说明:

RocketMQ的Topic/Queue和JMS中的Topic/Queue概念有一定的差异,JMS中所有消费者都会消费一个Topic消息的副本,而Queue中消息只会被一个消费者消费;但到了RocketMQ中Topic只代表普通的消息队列,而Queue是组成Topic的更小单元,集群消费模式下一个消费者只消费该Topic中部分Queue中的消息,当一个消费者开启广播模式时则会消费该Topic下所有Queue中的消息。Topic和Queue的具体关系可以参考下图

Tags是Topic下的次级消息类型(注:Tags也支持 TagA || TagB 这样的表达式),可以在同一个Topic下基于Tags进行消息过滤。Tags的过滤需要经过两次比对,首先会在Broker端通过Tag hashcode进行一次比对过滤,匹配成功传到consumer端后再对具体Tags进行比对,以防止Tag hashcode重复的情况。Queue中具体的存储单元结构如下图:

单个Producer和一台nameserver保持长连接,定时查询topic配置信息,如果该nameserver挂掉,生产者会自动连接下一个nameserver,直到有可用连接为止,并能自动重连。与nameserver之间没有心跳。

单个Producer和与其关联的所有broker保持长连接,并维持心跳。默认情况下消息发送采用轮询方式,会均匀发到对应Topic的所有queue中。

单个Consumer和一台nameserver保持长连接,定时查询topic配置信息,如果该nameserver挂掉,消费者会自动连接下一个nameserver,直到有可用连接为止,并能自动重连。与nameserver之间没有心跳。

单个Consumer和与其关联的所有broker保持长连接,并维持心跳,失去心跳后,则关闭连接,并向该消费者分组的所有消费者发出通知,分组内消费者重新分配队列继续消费。

该配置用于在Topic不存在时自动创建,会造成的问题是自动新建的Topic只会存在于一台broker上,后续所有对该Topic的请求都会局限在单台broker上,造成单点压力。

broker master宕机,虽然理论上来说不能向该broker写入但slave仍然能支持消费,但受限于rocketmq的网络连接机制,默认情况下最多需要30秒,消费者才会发现该情况,这个时间可通过修改参数 pollNameServerInteval 来缩短。这个时间段内,发往该broker的请求都是失败的,而且该broker的消息无法消费,因为此时消费者不知道该broker已经挂掉。 直到消费者得到master宕机通知后,才会转向slave进行消费,但是slave不能保证master的消息100%都同步过来了,因此会有少量的消息丢失。但是消息最终不会丢,一旦master恢复,未同步过去的消息仍然会被消费掉。

rocketmq的消息架构模型以及核心概念

详细介绍了RocketMQ的基本概念,以及消息模型。文章目录1基本概念2消息模型3消费位移RocketMQ是一个纯Java开发的分布式的开源消息中间件,具有高性能、高可靠、高实时、分布式等特点。RocketMQ在阿里内部经历了多次双十... 查看详情

rocketmq中的基本概念

文章目录基本概念1消息模型(MessageModel)2消息生产者(Producer)3消息消费者(Consumer)4主题(Topic)5代理服务器(BrokerServer)6名字服务(NameServer)7拉取式消费 查看详情

分布式事务之深入理解什么是2pc3pc及tcc协议?

导读 在上一篇文章《【分布式事务】基于RocketMQ搭建生产级消息集群?》中给大家介绍了基于RocketMQ如何搭建生产级消息集群。因为本系列文章最终的目的是介绍基于RocketMQ的事物消息来解决分布式系统中的数据一致性问题,... 查看详情

rocketmq-topic创建过程

参考技术ArocketMq概念介绍rocketMq-namesrv介绍rocketMq-Topic创建过程rocketMq-producer介绍rocketMq-consumer介绍rocketMq-rebalance介绍rocketMq-并发消费过程rocketMq-串行消费过程rocketMq-broker介绍rocketMq-broker消息存储介绍rocketMq-commitLogrocketMq-index介绍roc... 查看详情

rocketmq基本概念

#基本概念----##1消息模型(MessageModel)RocketMQ主要由Producer、Broker、Consumer三部分组成,其中Producer负责生产消息,Consumer负责消费消息,Broker负责存储消息。Broker在实际部署过程中对应一台服务器,每个Broker可以存储多个Topic的消... 查看详情

rocketmq-rebalance介绍

参考技术ArocketMq概念介绍rocketMq-namesrv介绍rocketMq-Topic创建过程rocketMq-producer介绍rocketMq-consumer介绍rocketMq-rebalance介绍rocketMq-并发消费过程rocketMq-串行消费过程rocketMq-broker介绍rocketMq-broker消息存储介绍rocketMq-commitLogrocketMq-index介绍roc... 查看详情

云原生中间件rocketmq基本概念&功能特性(代码片段)

...及可扩展性,是适用于现代应用的最佳设计方案。什么是RocketMQRocketMQ官方定义为一个统一的消息传递引擎,轻量级的数据处理平台。ApacheRocketMQ是分布式和低延迟消息和流处理平台,性能和可靠性高,trillion-level(万亿级)能力和 查看详情

rocketmq(二)——基本概念

...个主题包含若干条消息,每条消息只能属于一个主题,是RocketMQ进行消息订阅的基本单位。topic:message1:nmessage:topic1:1一个生产者可以同时发送多种Topic消息;而一个消费者只对某种特定的Topic感兴趣,即只可以订阅和消费一种Topic消... 查看详情

rocketmq的初步认识,topicnameserverbroker相关概念的解释

...知识太基础了也在所不惜。绝对不能重蹈kafka的覆辙。在rocketMQ中,有topic、nameServer、broker三个最基本概 查看详情

rocketmq(12)——生产者介绍(代码片段)

生产者介绍RocketMQ的消费者有基于拉模式的DefaultMQPullConsumer和基于推模式的DefaultMQPushConsumer。而对于生产者而言基本上只有一个DefaultMQProducer,和一个支持事务的TransactionMQProducer。TransactionMQProducer继承自DefaultMQProducer,所以DefaultMQ... 查看详情

rocketmq(12)——生产者介绍(代码片段)

生产者介绍RocketMQ的消费者有基于拉模式的DefaultMQPullConsumer和基于推模式的DefaultMQPushConsumer。而对于生产者而言基本上只有一个DefaultMQProducer,和一个支持事务的TransactionMQProducer。TransactionMQProducer继承自DefaultMQProducer,所以DefaultMQ... 查看详情

rocketmq——角色与术语详解

原文地址:http://jaskey.github.io/blog/2016/12/15/rocketmq-concept/RocketMQ——角色与术语详解2016-12-15THU 15:48RocketMQ中有很多概念,其中包括一些术语和角色。理清楚基本的概念能有效的帮助理解RocketMQ的原理以及排查问题。角色:Producer... 查看详情

01-初识消息队列mq&&rabbit相关概念介绍

...峰2.2、引用解耦2.3、异步处理二、MQ的分类1.ActiveMQ2.Kafka3.RocketMQ4.RabbitMQ三、RabbitMQ1、RabbitMQ的基本概念2、RabbitMQ四大核心概念2.1、生产者2.2、交换机2.3、队列2.4、消费者3、RabbitMQ工作的原理&# 查看详情

rocketmq消息队列单机部署及使用

...http://blog.csdn.net/loongshawn/article/details/51086876相关文章:《RocketMQ消息队列单机部署及使用》《java编写简单消息队列。实现高德坐标变形服务》0RocketMQ简单介绍0.1介绍RocketMQ是一个消息中间件。消息中间件中有两个角色:消息生产... 查看详情

rocketmq(代码片段)

Rocketmq安装文章目录Rocketmq安装一、Rocketmq简介1消息队列优点:2rocketmq组成部分(1producer生产消息(2Consumer消费producer生产的消息(3BrokerServer接收存储分发消息(4NameServer提供路由元数据3rocketmq架构图4rocketmq的... 查看详情

c#多线程之旅——介绍和基本概念

...的使用和误用 原文地址:C#多线程之旅(1)——介绍和基本概念C#多线程之旅目录:C#多线程之旅(1)——介绍和基本概念C#多线程之旅(2)——创建和开始线程C#多线程之旅(3)——线程池C#多线程之旅(4)——APM初探C#多线程之旅(5)—... 查看详情

ddd的基本概念介绍

DDD的基本概念澄清目录什么是DDDUbiquitouslanguage(通用语言)Layeredarchitecture(分层架构)Entity(实体)ValueOjbect(值对象)Service(服务)Module(模块)Aggregate 查看详情

1基本概念介绍

1、设备PID为腾讯公司给每一类产品分配的号码,设备SN用来表示某一类产品中的各个设备,设置SN是用户自己定义;2、手机QQ能与JZ2440通讯的前提就是QQ与QQ能够通讯的前提,相互加好友  查看详情