淘先锋技术网

首页 1 2 3 4 5 6 7

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

消息中间件-RabbitMq集群搭建及镜像队列 (高可用性、一台宕机自动切换另一台) ,镜像队列是基于普通的集群模式的


提示:以下是本篇文章正文内容,下面案例可供参考

一、RabbitMq是什么?

RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
RabbitMQ三大优势:
1.解耦:
若不使用MQ,当分布式系统中的一个系统给多个子系统提供数据时,当下游的子系统发生更改,Publisher也需要做出对应的更改。系统耦合性较高。
使用RabbitMQ以后,我们只需要让Publisher将消息发送到中间件即可,而并不需要关心谁去接收这条消息。
2.异步:
以系统多级调用为例:
下单成功(订单系统)–发送短信(短信系统)–xxx(下游子系统)
若发送短信和其下游的子系统并没有关联,那么我们可以在下单成功以后,将消息存储到RabbitMQ中,让短信系统和下游子系统异步执行。缩短系统总的运行时间。
3.削峰填谷:
若请求瞬间增多,来了5000个请求,而A系统无法一秒钟处理5000个请求,我们可以将这5000个请求存储到MQ中,然后每秒从MQ中取出1000个消息进行消费。

削峰填谷的原理:
其实就是利用Consumer的限流机制:
首先确认ack机制为手动签收。(在手动签收前sleep1s即可)
其次listener-container配置属性perfetch=1000也就是说一次消费1000条消息。

二、RabbitMq集群搭建步骤

1.环境说明

操作系统:Windows Server 2012
Erlang版本:21.3
RabbitMQ版本:3.7.14

三台服务器rabbitMq组成的集群
192.168.85.100 scck2svr04
192.168.85.101 scck2db04
192.168.85.102 scck2svr03

2.RabbitMQ 安装

先安装 otp_win64_21.3.exe
再安装 rabbitmq-server-3.7.14.exe
设置环境变量,具体操作步骤为:
我的电脑 -> 属性 -> 高级系统设置 -> 环境变量

安装成功之后,我们在第一台主服务器上搜索 .erlang.cookie
在这里插入图片描述
复制出一个 .erlang.cookie 文件到另外两台服务器上进行覆盖,注意,要覆盖另外两台服务器的两个目录下都要覆盖,覆盖完之后重启另外两台服务器,重启完成之后我们需要启动 RabbitMQ 并加入集群,首先我们启动第一台服务器,执行以下命令:

rabbitmq-service stop
rabbitmq-service start
rabbitmqctl start_app

第一台服务器的 RabbitMQ 服务器启动之后我们可以执行一下命令安装可视化操作界面:

rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_mqtt(1883)
rabbitmq-plugins enable rabbitmq_web_mqtt(15675)

插件安装完成之后我们可以通过浏览器访问服务器的 15672 端口访问可视化页面:
在这里插入图片描述

3.RabbitMQ 集群搭建

第一台服务器已经装好了,那么接下来开始装第二台并加入集群,安装第二台与第一台执行同样的命令:

rabbitmq-service stop
rabbitmq-service start
rabbitmqctl start_app

rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_mqtt
rabbitmq-plugins enable rabbitmq_web_mqtt

rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@scck2svr04
rabbitmqctl start_app

第三台服务器的操作和第二台也是一样,执行完以下命令:

rabbitmq-service stop
rabbitmq-service start
rabbitmqctl start_app

rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_mqtt
rabbitmq-plugins enable rabbitmq_web_mqtt

rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@scck2svr04
rabbitmqctl start_app

执行完命令之后我们重新刷新可视化页面就发现集群中出现了3台服务器了:
在这里插入图片描述

4.RabbitMQ镜像队列

Windows RabbitMQ 镜像队列 (高可用性、一台宕机自动切换另一台)
镜像队列是通过RabbitMQ 的配置策略(policy)来实现的:
镜像队列提供了三种模式:

Ø  all:全部的节点队列都做镜像;

Ø  exactly:指定镜像队列的节点最高镜像数量;

Ø  nodes:只为指定具体节点配置镜像队列;

该处使用的url网络请求的数据。
镜像创建完成 如下图:
在这里插入图片描述
镜像创建完毕后 队列 如下图:
在这里插入图片描述


总结

记录点点滴滴