云主机

  • 云主机 > 使用指南 > 什么是消息队列 RocketMQ?

    什么是消息队列 RocketMQ?

    最近更新时间: 2019-09-06 11:04:00

    消息队列 RocketMQ 是基于高可用分布式集群技术的云正式商用的专业消息中间件,既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。

    核心概念

    • Topic:消息主题,一级消息类型,生产者向其发送消息。
    • 生产者:也称为消息发布者,负责生产并发送消息至 Topic。
    • 消费者:也称为消息订阅者,负责从 Topic 接收并消费消息。
    • 消息:生产者向 Topic 发送并最终传送给消费者的数据和(可选)属性的组合。
    • 消息属性:生产者可以为消息定义的属性,包含 Message Key 和 Tag。
    • Group:一类生产者或消费者,这类生产者或消费者通常生产或消费同一类消息,且消息发布或订阅的逻辑一致。

    消息队列 RocketMQ 涉及的概念的详细解释,请参见RocketMQ名词解释

    消息收发模型

    消息队列 RocketMQ 支持发布/订阅模型,消息生产者应用创建 Topic 并将消息发送到 Topic。消费者应用创建对 Topic 的订阅以便从其接收消息。通信可以是一对多(扇出)、多对一(扇入)和多对多。
    具体通信如下图所示。

    消息收发模型

    • 生产者集群: 用来表示发送消息应用,一个生产者集群下包含多个生产者实例,可以是多台机器,也可以是一台机器的多个进程,或者一个进程的多个生产者对象。
      一个生产者集群可以发送多个 Topic 消息。发送分布式事物消息时,如果生产者中途意外宕机,Broker 会主动回调生产者集群的任意一台机器来确认事务状态。
    • 消费者集群:用来表示消费消息应用,一个消费者集群下包含多个消费者实例,可以是多台机器,也可以是多个进程,或者是一个进程的多个消费者对象。
      一个消费者集群下的多个消费者以均摊方式消费消息。如果设置的是广播方式,那么这个消费者集群下的每个实例都消费全量数据。
      一个消费者集群对应一个 Group ID,一个 Group ID 可以订阅多个 Topic,如图中的 Group 2 所示。Group 和 Topic 的订阅关系可以通过直接在程序中设置即可。

    产品功能

    消息队列 RocketMQ 在多个地域(Region)提供了高可用消息云服务。单个地域内采用多机房部署,可用性极高,即使整个机房都不可用,仍然可以为应用提供消息发布服务。
    消息队列 RocketMQ 提供 TCP 协议的多语言接入方式,方便不同编程语言开发的应用快速接入消息队列 RocketMQ 消息云服务。您可以将应用部署在七牛云 ECS、企业自建云,或者嵌入到移动端、物联网设备中与消息队列 RocketMQ 建立连接进行消息收发;同时,本地开发者也可以通过公网接入消息队列 RocketMQ 服务进行消息收发。

    TCP接入

    提供专业、可靠、稳定的 TCP 协议的 SDK 接入服务。支持的语言包括 Java、C/C++ 以及 .NET。

    Web 控制台

    支持 Topic 管理、Group 管理、消息查询、消息轨迹展示和查询以及资源报表。

    消息类型

    • 普通消息:消息队列 RocketMQ 中无特性的消息,区别于有特性的定时/延时消息、顺序消息和事务消息。
    • 事务消息:实现类似 X/Open XA 的分布事务功能,以达到事务最终一致性状态。
    • 定时/延时消息:允许消息生产者对指定消息进行定时(延时)投递,最长支持 40 天。
    • 顺序消息:允许消息消费者按照消息发送的顺序对消息进行消费。

    特色功能

    • 消息查询:消息队列 RocketMQ 提供了三种消息查询的方式,分别是按 Message ID、Message Key 以及 Topic 查询。
    • 消息轨迹:通过消息轨迹,能清晰定位消息从生产者发出,经由消息队列 RocketMQ 服务端,投递给消息消费者的完整链路,方便定位排查问题。
    • 集群消费和广播消费:当使用集群消费模式时,消息队列 RocketMQ 认为任意一条消息只需要被消费者集群内的任意一个消费者处理即可;当使用广播消费模式时,消息队列 RocketMQ 会将每条消息推送给消费者集群内所有注册过的消费者,保证消息至少被每台机器消费一次。
    • 重置消费位点:根据时间或位点重置消费进度,允许用户进行消息回溯或者丢弃堆积消息。
    • 死信队列:将无法正常消费的消息储存到特殊的死信队列供后续处理。
    • 资源报表:消息生产和消费数据的统计功能。通过该功能,您可查询在一段时间范围内发送至某 Topic 的消息总量或者 TPS(消息生产数据),也可查询在一个时间段内某 Topic 投递给某 Group ID 的消息总量或 TPS(消息消费数据)。

    应用场景

    • 削峰填谷:诸如秒杀、抢红包、企业开门红等大型活动时皆会带来较高的流量脉冲,或因没做相应的保护而导致系统超负荷甚至崩溃,或因限制太过导致请求大量失败而影响用户体验,消息队列 RocketMQ 可提供削峰填谷的服务来解决该问题。
    • 异步解耦:对于交易系统而言每笔交易订单数据的产生会引起几百个下游业务系统的关注,包括物流、购物车、积分、流计算分析等等,整体业务系统庞大而且复杂,消息队列 RocketMQ 可实现异步通信和应用解耦,确保主站业务的连续性。
    • 顺序收发:细数日常中需要保证顺序的应用场景非常多,比如证券交易过程时间优先原则,交易系统中的订单创建、支付、退款等流程,航班中的旅客登机消息处理等等。与先进先出(First In First Out,缩写 FIFO)原理类似,消息队列 RocketMQ 提供的顺序消息即保证消息 FIFO。
    • 分布式事务一致性:交易系统、支付红包等场景需要确保数据的最终一致性,大量引入消息队列 RocketMQ 的分布式事务,既可以实现系统之间的解耦,又可以保证最终的数据一致性。
    • 大数据分析:数据在“流动”中产生价值,传统数据分析大多是基于批量计算模型,而无法做到实时的数据分析,利用七牛云消息队列 RocketMQ 与流式计算引擎相结合,可以很方便的实现将业务数据进行实时分析。
    以上内容是否对您有帮助?
  • Qvm free helper
    Close