消息队列作用

随着技术的发展分布式系统已经成为标配,分布式系统就存在着各式各样的进程间通信。消息对列实际上就是进程间通信方式的一种,是生产者消费者模式在分布式场景下的实现。

现实世界的例子

消息队列主要由以下作用:解耦,削峰,异步,其实还有一个作用是提高接收着性能。

我们以一个快递员送快递的栗子来描述下队列的作用。

送快递送出了烦心事


快递员给小明送快递分为几步?

分为3步,

第一步把快递拿到小明家门口(省略了前n步,从小明家楼下开始)

第二步敲门(类比编程世界的调用第三方接口)

第三步小明开门拿走快递(第三方接口执行过程)


好了上边是送快递最简单的三步,让我们想想,这简单的三步会有什么问题?


  • 耦合:

快递员什么时候完成这一单或者是否能顺利完成,十分依赖于小明的相应速度。如果小明还没起床,听见敲门声再穿衣服开门,可能消耗很多时间。如果小明没在家呢?那就要配送失败了,如何判断配送失败呢?快递员需要判断等多久开门(超时时间),打电话判断是否在家(健康检查),最终郁闷的离开,下次再来一次(重试)。
快递员直接与小明交互,对小明的状态强依赖,产生了耦合现象。那有办法避免这种耦合呢?

  • 同步影响性能

快递员的配送速度收到小明的响应速度影响极大,有一两个需要长时间等待的快件,快递员的配送效率(吞吐率)会收到很大影响。

  • 高峰期负载很高

双11,618,每次到购物节的时候,快递员都很烦躁。快递太多,来的比送得快,这可如何是好。
小明也很烦躁,一天要收100个快递,可是家里的空间都满了,要边收拾出地方边进一件快递。

  • 接收方还有其他事情

-- 如果小明准备和女朋友告白,此时来了一阵敲门声,你好,快递。
-- 还双11,小明买了100件商品,明天不定时一件件送到,小明这一天都要搭进去了。

接收快递也成为了一件烦心事,好想把其他事情处理完再收快递,也好想一块收100件快递。


该消息队列登场了

现在快递员和小明都很烦躁,这个时候有个叫X巢(没收广告费)的快递柜出现了,快递员可以把快递放到柜子里,发条短信通知小明过来取快递。小明看到短信可以先做自己的事情,有空的时候过来拿走快递。

终于,我们再看到小明和快递员的时候每个人都笑容满面。

这里的快递柜就相当于是编程世界的消息队列,让我们看看消息队列到底起到了什么作用。

  • 解偶

此时,快递员只需要把快递放到柜子里,不需要关心小明是否在家,是否在睡觉。小明也不需要一直等待给快递员开门,两个人解耦了。

  • 异步

快递员把快递放到柜子里发个信息就可以去送下一件,不需同步等待结果。

这样每个快递的处理速度(响应时间)都变得极短,每天送的快递数量(吞吐量)也变多了。

  • 削峰。

这次又到了双十一,小明还是一天要到100个快递,由于小明一天只能消化10个快递,剩下的就放在了柜子里,等10天后才拿完。

快递员由于是异步送快递,双11根本不是事,这点吞吐量完全搞得定。

  • 提高消费端性能

小明以前需要一件一件收取快递,现在放在了柜子(队列)里,那等攒够了10件去取一次(buffer->reduce),好省时间!其他时间都可以快快乐乐约会了。

总结

让我们再来总结一下异步消息队列的作用

  1. 解耦,生产端和消费端不需要相互依赖
  2. 异步,生产端不需要等待消费端响应,直接返回,提高了响应时间和吞吐量
  3. 削峰,打平高峰期的流量,消费端可以以自己的速度处理,同时也无需在高峰期增加太多资源,提高资源利用率
  4. 提高消费端性能。消费端可以利用buffer等机制,做批量处理,提高效率。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容

  • 消息队列 什么是消息队列(Message Queue,MQ)呢? 首先回忆下生活中在餐馆点餐的场景,当你点完餐之后...
    JunChow520阅读 2,973评论 0 29
  • 以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志系统)。 本次分享...
    文档随手记阅读 1,863评论 0 28
  • 在开启深入剖析KAFKA 这个文集前。我想先谈谈消息队列。消息队列在分布式里是一个绕不过的话题。 1 我们不妨先通...
    西部小笼包阅读 601评论 0 1
  • 1 消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,...
    Bobby0322阅读 10,802评论 0 24
  • 这两天朋友圈再次被同一个新闻刷屏了。文章比较了北京奥运开模式小童星林妙可跟她的代唱者杨沛宜的现状。 记得第一次知道...
    邹银利阅读 306评论 1 2