RocketMQ-02 集群架构部署
根据上一章《RocketMQ消费模型和部署模型》得知,启动rocketmq非常简单,只需要分别执行mqnamesrv启动NameServer,执行mqbroker启动Broker即可。但生产环境不可能仅使用单节点MQ,为提高可用性和吞吐量,生产常使用集群模式部署。本章节将详述Rocketmq集群模式部署方式。
1,预期的集群架构
如上图,通过三台MQ服务器,配置成2主2从集群架构。服务器1只用来部署一个NameServer,所以也可以配置成3主3从的架构。发布者和消费者可通过业务系统的集群部署增加吞吐量。
NameServer是无状态的,且相互间无需沟通,也就是说,每个NameServer的等级和数据是相同的,Broker可与任意NameServer连接。
Broker的主从分布在不同机器上,保证了数据安全性,当某个机器故障,每个Broker至少有一个节点存储的有数据,减少数据的丢失(非100%数据安全,未同步到从节点的数据仍会丢失)
2,部署步骤
2.1,修改配置
修改NameServer配置:
修改服务器1,2,3上的 runserver.sh,根据机器内存修改JVM参数。如下图:

默认是4G,根据JDK版本,当前机器使用JDK11,虚拟机内存为2G,故只分配256M
修改主从Broker配置:
同样需要先修改runbroker.sh的JVM参数,不再赘述,可见上章节。
主从文件修改,根据官方提供的sample修改。为保证环境干净,复制2m-2s-async至my-2m-2s-async。修改服务器2上的broker-a.properties,如下图:

同理,配置服务器3上的broker-a-s.properties,如下图:

broker-b.properties,broker-b-s.properties与broker-a.properties和broker-a-s.properties修改内容一致,仅brokerName不一样。注意:新增的几个日志文件位置,需要主从路径分开,本人因想当然放在一起,困扰好几天无法正常启动服务。
2.2,启动服务
机器2启动Broker-a和Broker-b-s,机器3启动Broker-b和Broker-a-s

同理启动其他Broker,启动后查看服务如下:

