分布式消息服务RabbitMQ是基于高可用、分布式集群技术,完全兼容RabbitMQ开源社区,支持消息路由、事务消息、优先级队列、延迟队列、死信队列、镜像队列等功能的消息云服务。用户可开箱即用,无需部署免运维,从而实现快速上云。
产品示意图
分布式消息服务RabbitMQ发布订阅基本流程如下:
1、生产者生产的消息,通过TCP连接的信道首先发布到指定的交换机上;
2、交换机通过路由键(RoutingKey)的匹配,选择对应的队列进行投递;
3、消费者订阅队列,消费队列的消息。
核心概念
对照产品示意图,分布式消息服务RabbitMQ的核心概念如下:
- Producer:消息生产者,即消息的发布方, 生产者生产的消息,首先发布到指定的交换机上,交换机通过路由键(RoutingKey)的匹配,选择对应的队列进行投递。消费者订阅队列,消费队列的消息。
- Connection:客户端与Broker间的TCP连接。
- Channel:信道,每个连接采用多路复用,包含多个信道。producer与Broker间采用信道传递数据。
- Broker:RabbitMQ服务节点,集群由多个节点组成。
- Vhost:虚拟机,一个节点下包含多个vhost,vhost间的exchange,queue相互隔离。就好比一台物理机上(Broker)部署多台虚机(vhost),虚拟机采用不同的用户名密码登录,实现多租户。
- Exchange:交换机,消息首先会传递到交换机,由交换机匹配路由键(RoutingKey)决定投递到哪个queue。
- Queue:队列,存储消息的数据结构。类比小区的快递柜。
- Binding:绑定,交换机与队列间通过路由键(RoutingKey)进行绑定起来。
- Consumer,消费者,即消息的接受方。
更多信息请参见名词解释。
开源对比
相较于开源自建RabbitMQ,分布式消息服务RabbitMQ在低成本运维、堆积性、可观测性、集群可用性、安全保证、操作日志、OpenApi访问等方面更具优势。
对比项 | 开源自建 | 分布式消息服务RabbitMQ版 |
---|---|---|
低成本运维 | 需要专业人员资源规划、部署、运维 | 一键开通,全托管。提供多种规格,按需使用,支持一键式节点数、磁盘存储空间和节点规格扩容。 |
堆积性 | 抗堆积性差,容易引发内存问题导致宕机 | 提供云原生引擎类型,支持海量消息堆积不受影响 |
可观测性 | 通过Management UI能够获取丰富的指标,但需要自建指标存储及展示的系统 | 提供监控告警能力,指标丰富,维度可精确到Vhost、Exchange和Queue,便于您快速发现和定位问题 |
集群可用性 | 需配套解决集群多节点负载均衡设置 | 集群内置负载均衡,支持跨AZ部署 |
安全保证 | 需要自行进行安全加固 | VPC隔离,支持SSL通道加密 |
操作日志 | 无,需要自己开发 | 可追溯租户管理操作的记录 |
OpenApi访问 | 无,需要自己开发 | 提供简单的实例管理RESTFul API,使用门槛低 |
功能特性
分布式消息服务RabbitMQ的功能特性主要体现在以下几个方面:
- 访问接口
支持通过API调用,提供交换器、队列增删查改等管控工作。管理控制台上进行的操作用于对交换器、队列、用户、策略等增删查改等管控工作。
- 队列能力
(1)优先级队列:相比低优先级的消息,要优先投递给消费者进行处理。
(2)延迟队列:延时消息,实现秒级精准定时;简单易用,在代码上只需一个参数设置即可完成,解决开源 RabbitMQ 无延时队列的痛点。
(3)死信队列:支持被拒绝消息、TTL 过期消息、队列达到最大长度(消息队列 AMQP 队列长度无上限)等 3 种类型消息自动进入死信队列的能力,确保消息不丢失。
- 消息能力
(1)广播消息:在同一个消费组内对所有消费者投递相同消息。
(2)事务消息:支持事务消息,可用于分布式应用 。
(3)定时消息:支持消息延迟发送。解决开源 RabbitMQ 无延时队列的痛点。
- 安全防护
可追溯租户管理操作的记录。 起源于金融系统,支持权限控制和SSL协议。
- 运维监控
提供集群、交换器、队列的管理;集群、信道、连接、交换器、队列多维度指标监控。
更多信息请参见功能特性。
应用场景
分布式消息服务RabbitMQ适用于电子商务、金融服务、电信、物流和供应链管理、社交媒体、游戏开发、科学和研究领域等行业,通常用于业务的应用解耦、错峰流控与流量削峰、异步通信等场景。更多信息请参见应用场景。
使用限制
分布式消息服务RabbitMQ对连接数、通道数等信息进行限制,使用时注意不要超过限制,以免程序出现异常。更多信息请参见使用限制。