当前位置:网站首页>消息队列与快递柜之间妙不可言的关系
消息队列与快递柜之间妙不可言的关系
2022-07-07 21:49:00 【InfoQ】
一、消息队列是一个快递柜
- 消息队列比作快递柜:有很多厂家生产快递柜,如:丰巢(apache kafka),速递易(alibaba RocketMQ),近邻宝(ActiveMQ)等等,反正常用的就这几个。快递柜负责临时保存邮件,消息队列负责临时保存消息数据。
- 快递员比作消息生产者:快递员负责向快递柜投递邮件,生产者负责向消息队列投递消息。异曲同工之妙啊!
- 消费者比作消息消费者: 可能是这个例子太贴切了,以至于这句怎么看都是废话。废话也还是要说,生活中的消费者取邮件,程序中的消费者取消息数据。
二、快递柜(消息队列)带来的好处
- 异步解耦:有了快递柜,消费者不用等待快递员,用户体验增强。消费者与生产者(快递员)之间解耦,不会因为对方的操作行为,影响自己独立处事的程序。用户不用疲于等待与接收事件阻塞耗时。
- 流量削峰:我们假定一种极端的情况,你通过各个渠道买了1000本书,突然某一小时集中的给你打电话。你肯定不具备一个小时收1000个邮件的能力,所以你让快递员将邮件放入快递柜。所以你就可以按照自己的处理能力,按照自己的时间安排去取邮件。同样我们的消费者程序在面临多用户、高并发的请求情况下,将数据放入消息队列保存可以将流量数据削峰,按照程序能够处理的能力和资源进行数据消费。
- 缓冲批处理:生产者批量投递,爽!消费者一次性取多个邮件,爽!
三、引入快递柜带来的缺点
- 引入复杂度。毫无疑问,快递柜(消息队列)这东西是多出来的,在原来的收取过程中是不存在的。所以需要地方放它,还需要防火、防盗防潮,需要去维护它。消息队列中间件也是一样的,你需要服务器区安装它,还要对它进行维护。
- 会导致暂时的数据不一致。 如果没有快递柜,你收到了邮件件就是真的收到了。但是使用快递柜之后,你收到了"邮件放入快递柜的消息",但是与你真的取到邮件这中间会有一定的延时。当然你最终还是会取到邮件,选择"消息队列"快递柜,就是要忍受暂时不一致,接受"最终一致性"。
- 当然极端情况下,快递柜坏了,你要不可避免地接受"邮件可能会丢失"的事实,对于安保系数高的小区这几乎不会发生。
边栏推荐
- Explain in detail the communication mode between arm A7 and risc-v e907 on Quanzhi v853
- Line test - graphic reasoning - 4 - alphabetic class
- Signal feature extraction +lstm to realize gear reducer fault diagnosis -matlab code
- ASEMI整流桥KBPC1510的型号数字代表什么
- Sword finger offer 27 Image of binary tree
- Unity and webgl love each other
- ADC采样率(HZ)是什么怎么计算
- [problem] pytorch installation
- Debezium series: binlogreader for source code reading
- Sword finger offer 28 Symmetric binary tree
猜你喜欢
The PHP source code of the new website + remove authorization / support burning goose instead of pumping
Two minutes, talk about some wrong understandings of MySQL index
不夸张地说,这是我见过最通俗易懂的,pytest入门基础教程
Common verification rules of form components -2 (continuously updating ~)
0-5VAC转4-20mA交流电流隔离变送器/转换模块
The author of LinkedList said he didn't use LinkedList himself
PCL .vtk文件与.pcd的相互转换
Redis cluster installation
PHP method of obtaining image information
Unity与WebGL的相爱相杀
随机推荐
How to judge whether the input content is "number"
数字化转型:五个步骤推动企业进步
Microservice Remote debug, nocalhost + rainbond microservice Development second Bomb
Debezium series: binlogreader for source code reading
Time convolution Network + soft threshold + attention mechanism to realize residual life prediction of mechanical equipment
Early childhood education industry of "screwing bar": trillion market, difficult to be a giant
Sword finger offer 63 Maximum profit of stock
How to choose the appropriate automated testing tools?
ADC采样率(HZ)是什么怎么计算
Revit secondary development - wall opening
Aspose. Word operation word document (II)
0-5VAC转4-20mA交流电流隔离变送器/转换模块
C # realizes the communication between Modbus protocol and PLC
PHP records the pitfalls encountered in the complete docking of Tencent cloud live broadcast and im live group chat
Basic knowledge of linked list
GBU1510-ASEMI电源专用15A整流桥GBU1510
行测-图形推理-5-一笔画类
Sword finger offer 28 Symmetric binary tree
不夸张地说,这是我见过最通俗易懂的,pytest入门基础教程
数字藏品加速出圈,MarsNFT助力多元化文旅经济!