Linux云计算运维架构师(连载)-消息队列-RabbitMQ-01

Linux云计算运维架构师(连载)-消息队列-RabbitMQ-01

RabbitMQ是目前非常热门的一款消息中间件,不管是互联网行业还是传统行业都在大量地使用。RabbitMQ凭借其高可靠、易扩展、高可用及丰富的功能特性受到越来越多企业的青睐。作为一个合格的运维工程师,有必要深入地了解RabbitMQ的相关知识,为自己的职业生涯添砖加瓦。

5.1 消息中间件

5.1.1 消息中间件简介

消息(Message)是指在应用间传送的数据信息,它可以简单到只包含文本字符串或者标点等,也可以很复杂。

消息队列中间件(Message Queue Middleware,简称为MQ)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。它是一种应用程序对应用程序的通信方法,应用程序通过读写出入队列的消息(针对应用程序的数据)来通信。消息传递指的是程序之间,通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信。

在项目中,消息队列中间件可以将一些无需即时返回且耗时的操作提取出来,进行异步处理,节省服务器的请求响应时间,提高系统的吞吐量。

5.1.2 消息中间件的主要作用

消息中间件在不同的应用场景中会展现不同的作用,大致可以分为以下8点。

l 解耦(将不同的系统分离开)

解耦是指降低模块之间的耦合度,减少不同系统或软件之间的相互影响。

l 冗余(存储)

有些情况下,处理数据的过程会失败。消息中间件可以把数据进行持久化直到它们已经被完全处理,通过这一方式规避数据丢失的风险。只有处理系统明确地指出该消息已经被处理完成,该消息才能从消息中间件中删除,系统通过这种方式确保数据被安全地保存直到使用完毕。

l 扩展性

因为消息中间件解耦了应用的处理过程,所以提高消息入队和处理的效率,只需要另外增加处理过程即可,不需要调整代码或者参数。

l 削峰

在访问量剧增的情况下,应用需要超负荷完成工作,但是这样的突发流量并不经常发生。如果以该类峰值为标准投入资源,将会造成巨大的浪费。使用消息中间件能够在访问量剧增的情况下,对访问请求进行削峰,使关键组件支撑突发访问压力,不因为突发的超负荷请求而完全崩溃。

l 可恢复性

当系统一部分组件失效时,不会直接导致整个系统崩溃。消息中间件降低了进程间的耦合度,即使一个处理消息的进程突然挂掉,已经存入消息中间件中的消息仍然可以在系统恢复后进行处理,确保该消息不会因中断而丢失。

l 顺序保证

在多数使用场景下,数据的处理顺序十分重要,大部分消息中间件在一定程度上支持顺序性。

l 缓冲

消息中间件通过一个缓冲层来帮助任务最高效率地执行,写入消息中间件的处理会尽可能快速。该缓冲层有助于控制和优化数据流经过系统的速度。

l 异步通信

在很多时候应用不想也不需要立即处理消息。消息中间件提供了异步处理机制,允许应用把一些消息放入消息中间件中,但并不立即处理它,在需要的时候再慢慢处理。