rabbitmq集群原理详解,原理介绍

KLQ 2020-06-09 14:13:09 java常见问答 4176

之前给大家介绍过rabbitmq集群模式,那么下面要给大家介绍的就是rabbitmq集群原理,你了解多少呢?下面就一起来看看吧。

1、rabbitmq集群方案原理

首先我们要清楚的知道,rabbitmq自身是基于Erlang来编写的。

Erlang语言天生就自带分布式特性,所以说,rabbitmq天生就支持集群。

集群可以保证可靠性,与此同时,还能够通过水平扩展来达到增加消息吞吐量能力的作用。

集群示例:

rabbitmq集群原理

在上图当中,采取了三个节点组成一个rabbitmq集群。

queue的完整数据只会存放在它所创建的那个节点上面。

其他的节点只知道,这个queue的metadata信息和一个指向queue的owner node的指针。

Exchange A的元数据信息在所有的节点上面都是一致的。

2、rabbitmq集群元数据的同步

rabbitmq集群始终都会同步队列元数据、交换器元数据、绑定元数据、vhost元数据这4种类型的内部元数据。

所以,在用户访问其中的任何一个rabbitmq节点的时候,通过rabbitmqctl查询到的queue、user、exchange、vhost等信息都会是一样的。

rabbitmq集群仅仅只采用了元数据同步的方式主要是从性能、存储空间两方面来考虑的。

3、rabbitmq集群发送和订阅消息

rabbitmq集群原理

以上是rabbitmq集群工作原理图

假如,有一个消息生产者又或者是一个消息消费者通过amqp-client客户端连接到节点1,进行消息或者是订阅消息,这样的话,这个时候集群当中的消息收发只和节点1有关系。

假如,消息生产者链接到节点2又或者是节点3,那么,这个时候,队列1的完整数据不在这两个节点上面。

这样的话,在发送消息的过程当中,这两个节点主要起了一个路由转发作用。

依据这两个节点上的元数据转发到节点1上面,最终,发送的消息还是会存储至节点1的队列1上面。

相同的,假如,连接的是节点2又或者是节点3,则,这两个节点也会作为路由节点,起到转发作用,将会从节点1的队列1中拉取消息进行消费。

4、集群节点类型

(1)磁盘节点

将配置信息和元信息存储在磁盘上

(2)内存节点

将配置信息和元信息存储在内存当中

性能是优于磁盘节点的

以上就是rabbitmq集群原理的介绍了,篇幅有限,假如你还想了解更多关于rabbitmq相关的内容,可以继续通过本站的java架构师栏目来了解哦。

推荐阅读:

rabbitmq详解,什么是rabbitmq?支持哪些编程语言?

rabbitmq优点有哪些?rabbitmq入门

springboot整合rabbitmq要怎么实现?意义在哪里?