消息中间件MQ是什么?

2019-06-01 5 16

一、什么是MQ

消息队列MQ(Message Queue)是分布式系统中的一种重要的组件,可以用于异步处理、应用解耦、异步消息、流量削锋等场景,通过 MQ 实现的松耦合架构设计可以提高系统可用性以及可扩展性,是适用于现代应用的最佳设计方案,广泛应用于金融保险、(新)零售、物联网、移动互联网、传媒泛娱乐、教育、物流、能源、交通等行业。

阿里现在提供的消息列队产品包括阿里云自研消息列队RocketMQ、RabbitMQ(AMQP)、 微消息队列 for IoT、 消息队列 Kafka、 消息服务 MNS等。

二、为什么要使用消息列队

在高并发环境下,由于系统处理不及时,请求会发生堵塞,影响系统的可用性,但通过消息列队我们可以将请求放进列队,按列队处理请求,从而缓解系统的压力。

比较典型的应用场景,包括异步处理、应用解耦、流量削锋及消息通讯。

1、异步处理场景

用户注册后,需要发送注册短信或邮件,而发送邮件或短信是一种高消耗动作,大量的请求会让系统快速到达瓶颈。而使用消息列队后,发送注册短信只需要把动作写入消息队列(低消耗动作),不立即处理,然后由中间件异步读取消息列队执行发送动作。这样就达到了提高系统吞吐量的效果。

40210c2385a5a45e20734819.png

同样的,消息列队还可以用于计算会员积分、支付付款验证等消耗比较大的场景。

2、应用解耦场景

在网上商城系统中,用户下单需要执行减库存操作,库存系统出现问题就不能正常下单。而应用消息列队的方案后,用户下单,订单系统处理完后,将减库存的消息写入消息队列,而库存系统订阅此消息,获取下单信息,进行库存操作。这样,就算库存系统不能正常使用,也不影响用户下单,从而实现了两者的解耦。

b82a388622e7b39513213d0f.png

3、流量削峰场景

在抢购秒杀活动中,流量往往会暴增,过大导致系统挂掉。在前端引入消息队列后,系统就可以控制活动的人数,流量超过消息队列的最大长度,直接让用户请求跳转到错误页面,后续再处理消息队列的请求消息。

7663cc082780090d35e44c79.png

4、消息通讯场景

消息队列可提供各种类型消息推送,其中队列模型支持一对一发送和接收消息,典型的场景是点对点通讯;主题模型支持一对多发布和订阅消息,并且支持多种消息推送方式,典型的应用场景是聊天室通讯。

49bf5efd4ed2e9a9df9d506e.png

三、阿里云的消息队列产品

1、消息队列 RocketMQ

消息队列 RocketMQ 是阿里巴巴自研消息产品,服务于整个集团已超过 13 年,经过阿里巴巴交易核心链路反复打磨与历年双十一购物狂欢节的严苛考验,是一个真正具备低延迟、高并发、高可用、高可靠,可支撑万亿级数据洪峰的分布式消息中间件。

RocketMQ 具有99.95%的服务可用性, 99.99999999%的数据可靠性,双十一千万级 TPS、万亿级数据洪峰的实际应用场景。

RocketMQ 支持发布/订阅、集群消费、广播消费的主体模型,支持消息路由,支持顺序消息、分布式事务消息及定时消息/延时消息等消息类型。

更多信息:https://www.aliyun.com/product/rocketmq

2、消息队列 AMQP(RabbitMQ)

消息队列 AMQP 由阿里云基于 AMQP 标准协议研发,完全兼容 RabbitMQ 开源生态以及多语言客户端。

消息队列 AMQP(RabbitMQ)完全兼容RabbitMQ,功能上支持定时消息、死信消息、消息重试等功能,极简易用,可无缝迁移,支持百万级队列,横向扩展,无并发限制。

更多消息:https://www.aliyun.com/product/rocketmq

3、微消息队列 MQTT

微消息队列 MQTT 广泛应用移动互联网以及物联网领域,覆盖互动直播、车联网、金融支付、智能餐饮、即时聊天、移动 Apps 等多种应用场景;通过对 MQTT、WebSocket 等协议的全面支持,连接端和云之间的双向通信,可支撑千万级设备与消息并发,从而实现万物互联。

更多信息:https://www.aliyun.com/product/mq4iot

4、消息队列 Kafka

消息队列 Kafka 是一个分布式的、高吞吐量、高可扩展性消息队列服务,广泛用于日志收集、监控数据聚合、流式数据处理、在线和离线分析等。

阿里提供的Kafka托管服务100%兼容开源社区Kafka。

更多信息:https://www.aliyun.com/product/kafka

5、消息服务 MNS

阿里云消息服务(Message Service)是一种高效、可靠、安全、便捷、可弹性扩展的分布式消息服务。

消息服务同时支持各种类型消息推送,其中和短信前后端的无缝整合更高效的为用户提供了大批量短信发送能力。

队列模型支持一对一发送和接收消息;主题模型支持一对多发布和订阅消息,并且支持多种消息推送方式。

更多信息: https://www.aliyun.com/product/mns

相关文章
1 2 3 4 5 尾页 下一页
本月热门
如何对HybridDB for MySQL 数据库进行备份? 0
云数据库 POLARDB - POLARDB 在金融云 华东1(杭州)正式上线商用 0
apple tv 漏洞 CVE-2016-4642 0
aterm hc100rc firmware 漏洞 CVE-2018-0638 0
处理流程序列功能 0
service_desk_manager 漏洞 CVE-2018-19635 0
云数据库 MySQL 版 - MySQL 优化独享规格本地盘存储空间范围 0
云解析 PrivateZone - 云解析PrivateZone支持自动同步主机名 0
云数据库 POLARDB - POLARDB for PG发布分区表性能增强插件 0
云数据库 POLARDB - POLARDB for Oracle发布新功能 0
云主机问答公众号

微信扫码关注 云主机问答 公众号