上云无忧 > 文档中心 > 天翼云分布式消息服务RocketMQ中Queue、生产组、消费组等术语解释
分布式消息服务RocketMQ
天翼云分布式消息服务RocketMQ中Queue、生产组、消费组等术语解释

文档简介:
Broker 消息中转角色,负责存储消息,转发消息,一般也称Server。在 JMS规范中称为Provider。RocketMQ一般在多个服务器部署broker集群,从而达到分布式、高可用、可横向扩展的目的。 Name Server Name Server是一个几乎无状态节点,可集群部署,节点之间无同步信息。它主要提供broker注册、Topic路由管理等功能。
*产品来源:中国电信天翼云。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

基本术语


Broker
消息中转角色,负责存储消息,转发消息,一般也称Server。在 JMS规范中称为Provider。RocketMQ一般在多个服务器部署broker集群,从而达到分布式、高可用、可横向扩展的目的。


Name Server
Name Server是一个几乎无状态节点,可集群部署,节点之间无同步信息。它主要提供broker注册、Topic路由管理等功能。


Topic
在RocketMQ中,topic类似于JMS规范中的队列,所有消息都是存放在不同的topic中,生产都与消费者都以topic名字进行生产与消费。(注:RocketMQ的topic并不是jms规范中广播消费topic的概念)。
一个Topic可以存在多个broker之中,这样topic就可以分布在不同的broker从而达到分布式的目的。
一个Topic下面,可以有多个队列,可以理解成分区,Topic的消息是放在不同队列下的。


Queue
在RocketMQ中,queue是存放数据的最小单位,queue是存在于topic下面的。在RocketMQ中,queue不同于JMS规范中的队列,可以理解为topic的分区。


生产组
一类Producer的集合名称,这类Producer通常发送一类消息,且发送逻辑一致,一般由业务系统负责产生消息。


消费组
一类Consumer的集合名称,这类Consumer通常消费一类消息,且消费逻辑一致,一般是后台系统负责异步消费。消费进度由存储在消费组上。


消费者实例
一个消费者实例代表消费组的一员,不同的消费者用不同的实例名字创建。


生产者实例
一个生产者实例代表生产者的一员,不同的生产者用不同的实例名字创建。


PUSH消费
Consumer的一种,应用通常向Consumer对象注册一个Listener接口,一旦收到消息,Consumer对象立刻回调Listener接口方法。在RocketMQ中,客户端会自动起线程消费消息,线程数是5-64,意味着,listener里面的方法,会被多线程执行。客户端内部可以根据堆积量进行调整,使用者不需要新启、管理消费线程。并有流控机制,当客户端缓存一定量消费不及时,会停止推送新消息。


PULL消费
Consumer的一种,应用通常主动调用Consumer的拉消息方法从Broker拉消息,主动权由应用控制,但实时性取决于应用主动拉取的频率。在PULL消费中,线程由应用自主决定。


广播消费
注意:使用消费模式,在很多使用场景都会带来影响或限制,在RocketMQ中,应尽量避免使用此消费模式。

在RocketMQ中,消费者有两种不同的方式消费topic中的消息,其中一种是广播消费。在广播消费模式下,一条消息被多个Consumer消费,即使这些Consumer属于同一个Consumer Group,消息也会被Consumer Group中的每个Consumer都消费一次,广播消费中的Consumer Group概念可以认为在消息划分方面无意义。

V1.x版本由于广播消费的消费进度,是保存在客户端的,对于很多使用场景会带来影响,在RocketMQ中,并不推荐使用此消费模式。


集群消费
一个Topic可以被一个或多个Consumer Group消费,每个Consumer Group有自己独立的消费进度,消费进度是保存在服务端的。

一个Consumer Group中的消费者实例可以平均分摊消费消息,做到负载均衡。例如某个Topic有9条消息,其中一个Consumer Group有3个不同的消费者实例(可能是3个进程,或者3台机器),那么每个实例只消费其中的3条消息。

在此消费模式下,可以做到Point-To-Point的消费,也可以做到JMS里面广播消费,能满足绝大部分场景,推荐使用此消费模式。


有序消息
消费消息的顺序要同发送消息的顺序一致,在RocketMQ中,主要有两种有序消息。


普通有序消息
有序消息的一种,在正常情况下可以保证完全的顺序消息,但是一旦发生通信异常,Broker重启,由于队列总数发生变化,哈希取模后定位的队列会变化,产生短暂的消息顺序不一致。

如果业务能容忍在集群异常情况(如某个Broker宕机或者重启)下,消息短暂的乱序,使用普通顺序方式比较合适。


严格有序消息
有序消息的一种。无论正常异常情况都能保证顺序,但是牺牲了分布式Failover特性,即Broker集群中只要有一台机器不可用,则整个集群都不可用(或者影响hash值对应队列的使用),服务可用性大大降低。

如果服务器部署为同步双写模式,此缺陷可通过备机自动切换为主避免,不过仍然会存在几分钟的服务不可用。

若业务能容忍短暂乱序,推荐普通有序消费。

相似文档
  • 典型场景特征: 异步解耦:系统间请求异步解耦,通过消息堆积与高性能特性,实现平谷削峰; 数据复制:通过消息将数据分发到多个系统进行处理; 事件通知:通过消息广播,高效地把分布式应用联系起来; 日志处理:高效地异步同步日志,进而做实时或离线分析。
  • Name Server Name Server是一个几乎无状态节点,一般集群部署(2个节点或以上),节点之间无同步信息。它主要提供broker注册、Topic路由管理等功能。 Broker 分布式消息中间件核心组件,提供消息生产、消费,主从同步、数据刷盘等核心功能。可以横向扩展、在线扩容以提高集群性能。每个Broker与Name Server集群的所有节点建立长连接,并定时注册Topic等信息。
  • 主题,订阅组,应用用户名 不能包含特殊字符,只能是字母数字下划线横线 单主题的消息生产消费TPS 5000 消息包体大小 在RocketMQ中,建议消息包体在50K以内;超过50K建议减小包体,过大的包体,会加大网络超时、网络拥堵、FLUSH_SLAVE_TIMEOUT等异常情况出现的概率; 普通和顺序消息:4 MB 延时消息:64 KB
  • 分布式消息服务MQTT是面向移动互联网以及物联网领域的轻量级消息中间件,扩展支持MQTT、MQTT-SN、CoAP、LwM2M或私有TCP协议等主流通信协议。可以在有限的资源条件下,为连接远程设备提供实时可靠的消息服务并支持数据高效分类存储、再处理,实现终端设备与云端应用互通。
  • 实例(Instance) 创建购买消息队列 MQTT 服务的实体单元,包含MQTT Broke和kafka集群节点。 MQTT Broker 消息队列 MQTT 提供的 MQTT 协议交互的服务端节点,用于完成与 MQTT 客户端消息收发和数据存储至消息队列。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部