初识消息队列 | 青训营笔记

51 阅读2分钟

这是我参与 第五届青训营 伴学笔记创作活动的第13天。

重点内容

本节课老师从直播间准点抢购这个例子入手,带我们认识了消息队列的作用、实现原理以及在互联网业务的一些应用。

案例

准点抢购这个案例介绍,在某一很短的时间段,比如晚上9点这一时刻抢购商品,这一秒甚至这一瞬间,数不胜数的客户端会对服务端发生大量的请求,可能会发生什么样的场景呢?以我们自身抢购经历来看,通常系统会发生卡顿。

我们站在服务端的角度看问题:

情况一,系统崩溃,如果请求的数据突然丢失了,比如你抢购一个商品,对应数据库中的库存应该减一,但是如果数据库突然丢失,我们所有的操作都无法进行,前后端返回异常,这对于用户体验是不好的。

情况二,服务能力有限,面对高并发的电商场景,100个人在某一瞬间同时下单,但是公司的服务器只能满足同时下单10人,处理订单的服务一脸茫然......

解决方案

数据库丢失,导致所有操作无法进行,说明数据库操作和业务操作耦合度太高,一损俱损,所以我们可以进行解耦的操作,如何解耦?消息队列登场!

image.png

同样的,服务能力有限,服务器同时处理不了这么多的请求怎么办,削峰

既然处理不了这么多的请求,那就先按照自己的能力,能请求多少就请求多少呗。如何实现,借助消息队列!

image.png

消息队列

说了这么多,都是为消息队列的出场做铺垫,那么啥是消息队列?

既然叫消息队列,那本质就是个队列,就是个容器,可以联想到数据结构中的queue、deque,先进先出,但是消息队列还要额外支持高吞吐、高并发、高可用