2、rabbitMQ进一步介绍

1、Rabbit做用安全

  • 程序解耦,如一时间须要重复写入大量的数据时
  • 当RabbitMQ的负载增长时,因为它的消息是循环给消费者处理的有必定的负载均衡的做用

2、发后即忘模型负载均衡

消息通讯领域主要适用的模型之一发后即忘模型是。咱们只需关心这些任务将会完成,而不需关心是否实时完成。
一、发送警告
二、批处理: 上传图片会有多个业务,如记录日志,增长积分等能够经过famous 交换器:会将消息匹配到全部附加在此交换器上的队列 来广播你成功上传的任务从而触发后面的任务。

3、集群性能

RabbitMq会始终记录如下四种类型的内部元数据spa

  • 队列元数据:队列名称和它们的属性(是否可持久化,是否自动删除?)
  • 交换器元数据:交换器名称、类型和属性(可持久化)
  • 绑定元数据 :一张简单的表格展现了如何将消息路由到队列
  • vhost元数据:为vhost内的队列、交换器和绑定提供明湖曾空间和安全属性

一、集群中的队列日志

集群中单节点Rabbit的队列保存有本身的队列信息和队列绑定关系,而其余节点只有该队列的元数据(即队例的名称和属性),不会保存队列的内容和绑定关系。缘由同步复制开销太大^_^。

注意:
问题1、当Rabbit重启其队列的绑定关系也会销毁,消息被销毁队列

解决方式:在开始时设置队列持久化。

二、集群中的交换器图片

交换器只是逻辑上存在的,起到路由的用至关于一张记录了队列信息的查询表,得到信道的消息后再这张表中经过不一样方式进行匹配绑定。
输入图片说明

注意:
问题1、在路由绑定以前发生了消息丢失怎么办勒?事务

解决:一、使用AMQP事务。 二、返回确认消息,来记录链接中断时还没有被确认的信息。 这两种方法来确认消息没法路由的到目标队列的状况。当在集群中彻底复制结合,保证路由成功性从而不会丢失一条信息。

三、是内存节点仍是磁盘节点内存

每一个RabbitMQ节点,不论是单一节点系统或者是集群,要么是内存节点,要么是磁盘节点。
  • 内存节点将全部的队列、交换器、绑定、用户、权限和vhost元数据都仅存储在内存中
  • 磁盘节店则将元数据存储在磁盘中
单节点系统只容许磁盘类型的节点,不然每次你重启全部的配置信息都会丢失。在集群中也能够选择配置部分节点为内存节点,使得消息流动的性能更好
输入图片说明

说明:集群中要设置内存节点的缘由,在集群中声明交换器、队列或绑定的时候全部集群节点都要同步其元数据。对于磁盘来讲就是大量的磁盘操做,对于内存来就是变动写入内存。一般来讲集群中至少有一个节点是写入磁盘的方式其余节点宕机致使元数据不能恢复。路由

相关文章
相关标签/搜索