醋醋百科网

Good Luck To You!

RabbitMQ最全详解(万字图文总结)(rabbitmq im)

关注mikechen十余年BAT架构经验倾囊相授!


大家好,我是mikechen。


RabbitMQ是大型架构必备的中间件,下面我全面详解RabbitMQ@mikechen

文章来源:mikechen.cc


RabbitMQ

RabbitMQ本身是基于Erlang编写,Erlang语言天生具备分布式特性,因此RabbitMQ天然支持集群。

RabbitMQ典型的应用场景,比如:订单生成后异步发送邮件、短信等。

RabbitMQ 节点包括内存节点(RAM)、 磁盘节点(Disk, 消息持久化), 集群中至少有一个 Disk 节点。

RabbitMQ集群主要有两个作用:

1.集群是保证可靠性的一种方式,采用多节点,是数据高可靠性的有效解决方案。

2.同时可以增加节点,通过水平扩展以达到增加消息吞吐量能力的目的。


RabbitMQ原理

RabbitMQ 的运作依赖几个重要组件:

组件之间的关系:

组件

作用

Producer(生产者)

发送消息的应用程序

Consumer(消费者)

接收消息的应用程序

Broker

RabbitMQ 服务器本体

Queue(队列)

存储消息的容器(FIFO)

Exchange(交换机)

接收生产者的消息,并根据规则(Routing Key + 绑定规则)把消息路由到队列

Binding(绑定)

Exchange 与 Queue 之间的映射规则

Routing Key

消息的路由标签,用于匹配绑定规则

Virtual Host(vhost)

虚拟隔离空间,一个 vhost 内可以有独立的队列、交换机、绑定


RabbitMQ工作流程

Producer│(msg, routing_key)▼Exchange--Binding-->Queue-->Consumer

首先,生产者发送消息到 Exchange。

然后,Exchange 决定消息走向,Exchange 根据类型和绑定规则路由消息。

  • Direct:精确匹配;
  • Fanout:广播;
  • Topic:模糊匹配;
  • Headers:头匹配;

然后,Binding 决定队列是否接收消息;

最后,Queue 保存消息,Consumer 消费。

RabbitMQ集群

RabbitMQ集群模式主要包含如下4种:

1.主备模式

主备模式:也就是主节点提供读写,备用节点不提供任何读写的,只用来实现当主节点宕机的情况下能顶上去。

如下图所示:

可通过haproxy来配置:

listen rabbitmq_clusterbind 0.0.0.0:5672# 配置TCP模式mode tcp #简单的轮询balance roundrobin # 主节点server bhz76 192.168.11.76:5672 check inter 5000 rise 2 fall 2server bhz76 192.168.11.77:5672 backup check inter 5000 rise 2 fall 2# 备用节点

2.远程模式

远程模式:就是我们可以把消息进行不同数据中心的复制工作,可以跨地域的让两个mq集群互联远距离通信和复制。

如下图所示:

远程模式,在实际应用种不太常用。


3.镜像模式

镜像模式(Mirror),就是集群里面的每个节点都会存储Queue的数据副本,在实际工作中也是用的最多。

如下图所示,一般是3个节点:

集群镜像模式,意味着每次生产消息的时候,都需要把消息内容同步给集群中的其他节点,这种方式能够保证Queue的高可用性。

一般互联网大厂都会构建这种镜像集群模式,在实际工作中也是用的最多的。


4.多活模式

这种模式也是实现异地数据复制的主流模式,模型如下图所示:

RabbitMQ部署架构采用:双中心模式(多中心),在两套或多套数据中心各部署一套RabbitMQ集群,可以避免一个集群挂掉,整个系统就挂掉了。

各个中心的RabbitMQ服务除了需要为业务提供正常的消息服务外,中心之间还需要实现部分队列消息共享。

以上

本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言