消息中间件在互联网应用中十分广泛,标准的用法是生产者(productor)生产消息发送到队列,消费者(consumer)从队列中取出并处理消息,生产者无需关心谁来消费,消费者也不用关心消息的来源,从而达到解耦的目的。
RabbitMQ是当前***的消息引擎之一,是实现了AMQP(高级消息队列协议)的消息中间件中的一种,服务器端用Erlang语言编写,主要用于系统间的双向解耦,在可靠性、灵活性、高可用等方面均有着出色的表现。
RabbitMQ就是在消息中间件的基础用法上,增加了交换机(Exchange),Exchange会根据一定的调度策略把productor发送的消息放到一个或多个队列当中,就是这样的一个中间层,让消息队列实现了系统之间的双向解耦。当productor产生大量的消息,consumer无法快速的消费这些消息时,就需要Exchange来处理和保存这些消息。RabbitMQ的组成部分如下图所示:
华为云RabbitMQ消息引擎源于开源优于开源:
近日,华为云分布式消息服务正式发布了RabbitMQ消息引擎, RabbitMQ消息引擎专注于应用解耦、流量削峰、异步处理等应用场景,为用户提供消息生产消费、发布订阅、消息持久化、消息确认机制、事物消息等功能。
DMS RabbitMQ |
自建开源RabbitMQ |
|
安全性 |
支持VPC虚拟网络等公有云安全服务 |
自行管理设置安全配置,安全防护效果依赖于安全专员水平 |
运维 |
提供云审计、云监控等服务,方便运维 |
需额外的运维人员,自行研发对应的运维监控系统 |
稳定 |
集群模式下实现了1个节点冗余镜像,确保数据的可靠性 |
自行保障 |
成本 |
具备多种配置可选择:单机、集群;可按需或包周期进行购买;且公测期间完全免费;用户可按需选择具体配置。 |
成本较高 |
扩展性 |
具备专业的扩容方案 |
需自行设计并操作扩容方案 |
性能 |
后端使用华为高性能ECS主机,吞吐量高,性能强劲,集群稳定性也有很好保障 |
数据可靠性与性能难以兼顾 |
华为云全新推出的RabbitMQ引擎,***兼容开源,对于已有的基于RabbitMQ的应用,无需代码上的修改,即可快速接入华为云RabbitMQ服务,轻松把应用搬上云端。对于未使用过RabbitMQ的用户,提供简单友好的控制台操作和详尽的入门操作指南,用户可通过样例程序,快速搭建出发布订阅、单发送单接收、单发送多接收、路由发送接收等功能。
RabbitMQ完成分布式系统异步通信
在大中型分布式系统中,RabbitMQ可以帮助各个子系统的数据及时同步到后台模块,并提供数据通道帮助触发其他的业务流程,如函数处理、消息通知等。华为云RabbitMQ的如下特点,可以有效帮助分布式系统实现异步通信:
- 丰富消息类型
广播消息、延时消息、消息重投等消息特性,使应用可以灵活控制异步通信的时间。
- 高并发
单队列***性能至10万TPS,并且可以通过队列数平滑扩展能力,有效提升整个系统的并发能力。
- 低时延
消息投递时延可至毫秒级,保证消息的及时性。
应用通过RabbitMQ解耦
在单体应用中,业务流程耦合会导致系统对用户的请求响应慢,可以将系统拆分为多个子系统,用RabbitMQ作为子系统间的异步通信通道进行系统解耦,从而有效提升整个系统的响应速度。华为云RabbitMQ服务可以做到:
- 加快系统响应
系统通过分布式解耦和并行处理请求,加快系统对用户请求的响应速度。
- 降低系统耦合
子系统间通过RabbitMQ进行通信,避免系统之间相互耦合和影响。
- 数据缓存
消息队列提供亿级消息堆积能力,让应用从容应对流量洪峰。
流量削峰填谷 防止应用崩溃
在秒杀或者团抢活动中,经常会发生因为流量突然暴增,导致应用不能正常访问的现象。为了解决这样的问题,就需要在应用的前端加入消息队列。服务器在接收到用户的请求之后,先把请求放到消息队列中,秒杀的业务模块根据消息队列的请求信息,做后续的处理。如果遇到消息队列长度超出***的限制,可以直接抛弃用户请求或者跳转到友好的提示页面,从而有效地控制活动的参与人数,提升用户体验,并且大幅缓解瞬时流量洪峰对应用的压力。
华为云RabbitMQ消息引擎,完全兼容开源,提供独占资源,保证队列高性能,为企业和互联网应用提供省心、省力的消息中间件,减少开发、运维的成本,避免了企业自建中间件时所面临的安全、运维等问题。目前RabbitMQ向用户免费开放,欢迎访问华为云官网免费使用:
分布式消息服务 DMS
https://www.huaweicloud.com/product/dms.html