关于后端:后端面经架构RabbitMQ简介

48次阅读

共计 1535 个字符,预计需要花费 4 分钟才能阅读完成。

1. MQ 介绍

MQ(Message Queue)用于在应用程序之间互相通信,在音讯中发送数据进行通信,而不须要特意建设连贯传输数据。
与之对应的另一种通信形式是近程间接调用(RPC),须要先建设通信连贯而后传递数据。

2. RabbitMQ

2.1 简介

RabbitMQ 是一个开源的音讯队列零碎,应用 Erlang 语言编写的,基于 AMQP 协定的。
AMQP 全程是 Advanced Message Queuing Protocol,即高级音讯队列协定,是应用层协定的一个凋谢规范,为面向音讯的中间件设计。具备面向信息、队列、路由(包含点对点和公布 / 订阅)、可靠性、平安等特色。

2.2 架构:组件解释

RabbitMQ 的架构图如下所示:

上面介绍一下其中的次要概念:

  • Producer:音讯生产者,就是投递音讯的程序。
  • Connection:AMQP 客户端到 broker 的 TCP 连贯。
  • Channal:在 connection 外部建设的逻辑练级,这样一个 connection 可能承载多个拜访;
  • Broker:音讯队列服务器实体。
  • Virtual Host:虚拟主机,在多个用户应用同一个 RabbitMQ 服务器的时候,用于进行逻辑隔离,
  • Exchange:音讯交换机,它指定音讯中的 routing key 按什么规定,路由到哪个队列。次要的调配类型包含:

    • Direct:点对点(齐全匹配)
    • Fanout:播送
    • Topic:主题(规定匹配)
  • Queue:数据队列,音讯的载体,每个音讯都会被投入到一个或多个队列。
  • binding:是 exchange 和 queue 之间的虚构连贯,蕴含 routing key。

    2.3 特点

    RaybbiMQ 具备如下特点:

  • 可靠性:长久化、生产确认等传输机制保障传输的可靠性;
  • 灵便路由:应用 exchange 机制灵便路由,上面会具体介绍;
  • 音讯集群:多服务器组成集群;
  • 队列可用性:队列在集群的机器上能够镜像,局部节点出问题不影响整体可用性;
  • 反对多种协定:对于 STOMP、MQTT 等音讯队列协定的反对;
  • 跟踪机制:对于异样音讯提供音讯跟踪,不便确认异样起因;
  • 用户敌对:多语言客户端,治理界面易用,提供多种插件,也容许用户本人实现插件;

2.4 优缺点

  1. 长处
    RabbitMQ 具备解耦、异步、削峰的劣势;

    • 解耦:

      • 对于数据传入,个别的做法是间接把数据放在传输包中,从发送发传递给接管方,然而对于 RaybbiMQ,发送方只须要把数据放在音讯队列中,接管方从音讯队列中获取数据即可,这样就实现理解耦;
      • 这样的益处是发送发的队列数据长久化,不会因为接管方的问题导致数据失落,同时队列中的长久化数据能够被屡次复用。
    • 异步:

      • 正如解耦局部的解释,读写操作是异步进行的,不须要期待接管方的解决,这样就进步了零碎的吞吐量;
    • 削峰:

      • 当在流动日呈现大规模交易的时候,如果依照传统的收发操作,会造成服务器的承载累赘,置信大家都遇到过服务器解体的状况,这对于用户和公司来说都是很蹩脚的状况;
      • 应用 RabbitMQ 的时候,先临时将客户端的申请数据放在队列中,而后再缓缓解决,这样就能够防止服务器的解体。
  2. 毛病

    • 零碎复杂度:RabbitMQ 的应用会减少零碎的复杂度,须要思考到音讯的可靠性、反复生产、音讯失落等问题;

      • 零碎可用性:当 MQ 解体的时候,整个零碎就会陷入瘫痪,不应用 RabbitMQ 的时候,只有几个服务节点可能失常运行,整个零碎就能够失常运行;
    • 一致性问题:当多个消费者同时对一个队列进行读写,就会产生一致性问题

面试模仿

Q: 为什么抉择应用 RabbitMQ?
A:因为 RabbitMQ 具备解耦、异步、削峰的长处,保护音讯队列,进步传输的可靠性和读写异步。

参考资料

  1. RabbitMQ 的利用场景以及基本原理介绍
  2. rabbitMQ 到底是个啥货色?
  3. 一文带你理解 RabbitMQ 到底是个什么鬼!
正文完
 0