后端程序员必备技术栈,消息队列的作用是什么

开发 前端
消息队列在后台技术栈中,占有举足轻重的作用,接下来的一段时间,我们会系统的讲一讲消息队列。 今天我们主要来讲一讲消息队列的作用。

 消息队列在后台技术栈中,占有举足轻重的作用,接下来的一段时间,我们会系统的讲一讲消息队列。 今天我们主要来讲一讲消息队列的作用。

[[345196]]

流量削峰

消息队列,其实并不是什么深奥的东西,类似这次我们的国庆出行,许多的景区都会出现人满为患,到处都是人从众的现象,这个时候,景区是怎么解决问题的呢?通常就是排队限流了,在检票处设一个等待区域,如果景区里面的人太多,那么就在售票处设立一个等待区,让游客进行排队, 等景区出来一些游客后,再放一批游客进去。

现实的生产环境也是如此,在生产环境中,每个系统的容量是不一样的,核心系统或者简单的系统吞吐量往往比较大,非核心系统与复杂系统往往吞吐量比较低。举个例子,在电商系统中,我们经常要对用户行为进行数据上报,相对于用户浏览、交易等行为,数据上报显得并不那么重要,所以支撑数据上报的系统性能往往是不如核心功能的。

在一些流量的高峰,例如双十一大促,我们一般不会对这种上报系统进行扩容,这个时候,同步的进行数据上报容易引发雪崩,应对这种情况,我们可以把用户行为数据的写入放入异步队列,可以根据数据的写入速度进行消费,从而保证系统的鲁棒性。

 

系统解耦

当我们开始开发一个系统的时候,逻辑总是比较清晰跟简单,随着需求的迭代,系统会变得越来越复杂,举个简单的例子,原先我们进行一次交易的时候,可能交易系统可能只是践行简单的库存扣减,然后写入订单。随着功能的迭代,我们需要通知广告系统、第三方的卖家的话、需要通知商家系统等等,像阿里巴巴,每发生一次简单的交易行为之后,可能需要通知数十个不同的业务方进行处理。

 

后端程序员必备技术栈,消息队列的作用是什么

 

这些增加的逻辑,假如我们都做在交易系统的话,就会发现交易系统会变得越来越臃肿不堪,而且会难以保证数据的一致性。假如成单之后,通知广告系统失败了(例如网络波动),那么,这次交易行为是否还要进行下去呢,通知广告系统这种可能失败了就算了,要是通知商家系统失败了呢?数据不一致可能会给公司带来投诉与资损,后期开发要花大量的时间进行数据修复。

消息队列,是一种更简单又更可靠的方法。当我们成功完成一次交易行为之后,我们生产一条消息,所有的业务方都来消费这条消息,由业务方自己来保证成功消费。这样子,交易系统就不用关心交易行为的后续动作,大大减少了交易系统的复杂性。

延迟与异步

这样的场景在电商系统是非常常见的,用户创建一次订单之后,可能没有支付,我们可以在创建订单25分钟之后去提醒用户,告诉他有笔订单未支付,从而提高转化率。假如让你来实现这个功能,那么你要怎么做呢?

我们可以使用一个定时任务,每分钟都去扫描数据库,把未支付的订单扫出来,然后通知用户进行支付。这也是一个不错的方法,但是,一个可靠的定时任务的难点这里就不进行赘述了,我们今天来介绍另外一个方法,那就是消息队列。

一些消息队列提供了延迟队列功能,例如RabbitMQ,我们可以利用其延迟的特性,非常简单地实现这个功能。当用户下单的时候,我们发布一个延迟消息,等到消费的时候,再去查询订单的状态,后面,我们会单独讲消息队列延迟是如何保证可靠性的。

 

今天我们主要讲了消息队列的三个作用,接下来我们会介绍几个常见的消息队列以及他们的特点,如果你有兴趣,欢迎关注我,我们一起学习,一起进步。

责任编辑:华轩 来源: 今日头条
相关推荐

2020-10-10 11:01:40

后端程序员技术

2019-06-23 17:37:58

Linux后端函数栈

2022-02-18 11:06:12

首席技术官技术人工智能

2022-05-19 15:08:43

技术函数调用栈Linux

2009-07-07 16:38:36

ServletCont

2022-02-06 10:20:42

代码重用程序员

2013-03-29 13:15:32

程序员

2020-02-06 08:58:09

程序员技术数据库

2017-12-15 15:09:42

2010-04-23 16:56:26

OracleSQL调优

2014-12-08 09:44:01

程序员

2014-12-08 10:08:33

程序员

2020-04-20 19:00:30

程序员分布式事务架构

2010-06-30 15:24:49

SQL Server子

2019-12-13 15:00:16

索引MySQL数据库

2023-04-09 14:58:05

DevOps开发

2015-12-04 08:49:00

程序员梦魇

2015-12-07 10:09:40

程序员噩梦

2021-09-08 17:36:58

程序员技能开发者

2021-04-30 23:46:04

程序员副业赚钱
点赞
收藏

51CTO技术栈公众号