消息队列RabbitMQ(二):RabbitMQ的系统架构图简述

序言

RabbitMQ是根据AMQP协议书的,要想深层次了解RabbitMQ,就务必先掌握AMQP是个什么东西?

AMQP协议书

AMQP即Advanced Message Queuing Protocol,高級消息队列协议书,是朝向消息中间件设计方案的网络层协议的一个对外开放规范。

AMQP是一个网络层协议,能够把它对比为HTTP协议书,最底层全是根据TCP/IP协议的,只不过是它是对于消息中间件设置的,它的设计方案全是为了更好地完成在经营者和顾客正中间传送信息。默认设置端口号为5672。

下面大家来剖析剖析AMQP协议书的模型设计(这实际上也是RabbitMQ的模型设计)

image-20210516200041684

能够见到AMQP是经营者顾客实体模型,经营者向网络服务器的网络交换机公布信息,网络交换机Exchange根据设置的路由器标准binding(有四种)关联的消息队列queue推送信息。顾客定阅网络服务器的消息队列,接受Message。

RabbitMQ的构架剖析

实际上大概上和AMQP类似,AMQP中也有channel,仅仅我没画出去。

  • channel:无线信道,时分复用联接中的一条单独的双重数据流分析安全通道,为对话给予物理学传输方式,在手机客户端的每一个联接里,可创建好几个安全通道。

下边说一下我对RabbitMQ的了解

RabbitMQ便是一个分布式数据库,你能把它对比成 Redis。RabbitMQ网络服务器中有好几个vm虚拟机,等同于 Redis 中的数据库查询。

经营者根据channel联接到网络交换机,先把信息内容发至网络交换机,网络交换机再根据路由器标准(binding)把信息内容发给关联的序列。

经营者只有将信息发送至网络交换机,它乃至都不清楚序列的存有。网络交换机一方面接受来源于经营者的信息,另一方面,将他们送入序列。因而网络交换机务必准确了解如何处理接到的信息。是不是应将其额外到特殊序列?是不是应当将其额外到很多序列中?或是应当将其丢掉。标准(也就是图中的binding)由互换定义方法,普遍的网络交换机种类有四种:direct, topic, headers 和fanout。

留意:Exchange(网络交换机)只承担分享信息,不具有储存信息的工作能力,因而要是没有一切序列与Exchange关联,或是沒有合乎路由器标准的序列,那麼信息会遗失!

顾客不和网络交换机相处,它定阅接受序列的信息内容。一旦序列不以空,它就随时随地取下消費。因而经营者生产制造完信息内容后能够关掉,顾客不可以关掉,要一直监视序列。

评论(0条)

刀客源码 游客评论