rabbitmq由Erlang语言编写,实现了AMQP协定,是一款易用性、扩展性、高可用的分布式mq。

一、根本构造

这张图揭示了rabbitmq的根本构造,解释几个概念

  • broker
    rabbit服务实例
  • vhost虚拟主机
    每个 vhost 实质上就是一个 mini RabbitMQ 服务器,领有本人的队列、交换器、绑定和权限机制
  • channel信道
    生产者、消费者和broker建设连贯(connection)后,在链接上又建设的一层轻量级链接。

    如果把Connection比作一条光纤电缆的话,那么Channel信道就比作成光纤电缆中的其中一束光纤。一个 Connection上能够创立任意数量的Channel
  • queue队列
    外部保护的音讯队列
  • exchange交换机
    决定了消息传递到queue的形式
  • bind绑定关系
    exchange和queue之间的分割,决定了音讯的传递

    • binding-key:
      exchange和queue分割的key
  • message

    • routing-key:
      消息传递时路由。某些exchange类型,,以此传递到特定的queue中。
      如果binding-key是一辆公交车,会按特定路线行驶;那么routing-key就是票根,这张票对应着某辆公交车,带message去往目的地
    • header:
      音讯头,决定了headers这种交换机的路由形式

exchange类型

重点解释下exchange的几种类型

direct

exchange和queue绑定时指定binding-key。
消息传递时,通过音讯体中的routing-key找对应的binding-key,发送到具体的queue中

如果message中的routing-key是hello,发送到direct类型的exchange时,会寻找binding-key="hello"的绑定键。
能找到这个binding-key就推送数据到对应的队列;找不到就抛弃message

default

一种非凡的direct exchange,创立exchange时不指定exchange名称(或名称传空串)就会创立default exchange
新创建queue如果没设置绑定关系,会主动绑定到default exchange上,且binding-key与新创建的队列命雷同

比方新创建queue名为world,未设置绑定关系会绑定在default exchange上,binding-key="world";此时发送一条routing-key="world"的音讯,天然会路由到queue="world"的队列上

fanout

播送模式,发送到fanout exchange的音讯,会播送到全副与其绑定的queue上。

fanout模式不关怀binding-key和routing-key

topic

主题模式,与direct有些相似;差异在于,direct模式是精准匹配binding-key和routing-key,而topic模式是含糊匹配

topic模式匹配符有两种:#*

图中给了具体解释(topic-exchange),此处不多着笔墨

headers

也是一种含糊匹配的形式。
不过headers模式不再依附routing-key匹配,而是利用音讯中的headers头传到

二、集群高可用

原来一个broker为您服务,当初有N个broker为您服务。

一般集群

一般集群模式会将元数据拷贝,集群中的每个节点都有其它节点的元数据信息。

元数据蕴含以下内容

  1. 队列元数据:队列名称、属性;
  2. 交换器元数据:交换器名称、类型和属性;
  3. 绑定元数据:交换器与队列绑定关系,如binding_key;
  4. vhost元数据:虚拟主机外部配置和属性;

元数据只提供信息,能通知你某个队列在哪个broker节点上。

图中消费者要生产broker1上的queue1的音讯,但消费者链接到了broker3上。
broker3通过元数据信息晓得queue1在broker1上,将转发这次申请。
通过这种形式,消费者生产到了broker1的queue1音讯。

一般集群的劣势
音讯数据只保留了一份,节约磁盘空间
一般集群的劣势
如果一个broker故障,这个broker上的queue将不能操作

镜像集群

镜像模式的集群是在一般模式的根底上,通过policy来实现,应用镜像模式能够实现RabbitMQ的高可用计划。

以我的了解,镜像模式是在队列层面进行同步,主队列负责写,从队列作为镜像,复制从队列的信息,提供读服务。

消费者在生产音讯时,无需再作转发;而且如果某个broker故障,则从新选主。

附录

P6-P7常识合辑