这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天
这篇文章主要是收集了笔者在学习今天的课程,在学习了一些消息队列设计与实现课程后并进行实践操作后,总结了一些注意点。
消息队列注意点
消息队列的概念和组成
消息队列,简单来讲,就是一个存储消息的队列嘛!它的基本作用,就是可以被程序员从某处插入消息,然后本身再不断地对消息进行处理。
消息队列的应用可以追溯到挺久之前,最开始的使用,是java中被称为“阻塞队列”的东西,此时就已经可以实现上面说的基础作用了。
消息队列的基础三大件是: 生产者、消费者、消息队列。之后的什么Broker、Topic、分区、Offerset什么的都是在这三大件之上发展而来的。生产者生产消息到消息队列中,消费者从消息队列中拉取消息并消费。
消息队列的作用
经过上面的介绍,我们知道了消息队列可以存储消息、消费消息,由此,发展出以下几种作用:
异步处理
商品系统谁都会,我们就拿它的下单过程来举例。考虑一个未被异步处理优化的下单过程:用户发送下单请求->后台从数据库判断库存是否充足->后台从数据库扣减库存->后台在数据库插入一个新订单->后台把新订单id发送回前台...如此一来,可见效率之低下。
然而我们在学习redis后,会有同学立刻指出,库存量可以存入redis中加快查询效率。然而,后面活生生的两次sql执行操作还是使得总体效率低下。
因此利用消息队列处理,我们可以将下单过程优化成以下模样:用户发送下单请求->后台从redis判断库存是否充足->使用订单分发器生成新的订单id->把新订单id和其他信息形成一个消息插入消息队列->后台把新订单id发送回前台。然后,在之后的进程里,消息队列就会默默地把消息执行了。
这样效率一下子就提上来了!在实际环境中,时间大约可以节省70%以上。