signed

QiShunwang

“诚信为本、客户至上”

消息队列的应用场景

2020/12/26 19:58:32   来源:

消息队列

异步处理

用户操作流程中,需要发送邮件发送短信,把串行编程并行,不影响用户操作流程,减少了总时间

50ms
50ms
50ms
50ms
用户请求
发送短信
发送邮件
其他耗时的操作
用户响应
50ms
50ms
50ms
50ms
用户请求
消息队列
发送短信
发送邮件
其他耗时的操作
用户响应

日志

程序运行过程中都要生成日志,日志将会通过各种途径让人看到和保存起来,总之是要将程序运行的记录保存到硬盘上,这是一个十分耗时的过程,可以用消息队列建设独立的日志系统

应用程序1
消息队列
应用程序2
应用程序3
日志处理程序

扩大其范围不仅仅是程序运行的日志,业务逻辑里需要记录的其他东西也可以通过消息队列,部分数据的备份和转储、用户行为的记录、各种账单之类的。

应用解耦

多个服务之间互相调用可以中间用消息队列作为媒介
例如一个业务需要调用文件服务的部分功能,这个功能由于是操作文件比较慢,也不需要调用立即返回结果,如果有一天突然文件服务挂了,照我们传统的直接请求接口就会请求不通,影响业务流程,可以把操作的请求先发到队列里,不管另一方是不是通的,等文件服务恢复了就还是正常的。

流量削峰

应对流量突然暴增的场景,例如商城的秒杀或购物节等活动,大量的请求进来,服务器难以承受压力,用消息队列缓解大流量,应为可以是处理完成后再从消息队列里拿一个,这样变成串行,减少了并发量,虽说是慢了点,防止了服务器突然承受不住压力。

消息通讯

消息队列的结构,纯天然的用在消息通讯上,内置了高效的通信机制,用到发新闻、消息、聊天等功能上

发送消息
接收消息
发送消息
接收消息
客户端
消息队列
客户端