springcloudalibaba架构(21):MQ的简介

发布于:2023-01-20 ⋅ 阅读:(409) ⋅ 点赞:(0)

前言

什么是MQ?
有什么作用?

什么是MQ?

MQ(Message Queue) 是一种跨进程的通信机制,用于消息传递。
在这里插入图片描述

MQ 应用场景

异步解耦

最常见的常见是用户注册后,需要发送邮件通知,告知用户注册成功。传统的说法是,等待邮件发送成功后,再告知返回并告知用户。而实际上用户并不需要等到邮件发送这个过程,只要前面的处理完成后即可,邮件发送的过程可以异步实现,不需要即时获取。
在这里插入图片描述

所以实际上数据写入到注册系统后,注册系统就可以把其它操作交给消息队列MQ中然后立即返回给用户结果,由消息队列MQ异步地进行操作。
在这里插入图片描述
异步解耦是消息队列MQ的主要特点,主要的目的是减少请求响应时间和解耦。主要的使用场景就是将比较耗时而且不需要即时返回结果的操作作为消息放入消息队列。同时,由于使用了消息队列MQ,只需要保证消息格式不变,消息的发送方和接收方并不需要彼此联系,也不需要受对方的影响,即解耦合。

流量消峰

流量消峰也是消息队列MQ的常用场景,一般在秒杀或团队抢够活动中使用广泛。
在秒杀或团队抢购活动中,由于用于请求量很大,导致流量暴增,秒杀的应用在处理如此大的访问流量后,下游的通知系统无法承载海量的调用量,甚至导致系统崩溃等问题而发生漏通知的情况。为解决这些问题,可在应用和下游通知之间加入消息队列MQ。
在这里插入图片描述
秒杀处理流程
1.用户发起秒杀请求到业务系统
2.秒杀系统按照秒杀逻辑将满足条件的请求发送到消息队列MQ
3.下游的通知系统订阅消息队列MQ中的秒杀消息,再将秒杀成功的消息发送到响应的用户。
4.用户收到秒杀成功的通知。

常见的MQ产品

  • RocketMQ
    RocketMQ是阿里巴巴的MQ中间件,由JAVA语言开发,性能很好,能够支撑双十一的大流量,使用比较简单。
  • ActiveMQ
    ActiveMQ是历史悠久的Apache开源产品。在很多产品中都有应用,实现了JMS1.1规范,可以与spring-jms轻松融合,实现了多种协议,支持持久化到数据库,对队列数较多的情况支持不好。
  • Kafka
    +Kafka 是Apache下的一个子项目,是一个高性能跨语言分布式Publish/Subscribe消息队列系统,相对于ActiveMQ是一个非常轻量级的消息系统,除了性能非常好之外,还是一个工作良好的分布式系统。
  • RabbitMQ
    使用erlang语言开发,性能较好,适合企业级开发,但是不利于二次开发和维护。
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到