这是我参与 第五届青训营 伴学笔记创作活动的第13天。
重点内容
本节课老师从直播间准点抢购这个例子入手,带我们认识了消息队列的作用、实现原理以及在互联网业务的一些应用。
案例
以准点抢购这个案例介绍,在某一很短的时间段,比如晚上9点这一时刻抢购商品,这一秒甚至这一瞬间,数不胜数的客户端会对服务端发生大量的请求,可能会发生什么样的场景呢?以我们自身抢购经历来看,通常系统会发生卡顿。
我们站在服务端的角度看问题:
情况一,系统崩溃,如果请求的数据突然丢失了,比如你抢购一个商品,对应数据库中的库存应该减一,但是如果数据库突然丢失,我们所有的操作都无法进行,前后端返回异常,这对于用户体验是不好的。
情况二,服务能力有限,面对高并发的电商场景,100个人在某一瞬间同时下单,但是公司的服务器只能满足同时下单10人,处理订单的服务一脸茫然......
解决方案
数据库丢失,导致所有操作无法进行,说明数据库操作和业务操作耦合度太高,一损俱损,所以我们可以进行解耦的操作,如何解耦?消息队列登场!
同样的,服务能力有限,服务器同时处理不了这么多的请求怎么办,削峰。
既然处理不了这么多的请求,那就先按照自己的能力,能请求多少就请求多少呗。如何实现,借助消息队列!
消息队列
说了这么多,都是为消息队列的出场做铺垫,那么啥是消息队列?
既然叫消息队列,那本质就是个队列,就是个容器,可以联想到数据结构中的queue、deque,先进先出,但是消息队列还要额外支持高吞吐、高并发、高可用。