消息中间件在互联网应用中十分广泛,标准的用法是生产者(Producer)生产消息发送到队列,消费者(consumer)从队列中取出并处理消息,生产者无需关心谁来消费,消费者也不用关心消息的来源,从而达到解耦的目的。
RabbitMQ
RabbitMQ 是当前最流行的消息引擎之一,是实现了 AMQP(高级消息队列协议)的消息中间件中的一种,服务器端用 Erlang 语言编写,最初起源于金融系统,在可靠性、灵活性、功能的多样性等方面均有着出色的表现。
RabbitMQ 在消息中间件的基础用法上,增加了交换机(Exchange),RabbitMQ 通过 Exchange 将消息路由至消息队列。队列通过路由键值与 Exchange 进行绑定,当 Producer 发送消息时,会指定 Exchange 与路由键值,Exchange 根据路由键值进行匹配,匹配上则将消息路由至一个或多个绑定的队列中,未匹配上的消息将会被丢弃。
RabbitMQ 的组成部分如下图所示:
MQ 用于应用解耦、流量削峰、异步处理等应用场景,为用户提供消息生产消费、发布订阅、消息持久化、消息确认机制、事物消息等功能。那么哪些情况下适合选用 RabbitMQ 呢?RabbitMQ 的优势在于消息功能丰富及多协议支持,如支持 Push/Pull 的消费模式、支持优先级队列、支持延迟队列等;在消息多协议上,除了 AMQP 外,还支持 MQTT、STOMP 等协议。所以,对于消息处理要求功能灵活的应用来说,RabbitMQ 是非常适合的选择。
为什么选择华为云 RabbitMQ
近日,华为云分布式消息服务 DMS 在已经支持 Kafka 的基础上,正式发布了 RabbitMQ 消息引擎,基于最新的 RabbitMQ 3.7.X 版本,提供全托管式的云上 RabbitMQ 服务。
RabbitMQ 消息引擎专注于应用解耦、流量削峰、异步处理等应用场景,为用户提供消息生产消费、发布订阅、消息持久化、消息确认机制、事物消息等功能。在单体应用中,业务流程耦合会导致系统对用户的请求响应慢,可以将系统拆分为多个子系统,用 RabbitMQ 作为子系统间的异步通信通道进行系统解耦,从而有效提升整个系统的响应速度。
常见的秒杀或团抢活动,经常会发生因为流量突然暴增,导致应用不能正常访问。为了解决这样的问题,就需要在应用的前端加入消息队列。服务器在接收到用户的请求之后,先把请求放到消息队列中,秒杀的业务模块根据消息队列的请求信息,做后续的处理。如果遇到消息队列长度超出最大的限制,可以直接抛弃用户请求或者跳转到友好的提示页面,从而有效地控制活动的参与人数,提升用户体验,并且大幅缓解瞬时流量洪峰对应用的压力。
华为云 RabbitMQ 具有如下特点,让应用上云更简单,运行更高效:
丰富消息类型
广播消息、延时消息、消息重投等消息特性,使应用可以灵活控制异步通信的时间。
高并发
单队列最高性能至 10 万 TPS,并且可以通过队列数平滑扩展能力,有效提升整个系统的并发能力。
低时延
消息投递时延可至毫秒级,保证消息的及时性。
华为云 RabbitMQ 消息引擎,完全兼容开源,提供独占资源,保证队列高性能,为企业和互联网应用提供省心、省力的消息中间件,减少开发、运维的成本,避免了企业自建中间件时所面临的安全、运维等问题。
本文转载自公众号中间件小哥(ID:huawei_kevin)。
原文链接:
https://mp.weixin.qq.com/s/MmEVlWM9hoxOuvYJiRAKJQ
评论