共计 1004 个字符,预计需要花费 3 分钟才能阅读完成。
一、Rabbit 作用
- 程序解耦,如一时间须要反复写入大量的数据时
- 当 RabbitMQ 的负载减少时,因为它的音讯是循环给消费者解决的有肯定的负载平衡的作用
二、发后即忘模型
音讯通信畛域次要实用的模型之一发后即忘模型是。咱们只需关怀这些工作将会实现,而不需关怀是否实时实现。
1、发送正告
2、批处理: 上传图片会有多个业务,如记录日志,减少积分等能够通过 famous 交换器:会将音讯匹配到所有附加在此交换器上的队列 来播送你胜利上传的工作从而触发前面的工作。
三、集群
RabbitMq 会始终记录以下四种类型的外部元数据
- 队列元数据:队列名称和它们的属性(是否可长久化,是否主动删除?)
- 交换器元数据:交换器名称、类型和属性(可长久化)
- 绑定元数据:一张简略的表格展现了如何将音讯路由到队列
- vhost 元数据:为 vhost 内的队列、交换器和绑定提供明湖曾空间和平安属性
1、集群中的队列
集群中单节点 Rabbit 的队列保留有本人的队列信息和队列绑定关系,而其余节点只有该队列的元数据(即队例的名称和属性),不会保留队列的内容和绑定关系。起因同步复制开销太大 ^_^。
留神:
问题一、当 Rabbit 重启其队列的绑定关系也会销毁,音讯被销毁
解决形式:在开始时设置队列长久化。
2、集群中的交换器
交换器只是逻辑上存在的,起到路由的用相当于一张记录了队列信息的查问表,取得信道的音讯后再这张表中通过不同形式进行匹配绑定。
留神:
问题一、在路由绑定之前产生了音讯失落怎么办勒?
解决:1、应用 AMQP 事务。2、返回确认音讯,来记录连贯中断时尚未被确认的信息。这两种办法来确认音讯无奈路由的到指标队列的状况。当在集群中齐全复制联合,保障路由胜利性从而不会失落一条信息。
3、是内存节点还是磁盘节点
每个 RabbitMQ 节点,不论是繁多节点零碎或者是集群,要么是内存节点,要么是磁盘节点。
- 内存节点将所有的队列、交换器、绑定、用户、权限和 vhost 元数据都仅存储在内存中
- 磁盘节店则将元数据存储在磁盘中
单节点零碎只容许磁盘类型的节点,否则每次你重启所有的配置信息都会失落。在集群中也能够抉择配置局部节点为内存节点,使得音讯流动的性能更好
阐明:集群中要设置内存节点的起因,在集群中申明交换器、队列或绑定的时候所有集群节点都要同步其元数据。对于磁盘来说就是大量的磁盘操作,对于内存来就是变更写入内存。通常来说集群中至多有一个节点是写入磁盘的形式其余节点宕机导致元数据不能复原。