【扫盲】消息队列


# 什么是消息队列

消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,只不过队列中存放的内容是message而已。

“消息”是在两个独立个体间传送的数据单位。这两个个体可以是两台计算机,也可以是两个进程,也可以是一个进程的两个线程。

“消息”可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。

队列”是在消息的传输过程中的通道,是保存消息的容器,根据不同的情形,可以有先进先出,优先级队列等区别 。


# 为什么需要消息队列

两个原因,异步处理和解耦。

在数据高并发环境下,来不及同步处理,请求往往会发生堵塞现象,比如说,大量的insert,update之类的请求同时到达MySQL,直接导致无数的行锁表锁,甚至最后请求会越积越多,从而触发too many connections错误。

通过使用消息队列,我们可以异步处理请求,从而缓解系统的压力。

另外,非基于消息队列的系统,其运行速度取决于系统中最慢的组件的速度(注:短板效应)。

而基于消息队列可以将系统中各组件解除耦合,这样系统就不再受最慢组件的束缚,各组件可以异步运行从而得以更快的速度完成各自的工作。

除此之外消息队列也可以抑制性能波峰的产生,在瞬时业务增长产生时保持性能曲线的平滑。


# 栈和队列

概念很简单,栈 (Stack)是一种后进先出(last in first off,LIFO)的数据结构,而队列(Queue)则是一种先进先出 (fisrt in first out,FIFO)的结构,如下图:


What is Stack and Queue

本文发表于2017年08月23日 09:11
阅读 2953 讨论 0 喜欢 1

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1