至此,Rocketmq的2m-2s的集群架构已搭建完成。
3,RocketMQ集群架构问题
在集群架构下,producer发送的消息都只发送给master,slave节点只是用来存储数据,保证数据安全。若master所在机器故障,Rocketmq并不会主动将slave升级为master对外提供服务。也就是说,如果上述案例中机器2故障,则机器2上的broker-a的master无法接收消息,虽然机器3运行正常,但机器3上的broker-a-s也无法接收消息。在机器2重新启动之前,发送至Broker-a的消息都将发送失败。
为解决上述问题,RocketMQ提供了dleger部署方式,各broker间自动选举出leader和follwer,正常情况下,leader用于对外提供服务,follwer用于备份数据。当leader发生故障,通过Raft协议(多数同意机制),自动选举出新的leader对外提供服务。该部署模式在5.0版本变动较大,后续直接详解5.0版本。
相关文章:
RocketMQ-02 集群架构部署
根据上一章《RocketMQ消费模型和部署模型》得知,启动rocketmq非常简单,只需要分别执行mqnamesrv启动NameServer,执行mqbroker启动Broker即可。但生产环境不可能仅使用单节点MQ,为提高可用性和吞吐量,生产常使用集群模式…...
处理报文后 展示在qtdesigner界面 ,有大量数据存储 怎样创建临时文件减少内存占用
处理大量数据并将其展示在 Qt Designer 创建的界面中时,确实可能会遇到内存占用过高的问题。使用临时文件来存储和管理数据是一种有效的解决方案,可以帮助减少内存占用。 import os import shutil import tempfile from PyQt5.QtWidgets import QApplica…...
后端-实现excel的导出功能(超详细讲解)
首先,不管是一大段文字还是一个几行几列的表格实现方式都是一样的。把动态的内容使用英文单词代替。动态的内容加不加下划线都可以,加了下划线最后生成的表格动态内容部分带有下划线,不加下划线最后生成的表格动态内容部分不带下划线。大家各…...
Docker compose部署portainer
整个工具的代码都在Gitee或者Github地址内 gitee:solomon-parent: 这个项目主要是总结了工作上遇到的问题以及学习一些框架用于整合例如:rabbitMq、reids、Mqtt、S3协议的文件服务器、mongodb github:GitHub - ZeroNing/solomon-parent: 这个项目主要是…...
【游戏引擎之路】登神长阶(十四)——OpenGL教程:士别三日,当刮目相看
【游戏引擎之路】登神长阶(十四)——OpenGL教程:士别三日,当刮目相看 2024年 5月20日-6月4日:攻克2D物理引擎。 2024年 6月4日-6月13日:攻克《3D数学基础》。 2024年 6月13日-6月20日:攻克《3D…...
相等日期问题(c++方法解决)
问题描述 对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。请问从 1900 年 1 月 1 日至 9999 年 12 月 31 日,总共有多少天,年份的数位数字之和等于月的数位数字之和加日的数位数字之…...
深度学习——优化算法、激活函数、归一化、正则化
文章目录 🌺深度学习面试八股汇总🌺优化算法方法梯度下降 (Gradient Descent, GD)动量法 (Momentum)AdaGrad (Adaptive Gradient Algorithm)RMSProp (Root Mean Square Propagation)Adam (Adaptive Moment Estimation)AdamW 优化算法总结 经验和实践建议…...
Android 老项目适配 Compose 混合开发
在Android项目中使用Jetpack Compose进行混合开发时,可以通过以下步骤进行适配: 1.更新项目的build.gradle文件,确保使用最新的Compose库版本。 dependencies { implementation androidx.compose.ui:ui:<latest_version> implementat…...
PH热榜 | 2024-11-14
DevNow 是一个精简的开源技术博客项目模版,支持 Vercel 一键部署,支持评论、搜索等功能,欢迎大家体验。 [在线预览](https://www.laughingzhu.c 1. Vocera 标语:利用模拟和监控加速语音代理上线 这句话的意思是:通过…...
删库跑路,启动!
起因:这是一个悲伤的故事,在抓logcat时 device待机自动回根目录了,而题主对当前路径的印象还停留在文件夹下,不小心在根目录执行了rm -rf * … 所以,这是个悲伤的故事,东西全没了…device也黑屏了ÿ…...
Vue 3 在现代前端开发中的应用
💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 Vue 3 在现代前端开发中的应用 Vue 3 在现代前端开发中的应用 Vue 3 在现代前端开发中的应用 引言 Vue 3 概述 定义与原理 发展历…...
【HarmonyOS】Hdc server port XXXX has been used.Configure environment variable
【HarmonyOS】Hdc server port XXXX has been used.Configure environment variable 一、 问题背景: 无法调试debug应用,IDE右下角显示该弹窗: Hdc server port XXXX has been used.Configure environment variable ‘OHOS_HDC_SERVER_POR…...
使用 ts-node 运行 ts文件,启动 nodejs项目
最近在写一个nodejs项目,使用 ts-node 启动项目。遇到了一些问题,在此记录一下。 ts-node 是 TypeScript 执行引擎和 Node.js 的 REPL(一个简单的交互式的编程环境)。 它能够直接在 Node.js 上执行 TypeScript,而无需预编译。 这是通过挂接…...
scala中的case class
package test_27 //Set的特点:唯一(元素不同);无序 //case class定义一组数据 case class Book(var bookName:String,var author:String,var price:Double){} object caseclass {def main(args: Array[String]): Unit {//定义一个…...
探索 HTTP 请求方法:GET、POST、PUT、DELETE 等的用法详解
文章目录 前言一、GET 方法:用于获取资源二、POST 方法:用于提交数据三、PUT 方法:用于更新资源四、DELETE 方法:用于删除资源五、PATCH 方法:用于部分更新资源六、HEAD 方法:用于请求响应头七、OPTIONS 方…...
前端项目中,public文件下的system.js有什么作用
SystemJS在前端项目中的作用主要包括模块加载、资源管理和兼容性处理。 模块加载 SystemJS是一个通用的模块加载器,支持多种模块规范,包括CommonJS、AMD、全局模块对象和ES6模块。通过使用插件,它还可以加载CoffeeScript和TypeScript。…...
odoo-040 odoo17前端的js方法调用后端py方法action报错
文章目录 问题描述梳理写法xml写法前端方法后端action的写法 错误解释 问题描述 在前端的kanban视图上添加了几个自定义按钮,按钮点击可以跳转到对应的tree视图,在写按钮调用方法的时候报错如下: 前端调用后端action报错: actio…...
图形 2.7 LDR与HDR
LDR与HDR B站视频:图形 2.7 LDR与HDR 文章目录 LDR与HDR基本概念LDRHDR为什么需要HDR不同显示屏的差异 Unity中的HDRCamera HDR 设置Lightmap HDR设置拾色器 HDR设置优缺点 HDR与Bloom通常Bloom渲染步骤渲染出原图获取图像中较亮部分高斯模糊叠加 Unity中Bloom渲染…...
DP动态规划基础题(Kadane算法)
动态规划(Dynamic Programming,简称DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学等领域中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划算法通常用于优化问题,特别是那…...
[UnLua]动态创建SceneCapture2d相机,并且添加渲染目标纹理
在 Unlua 开发中,相机相关的操作是构建场景视觉效果的重要部分。以下我们来详细分析一段涉及相机实例化和为相机赋予纹理目标的 Unlua 代码。 -- 实例化相机local World self:GetWorld()maskCamera World:SpawnActor(UE.ASceneCapture2D)-- 给相机赋值纹理目标lo…...
别再只用默认端口了!在Ubuntu 22.04上安全配置SSH的进阶指南:改端口、密钥登录与Fail2ban
Ubuntu 22.04服务器SSH安全加固实战:从基础防护到企业级防御 当你把Ubuntu服务器暴露在公网环境中,默认的SSH配置就像把家门钥匙挂在门把手上——方便但极度危险。每天都有数以万计的自动化脚本在扫描互联网上的22端口,尝试用常见用户名和弱密…...
影刀RPA 企业级专题篇:自动化中台架构与多业务流程治理实践
影刀RPA 企业级专题篇:自动化中台架构与多业务流程治理实践 作者:林焱 很多团队最开始做自动化。 目标都很简单。 让流程跑起来。 减少重复操作。 前期。 几个流程。 几台机器。 一个维护人员。 系统看起来非常轻。 但随着业务扩大。 问题会…...
跨国分布式团队协作实录:时区差不是最大障碍,信任才是
一、跨越时区:测试协作的“隐形战场”在全球化软件交付的浪潮中,跨国分布式测试团队早已成为行业标配。当上海的测试工程师迎着朝阳开始一天的工作时,旧金山的同事正披着夜色结束任务;当柏林团队在梳理测试用例,班加罗…...
文字修仙项目市场价值与商业化分析
文字修仙 AI Agent:市场价值与个人开发者商业化实战指南 一、文字修仙游戏的市场基本面——小众赛道的大机会 1.1 全球文字/互动叙事游戏市场规模与增长 1.2 中文修仙品类的独特生态:QQ群 → 微信 → 抖音 1.3 用户画像:谁在玩文字修仙&…...
离子原生QAOA算法:量子优化新突破
1. 离子原生QAOA算法概述量子近似优化算法(Quantum Approximate Optimization Algorithm, QAOA)是近年来量子计算领域最具前景的算法之一,特别适用于解决组合优化问题。该算法通过交替应用问题哈密顿量和混合哈密顿量,构建参数化量…...
3C产品功能太多15秒讲不完?用爆款复刻Agent做2分钟完整演示,用户看完直接下单
3C数码产品做千川素材,最容易遇到一个问题:功能很多,15秒根本讲不清。蓝牙耳机要讲降噪、音质、续航、佩戴舒适度;智能手表要讲运动监测、健康功能、续航、防水和系统兼容;小家电要讲使用场景、操作步骤、参数差异和售…...
基于java的畅阅读系统小程序设计与实现(源码+数据库+文档)
畅阅读系统小程 目录 基于java的畅阅读系统小程序设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师&a…...
【论文阅读】GEN-1: Scaling Embodied Foundation Models to Mastery
快速了解部分 基础信息(英文): 1.题目: GEN-1: Scaling Embodied Foundation Models to Mastery 2.时间: 2026.04 3.机构: Generalist AI 4.3个英文关键词: GEN-1, Embodied Intelligence, VLA 1句话通俗总结本文干了什么事情 本文发布了新一…...
我在大厂做开发的5年:那些996的日子
作为一名在互联网大厂摸爬滚打五年的开发工程师,如今转型成为软件测试团队的负责人,回望过去那些被996填满的日子,我有太多话想对同为技术从业者的测试同仁们说。这些经历不仅是我个人的成长印记,更藏着开发与测试岗位在高压环境下…...
CANN/asc-devkit算子动态库配置
KernelSo 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/c…...
