消息队列是历史最悠久的中间件之一,它可以和不同的进程进行通信,从而实现上下游之间的消息传递。基于此特性,我们可以在以下三个场景中使用消息队列。
为什么需要消息队列
消息队列是历史最悠久的中间件之一,它可以和不同的进程进行通信,从而实现上下游之间的消息传递。基于此特性,我们可以在以下三个场景中使用消息队列。
- 解耦;
- 限流;
- 流量削峰;
1)解耦
先来看解耦,假设有两个服务:A 和 B,当服务 A 依赖服务 B 时,请求的耗时就是这两个服务之和。但如果服务 B 耗时比较长怎么办?
显然这时服务 A 可以将消息发送到队列中,服务 B 从队列里面去取即可,从而实现两个服务之间的逻辑解耦 + 物理解耦。
当用户注册账号时,会将注册信息发给账号服务,账号服务将信息写入数据库后,会调用短信服务给用户发送短信。如果不使用消息队列,那么必须等短信发送成功之后才能返回。
但为了给用户更好的体验