三台Windows服务器搭建RabbitMq集群及镜像队列

news2025/1/19 22:23:37

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

文章目录

  • 前言
  • 一、RabbitMq是什么?
  • 二、RabbitMq集群搭建步骤
    • 1.环境说明
    • 2.RabbitMQ 安装
    • 3.RabbitMQ 集群搭建
    • 4.RabbitMQ镜像队列
  • 总结


前言

消息中间件-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网络请求的数据。
镜像创建完成 如下图:
在这里插入图片描述
镜像创建完毕后 队列 如下图:
在这里插入图片描述


总结

记录点点滴滴

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/469444.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu 23.04 安装 Harbor

Ubuntu 23.04 安装 Harbor 安装 Docker CE配置 tls 证书配置 docker 信任自签名证书下载和安装 Harbor设置 Harbor 开机启动验证 安装 Docker CE sudo apt-get remove docker docker-engine docker.io containerd runcsudo apt-get update -y sudo apt-get install -y \ca-cer…

shell脚本----循环语句for

文章目录 一、echo命令二、for循环三、continue和break 一、echo命令 常见转义字符: 转义符号含义-n表示不换行输出\e输出转义字符,将转义后的内容输出到屏幕上\b转义后相当于按退格键,但前提是b后面存在字符: b表示删除前一个字符&#xf…

【Spring篇】IOC/DI配置管理第三方bean

🍓系列专栏:Spring系列专栏 🍉个人主页:个人主页 目录 一、案例:数据源对象管理 1.环境准备 2.实现Druid管理 3.实现C3P0管理 二、加载properties文件 1.第三方bean属性优化 2.读取单个属性 3.注意事项 三、核心容器 1.环境准备 2.容器 1.容器的创建…

linux|进程间通信如何加锁

进程间通信有一种[共享内存]方式,大家有没有想过,这种通信方式中如何解决数据竞争问题?我们可能自然而然的就会想到用锁。但我们平时使用的锁都是用于解决线程间数据竞争问题,貌似没有看到过它用在进程中,那怎么办&…

【Linux】进程概念与fork初识——if与else竟然能够同时执行?!

文章目录 💐专栏导读💐文章导读🌷进程是什么🌷进程的描述——PCB🌷进程的组织🌷如何查看进程🌷如何通过系统调用查看进程PID🌷通过系统调用创建进程🌺认识fork&#x1f3…

TuGraph 开源数据库体验

TuGraph 开源数据库体验 文章目录 TuGraph 开源数据库体验1. 简单介绍2. 可视化界面体验:查询界面:数据建模:数据导入: 3. 体验心得: 1. 简单介绍 TuGraph 是蚂蚁集团自主研发的大规模图计算系统,提供图数…

大数据技术之SparkSQL

第1章 Spark SQL概述 1.1 什么是Spark SQL 1)Spark SQL是Spark用于结构化数据(Structured Data)处理的Spark模块。 1.2 为什么要有Spark SQL 1.3 Spark SQL原理 1.3.1 什么是DataFrame (1)DataFrame是一种类似RDD的分…

统计学习方法第四章——朴素贝叶斯法

x.1 前言 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。是通过给定training dataset学习联合概率分布的方法,是一种生成方法。 x.2 使用贝叶斯定理做分类 使用贝叶斯定理做分类,相比较于朴素贝叶斯即丢除特征条件独立假设这个条件。 …

MySQL主从复制详细介绍

一、主从复制的目的 ​ MySQL内建的复制功能是构建基于MySQL的大规模、高性能应用的基础,复制功能的目的是构建高性能的应用,同时也是高可用性、可扩展性、灾难恢复、备份以及数据仓库等工作的基础。比较常见的用途有以下几种: 数据分布&am…

APP渗透—查脱壳、反编译、重打包签名

APP渗透—查脱壳、反编译、重打包签名 1. 前言1.1. 其它 2. 安装工具2.1. 下载jadx工具2.1.1. 下载链接2.1.2. 执行文件 2.2. 下载apktool工具2.2.1. 下载链接2.2.2. 测试 2.3. 下载dex2jar工具2.3.1. 下载链接 3. 查壳脱壳3.1. 查壳3.1.1. 探探查壳3.1.2. 棋牌查壳 3.2. 脱壳3…

【MiniGPT-4】手把手教部署

最近MiniGPT4开源了,获得了很多网友好评,在Github上获得了1.6万的star,它相比ChatGPT3.5来说,可以实现图片识别,生成想要的文本效果,理解能力非常强。 论文地址:https://github.com/Vision-CAIR…

【大数据之Hadoop】二十一、MapReduce、HDFS、Yarn配合工作(作业提交全过程)

1-11、26为Yarn;12-17为HDFS写数据流程;18-25、27-31为MapReduce;19-25为Shuffle;32-41为HDFS写数据流程。 (0)MR程序提交到客户端所在的节点,在集群模式中运行MR程序,当运行到主函…

数学建模第七天:数学建模算法篇之插值及MATLAB实现

目录 一、前言 1、引例 2、拟合定义 3、拟合与插值的关系 二、拟合 1、线性最小二乘法求解 ①思路 ②解法 2、MATLAB对线性最小二乘拟合的实现 ①函数说明 ②求解例题 3、MATLAB实现非线性曲线拟合 ①lsqcurvefit函数 ②代码求解 4、MATLAB实现非线性最小二乘拟…

华为2023暑期笔试(2-2)——最近最少使用(LRU, Least recently used)缓存算法

目录 题目内容解答要求(解答要求限制了只能使用LRU)输入描述样例思路代码 题目内容 你是一名网络工程师,你正在为一家云计算公司开发一个虚拟机管理系统。你的系统需要为每个虚拟机分配一个唯一的ID,用来标识和通信。为了实现这个…

C++基础demo(C++入门基础案例)

C入门基础案例学习与了解 demo16 计算年份是否为闰年(各种运算符结合)demo17 打印ASCII码表demo18 求完数demo19 密码验证(if……else)demo20 图书管理(if…else if…else)demo21 信号灯(和--&a…

python中使用ctypes库调用使用MMDeploy C++ SDK编译得到的dll文件时,出现WinError126的解决方法

之前,通过以下两篇文章,着重介绍了,使用openMMLab开发的MMDeploy库对MMxx系列仓库训练得到的权重pth转换得到的onnx,并分别使用python SDK和C SDK进行调用的详细步骤: 使用MMDeploy(预编译包)转…

Enterprise:如何在 Elastic 企业搜索引擎中添加对更多语言的支持

作者:Ioana-Alina Tagirta Elastic App Search 中的引擎(engines)使你能够索引文档并提供开箱即用的可调搜索功能。 默认情况下,引擎支持预定义的语言列表。 如果你的语言不在该列表中,此博客将说明如何添加对其他语言…

RabbitMQ笔记

一、MQ与RabbitMQ概述 1. MQ简述 MQ(Message Queue)消息队列,是基础数据结构中 “先进先出” 的一种数据结构,也是在消息的传输过程中保存消息的容器(中间件),多用于分布式系统之间进行通信。 …

[Pandas] 设置DataFrame的index索引起始值为1

导入数据 import pandas as pddf pd.DataFrame([[liver,E,89,21,24,64],[Arry,C,36,37,37,57],[Ack,A,57,60,18,84],[Eorge,C,93,96,71,78],[Oah,D,65,49,61,86]], columns [name,team,Q1,Q2,Q3,Q4]) df 上述DataFrame中的index索引列默认是从0开始的,那么我们…