一文读懂为什么需要消息队列

什么是消息队列?我们可以通俗地理解为用来接收和发送消息的东西,而它通信的方式是使用这个队列。现实运用中,消息队列不仅仅是传递站,还有其他作用,那么为什么必须有消息队列的存在呢?本文分享一下为什么需要消息队列。

从以前的单体架构到现在的微服务架构,成百上千的服务之间相互调用和依赖。从互联网初期一个服务器上有100个在线用户已经很了不得,到现在坐拥10亿日活的微信。我们需要有一个「东西」来解耦服务之间的关系、控制资源合理合时的使用以及缓冲流量洪峰等等。消息队列就应运而生了。它常用来实现:异步处理、服务解耦、流量控制。

1、异步处理

随着公司的发展你可能会发现你项目的请求链路越来越长,例如刚开始的电商项目,可以就是粗暴的扣库存、下单。慢慢地又加上积分服务、短信服务等。这一路同步调用下来客户可能等急了,这时候就是消息队列登场的好时机。

调用链路长、响应就慢了,并且相对于扣库存和下单,积分和短信没必要这么的"及时"。因此只需要在下单结束那个流程,扔个消息到消息队列中就可以直接返回响应了。而且积分服务和短信服务可以并行的消费这条消息。

可以看出消息队列可以减少请求的等待,还能让服务异步并发处理,提升系统总体性能。

2、服务解耦

上面我们说到加了积分服务和短信服务,这时候可能又要来个营销服务,之后领导又说想做个大数据,又来个数据分析服务等等。

可以发现订单的下游系统在不断的扩充,为了迎合这些下游系统订单服务需要经常地修改,任何一个下游系统接口的变更可能都会影响到订单服务,这订单服务组可疯了,真·「核心」项目组。

所以一般会选用消息队列来解决系统之间耦合的问题,订单服务把订单相关消息塞到消息队列中,下游系统谁要谁就订阅这个主题。这样订单服务就解放啦!

3、流量控制

想必大家都听过「削峰填谷」,后端服务相对而言都是比较「弱」的,因为业务较重,处理时间较长。像一些例如秒杀活动爆发式流量打过来可能就顶不住了。因此需要引入一个中间件来做缓冲,消息队列再适合不过了。

网关的请求先放入消息队列中,后端服务尽自己最大能力去消息队列中消费请求。超时的请求可以直接返回错误。

当然还有一些服务特别是某些后台任务,不需要及时地响应,并且业务处理复杂且流程长,那么过来的请求先放入消息队列中,后端服务按照自己的节奏处理。这也是很nice的。

上面两种情况分别对应着生产者生产过快和消费者消费过慢两种情况,消息队列都能在其中发挥很好的缓冲效果。

(0)

相关推荐

  • 微服务架构-利用事件驱动实现最终一致性

    事务一致性 首先,我们来回顾一下ACID原则: Atomicity:原子性,改变数据状态要么是一起完成,要么一起失败 Consistency:一致性,数据的状态是完整一致的 Isolation:隔离线 ...

  • 广华日志漫笔99977(89)

    有流量了才是王道,没流量了说什么都是瞎扯,有一个项目才是王道,有多个项目都是瞎扯淡. 谁对我们感兴趣,谁认可我们谁信任我们,谁就会在我们这里买的,这些都是顺其自然的,而不是我们,而不是我们为了取悦客户 ...

  • 消息队列全面了解(一)

    关于消息队列,我们来思考这么几个问题: 1.MQ为什么再系统中使用?一定要在分布式系统中使用吗? 2.MQ有哪些中间件?他们有哪些特点? 3.MQ给系统带来好处的同时有没有带来什么问题?如何解决? 一 ...

  • 云起:IP做起来之后做什么

    轻创业干货|营销思维 实战案例|认知感悟 IP做起来之后,有流量进来,我们就要做后端的服务开始变现了,变现方式前面已经讲过,这里就不过多叙述了. 在这里主要说一下怎么进行后端服务. 赚大钱呢,一个人是 ...

  • 面向.NET开发人员的Dapr——参考应用程序

    菜鸟吊思 dotNET跨平台 今天 目录: 面向.NET开发人员的Dapr--前言 面向.NET开发人员的Dapr--分布式世界 面向.NET开发人员的Dapr--俯瞰Dapr 面向.NET开发人员的 ...

  • (12条消息) 一文读懂BERT(原理篇)

    一文读懂BERT(原理篇) 2018年的10月11日,Google发布的论文<Pre-training of Deep Bidirectional Transformers for Langua ...

  • 枪毙信使并不能改变坏消息(一文读懂战争的深层逻辑)

    文章一开始,我们先来讨论一下伴随着人类文明及历史发展,一个始终如梦魇般存在着的战争.为什么会有人发起战争?为什么会有战争的存在?战争到底能达到怎样的目的? 这么多问题的答案或许只有一个,战争的最终目的 ...

  • 一文读懂王清任的五逐瘀汤

    至道汇 今天 瘀血 王清任三步辨瘀血法及其临床应用 一.首辨瘀血典型症状的有无 无论瘀血为病,证候有多么复杂多变,其外在表现总会有一定规律可循.其中表现突出且有别于他证的特异性症状,便可视为瘀血的典型 ...

  • 一文读懂硬度试验

    硬度,硬度测量,硬度公式,硬度换算,材料硬度,钢材硬度,布氏硬度,硬度试验 来源:北京赛亿科技有限公司

  • 一文读懂:广东人从哪里来?

    岭南韵味  广府情怀 粤曲| 粤剧 | 名家 | 名段 很多外省的朋友们不是很了解广东人的组成及来源,也不知道为何叫做"广东".更会有一些朋友会奇怪: ◆为什么秦汉时期的" ...

  • 一文读懂:宗教、哲学、科学,的诞生史

    作者:黃爾文 公元2021年5月7日 2文讲解<西方哲学史>系列 (第3章. 宗教.哲学.科学 の 诞生) 释迦摩尼 如果按照一个"发展顺序"来讲的话呢: ❶是人类最初 ...

  • 一文读懂地产类信托

    2019年以来,政府对于信托资金流向房地产的管控有所加强,年中时有传言光大信托和国投泰康信托暂停所有房地产类项目,引起市场一片哗然,随后市场又有"2万亿地产类通道业务清零"的说法. ...

  • 一文读懂企业IPO需要聘请的各种中介机构(投行方法论系列)

    目前A股IPO的中介机构,券商.会计师.律师这三大机构,为一般的大众所熟悉.但实际上,A股IPO最多有可能涉及到26个中介机构,分别为:1.IPO顾问.2.券商.3.会计师.4.中国律师.5.海外律师 ...

  • 一文读懂!在家煎煮中药的正确“打开方式”

    本期专家:北京中医药大学东方医院药学部张晓 赵薇 刘天聪 日常生活中,很多人会选择用中药来调养身体,取药回家围在炉旁慢慢等待药香四溢.如何正确煎煮中药汤剂?专家告诉你! 1.煎前浸泡 煎前浸泡既利于有 ...