|
|
51CTO旗下网站
|
|
移动端

程序员经典面试题,消息队列的作用,你能说出几个?

今年疫情严峻,希望早日控制住,有不少的朋友都打算年后找份新的工作,正好趁着这个时候好好学习,提升下自己。今天我们来聊一聊消息队列的作用。消息队列,相信大家都不陌生,Kafka、RMQ都是大家常用的队列,也是程序员面试中的一个常见的题目。

作者:沙茶敏碎碎念来源:今日头条|2020-02-06 08:58

今年疫情严峻,希望早日控制住,有不少的朋友都打算年后找份新的工作,正好趁着这个时候好好学习,提升下自己。今天我们来聊一聊消息队列的作用。消息队列,相信大家都不陌生,Kafka、RMQ都是大家常用的队列,也是程序员面试中的一个常见的题目。

进行削峰,减少并发

数据在后台各个系统中流转就跟流水线上的工人一样,如果前面的工人干得非常快,那么工作就会不停地堆积,很多零件就堆积着等着下面的工人解决。如果请求一直堆积着得不到处理,用户就只能够一直等待,会有不好的体验,同时,因为任务堆积,总是需要占用内存、连接数等资源,就容易引发服务雪崩。所以,对一些实时性要求不高的请求,我们通常可以采用异步进行削峰。一个常见的例子,在电商系统中,当用户下单并完成支付的时候,我们通常会去通知商家的后台,告诉他们可以发货了。但是不同的商家的技术良莠不齐,有些速度真是跟蜗牛一样,这个时候我们这可以采用异步的方式,使用消息队列,慢慢地进行通知。

系统解耦

当我们开始开发一个系统的时候,逻辑总是比较清晰跟简单,随着需求的迭代,我们会发现系统越来越复杂,如果开发的程序员能力不足的话,我们会发现系统会越来越混乱,最后甚至出现一个方法几千行代码的情况,那么对于一个越来越复杂地系统,我们怎么进行系统的解耦呢?

程序员经典面试题,消息队列的作用,你能说出几个?

在一个电商系统中,当我们完成一次交易的时候,远远没有想象中那么地简单,我们通常需要通知仓库或者通知商家,让他们接受订单,尽快发货。同时,我们可能要通知积分系统,给用户下发一定的交易积分。可能这个用户是通过分销过来购买的,需要通知分销系统,创建分销订单,以便后面的结算。一次简单的交易过后,我们可能要同时数十个系统,像阿里巴巴的天猫淘宝,可能完成一次交易,甚至要通知100个系统。如果我们在我们的交易流程里面,逐个系统逐渐通知,那么必然会带来系统缓慢的问题,所以我们可以使用消息队列,每次交易成功后发布一条消息,让其他系统去订阅这条消息。就可以做到系统的解耦了。

延迟处理

在程序设计中,延迟任务也是常有的事情。例如用户创建一次订单之后,可能没有支付。我们可以在创建订单25分钟之后去提醒用户,告诉他有笔订单未支付,万一用户支付了。岂不是美滋滋。一些消息队列提供了延迟队列功能,例如RabbitMQ,我们可以利用其延迟的特性,非常简单地实现这个功能。当然,我们也可以使用其他方法,例如每一分钟扫描一次数据库等等。欢迎大家关注我,共同学习,共同进步。大家的支持是我继续唠嗑的动力。

【编辑推荐】

  1. Python中的图像增强技术
  2. 程序员硬核劝告:现在还不是出门的时候
  3. 在家远程办公,搜狗技术人员对服务器进行了误操作:错误推送了“12级地震预警”
  4. 用数据告诉你,新型冠状病毒传染性有多强_技术栈微信半月刊第58期
  5. 我们是如何为算法交易系统进行数据库选型的?
【责任编辑:华轩 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

Python应用场景实战手册

Python应用场景实战手册

Python应用场景实战手册
共3章 | KaliArch

22人订阅学习

一步到位玩儿透Ansible

一步到位玩儿透Ansible

Ansible
共17章 | 骏马金龙1

205人订阅学习

云架构师修炼手册

云架构师修炼手册

云架构师的必备技能
共3章 | Allen在路上

141人订阅学习

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微