Ricky的面试比惨俱乐部 EP1 消息队列
什么是消息队列?(fundmental question:what is it)
首先这是一个存放消息的容器,然后这个容器是先进先出的队列。
为什么要用消息队列?(why, why use this)
1.性能削峰
2.async
3.解耦合
senario:
618,1111你秒杀东西,刚点下单,叮,你的购物app说不好意思现在业务高峰请等待下单或者下单失败再见了您嘞,别家买吧!
说白了就是:高并发,client请求高峰,数据库压力增加,响应变慢。
那咋办(摊手):
用户的请求数据发送给消息队列之后立即返回,消息队列的消费者进程从消息队列中获取数据,异步写入数据库,消息队列服务器处理速度快于数据库(消息队列也比数据库有更好的伸缩性),因此响应速度得到大幅改善。
比如你给某大厂发简历。。人家自动回复说哎我收到你的简历啦,感谢你关注我们公司,后续会通知你直面或者笔试或者直接感谢信啦,请慢等噢,然后hr那边到了某个时间点,一堆简历慢慢筛选慢慢发邮件通知。hr处理的那边不一定是一个先进先出的过程,但是这个例子就是说用异步去提高性能的场景,尤其是在秋招窗口期,hr收到的简历可能真的是无数,这时候异步就能起到削峰的作用,将短时间高并发产生的事务消息存储在消息队列中,从而削平高峰期的并发事务。
上述是异步与削峰的场景,那么解耦呢,MQ在解耦当中是什么样的一个作用?
这时候如果你如果了解过服务计算,服务选择,服务发现,服务组合这些东西,那么就容易明白,它的解耦就类似在MQ中实现服务的组合,各个模块各个接口我都提供给你了,你要啥自己拿,不要的你放回去。
detailed explaination:
https://www.cnblogs.com/laojiao/p/9573016.html
缺点呢?
先回去睡觉,有空再说。。。