RocketMQ生产部署-程序员宅基地

技术标签: MQ  技术学习  大数据  RocketMQ  

本文英文原文来自RocketMQ官方部署文档


本章节介绍了准生产环境部署方案。综合来讲,我们要部署一套弹性伸缩并且没有单点故障的RocketMQ集群。

前提

开始本章之前,你需要先了解过快速开始,并且熟悉RocketMQ的组件和核心概念。

准生产环境部署

命名服务

为了保证单节点故障时集群仍然可运行,建议设置2台以上的命名服务。这样只要有一台命名服务还在运行,整个集群就是可用的。

命名服务遵循无共享的设计模式。代理服务会将心跳信息发送到所有命名服务。生产者和消费者能够从任意一台命名服务中查询元数据,来发送/消费消息。

代理服务

代理服务能够根据角色分为两种类型:主节点与从节点。主节点能够提供读写访问,而从节点只能够提供读服务。

为了部署一套没有单点故障的RocketMQ集群,我们应该有一系列的代理服务集。代理服务集群中,代理ID设置为0的就是主节点,非0的就是从节点。同一个集合中的代理服务的代理名称相同。在实际生产中,我们每个代理服务集群中至少应该有两个代理服务,每个主题都在两个或多个代理服务。

配置

当部署一个RocketMQ集群时,推荐配置如下:

代理服务配置

属性名称 默认值 说明
listenPort 10911 客户端调用的端口
namesrvAddr null 命名服务的地址
brokerIP1 网卡的网络地址 如果本机有多张网卡,应当定义
brokerName null 代理服务的名称
brokerClusterName DefaultCluster 当前代理服务归属于哪个集群
brokerId 0 当代理ID为0时表示为主节点,其他的正整数表示从节点
storePathCommitLog $HOME/store/commitlog/ 提交日志的存储地址
storePathConsumerQueue $HOME/store/consumequeue/ 消费队列的文件地址
mapedFileSizeCommitLog 1024 * 1024 * 1024(1G) 提交日志的映射文件的大小
deleteWhen 04 回收次数,用于删除提交日志
fileReserverdTime 72 删除提交日志之前保存的小时数
brokerRole ASYNC_MASTER 代理服务角色,共三种(SYNC_MASTER/ASYNC_MASTER/SLAVE)
flushDiskType ASYNC_FLUSH 刷新模式,包含两种(SYNC_FLUSH/ASYNC_FLUSH)。代理服务中,同步刷新模式是指每个消息在通知产生者前写入磁盘,异步刷新模式是指批量提交从而获得更好的性能

命令行管理工具

RocketMQ提供了命令行界面的管理工具用于查询,管理和诊断问题。

如何访问

命令行管理工具是RocketMQ自带,无论在下载的编译后版本,或者你自己从源码进行编译,都已经内置了。
如果你需要源码,在rocketmq-tools模块中包含对应的源码。

如何使用

管理工具的使用是很简单的。我们使用类linux环境来进行演示。
切换到RocketMQ的根目录下的 bin 文件夹,输入命令 bash mqadmin,你会看到下面的帮助菜单:

The most commonly used mqadmin commands are:
   updateTopic Update or create topic
   deleteTopic Delete topic from broker and NameServer.
   updateSubGroup Update or create subscription group
   deleteSubGroup Delete subscription group from broker.
   updateBrokerConfig Update broker's config
   updateTopicPerm Update topic perm
   topicRoute Examine topic route info
   topicStatus Examine topic Status info
   topicClusterList get cluster info for topic
   brokerStatus Fetch broker runtime status data
   queryMsgById Query Message by Id
   queryMsgByKey Query Message by Key
   queryMsgByUniqueKey Query Message by Unique key
   queryMsgByOffset Query Message by offset
   printMsg Print Message Detail
   printMsgByQueue Print Message Detail
   sendMsgStatus send msg to broker.
   brokerConsumeStats Fetch broker consume stats data
   producerConnection Query producer's socket connection and client version
   consumerConnection Query consumer's socket connection, client version and subscription
   consumerProgress Query consumers's progress, speed
   consumerStatus Query consumer's internal data structure
   cloneGroupOffset clone offset from other group.
   clusterList List all of clusters
   topicList Fetch all topic list from name server
   updateKvConfig Create or update KV config.
   deleteKvConfig Delete KV config.
   wipeWritePerm Wipe write perm of broker in all name server
   resetOffsetByTime Reset consumer offset by timestamp(without client restart).
   updateOrderConf Create or update or delete order conf
   cleanExpiredCQ Clean expired ConsumeQueue on broker.
   cleanUnusedTopic Clean unused topic on broker.
   startMonitoring Start Monitoring
   statsAll Topic and Consumer tps stats
   allocateMQ Allocate MQ
   checkMsgSendRT check message send response time
   clusterRT List All clusters Message Send RT
   getNamesrvConfig Get configs of name server.
   updateNamesrvConfig Update configs of name server.
   getBrokerConfig Get broker config by cluster or special broker!
   queryCq Query cq command.
   sendMessage Send a message
   consumeMessage Consume message

See 'mqadmin help <command>' for more information on a specific command.

使用 ‘mqadmin help’ 命令可以针对具体的命令查看更多信息。 比如你想查看 ‘clusterList’ ,输入 bash mqadmin help clusterList你会看到:

usage: mqadmin clusterList [-h] [-i <arg>] [-m] [-n <arg>]
 -h,--help Print help
 -i,--interval <arg> specify intervals numbers, it is in seconds
 -m,--moreStats Print more stats
 -n,--namesrvAddr <arg> Name server address list, eg: 192.168.0.1:9876;192.168.0.2:9876

复制模式

为了防止发布成功的消息丢失,RocketMQ提供了复制模式来提高系统健壮性和高可用,复制模式分为两种:同步和异步。

复制:同步/异步 代理服务

类似其他的复制系统,同步代理会等到从节点复制完成之后再返回成功信号,异步代理则是主节点处理完成后立即返回成功信号。

如何配置

在分布式RocketMQ的配置文件夹内已经内置了三种配置:

2m-2s-sync
2m-2s-async
2m-noslave

注意:所有配置都使用了异步刷新(ASYNC_FLUSH)。

部署

2m-2s-sync 为例。按照快速开始章节介绍的方式启动两个命名服务。假设IP时 192.168.0.2192.168.0.3
然后启动代理服务(假设RocketMQ位置是在 /home/rocketmq/dist

>cd /home/rocketmq/dist/bin
>bash mqbroker -c ../conf/2m-2s-sync/broker-a.properties -n 192.168.0.2:9876,192.168.0.3:9876
>bash mqbroker -c ../conf/2m-2s-sync/broker-a-s.properties -n 192.168.0.2:9876,192.168.0.3:9876
>bash mqbroker -c ../conf/2m-2s-sync/broker-b.properties -n 192.168.0.2:9876,192.168.0.3:9876
>bash mqbroker -c ../conf/2m-2s-sync/broker-b-s.properties -n 192.168.0.2:9876,192.168.0.3:9876
How to verify
Execute the following command to verify according to the CLI section:
> bash mqadmin clusterlist
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/pluto4596/article/details/88929593

智能推荐

springboot接收枚举值的默认方式_springboot get请求怎么接收前端传递的枚举数字-程序员宅基地

文章浏览阅读1.6k次。测试代码:@PostMapping() public void test(@RequestBody Student student){ System.out.println(student.getLover().name()); }class Student{ private Lover lover; public Lover getLover() { return lover; } public void setLover_springboot get请求怎么接收前端传递的枚举数字

【数学建模笔记】【第七讲】多元线性回归分析(二):虚拟变量的设置以及交互项的解释,以及基于Stata的普通回归与标准化回归分析实例_stata两个虚拟变量的交互项-程序员宅基地

文章浏览阅读1.5w次,点赞24次,收藏120次。简单来说就是去量纲后的回归(因为你要比较不同变量之间的显著性的大小,那么带着量纲怎么比,所以先把量纲去掉,然后再比较)官话:为了更为精准的研究影响评价量的重要因素(去除量纲的影响),我们可考虑使用标准化回归系数。_stata两个虚拟变量的交互项

mysql-程序员宅基地

文章浏览阅读203次。有时候安装mysql后使用mysql命令时报错 Can't connect to MySQL server on localhost (10061),或者用net start mysql 时报服务名无效,一般是因为mysql服务没有启动。这时候可以用管理身份运行cmd.exe(注意必须是管理..._c:\program files\mysql\mysql server 5.6\bin>mysqld --install install/remove

亚信科技java笔试题答案_亚信笔试题卷以及答案.docx-程序员宅基地

文章浏览阅读6.2k次,点赞3次,收藏44次。亚信联创科技校园招聘B 卷考试时间60_分钟 _考试方式(闭)卷(本试卷满分 100 分,答案请写在答题卡上)请不要在问卷上答题或涂改,笔试结束后请务必交回试卷部分内容分值备注一、计算机基础40分C/C++语言基础40分技能部分二、二选一JAVA 语言基础40分三、数据库20分总分100 分第一部分——计算机基础一、选择题(每题 2 分,总分 40分)1.CPU 状态分为目态和管态两种..._亚信科技java实习笔试题

三线城市程序员的薪资待遇怎么样?我分享提高java技术水平的几个方法_三线城市学java-程序员宅基地

文章浏览阅读1.3k次。3年对一个程序员来说是非常重要的。像我自己本身就是做程序员的,目前的薪资待遇是13K左右,虽然在我所在的公司不是最高的,但在所在的这个城市的消费水平来说,除了日常的开支,包括房租、水电、伙食、人际交往等费用之外,还能留下一部分闲钱自己存起来。不同城市的薪资待遇是不一样的,这主要是由于当地的消费水平和经济发展水平不同,所以如果你想要更高的薪资待遇,就要考虑在一线城市或者经济发达的城市工作。一个有着丰富工作经验的程序员,他的技能水平、经验和能力都比没有经验的程序员更加出色,所以他们的薪资待遇也会更高一些。_三线城市学java

Unity渲染顺序相关学习_unity overlaycamera depth-程序员宅基地

文章浏览阅读975次。1、camera(depth越小,越先渲染)2、sorting layer(值越小,越先渲染)(下面还有个sortingOrder 值越小,越先渲染)3、渲染队列renderQueue(值越小,越先渲染)4、深度值(距离相机越近该值越小,越远该值越大。)..._unity overlaycamera depth

随便推点

软件测试风险追踪表_软件测试风险管理表格-程序员宅基地

文章浏览阅读430次。软件测试风险追踪表风险追踪表 项目名称: 填制人: 编号 风险描述 影响 风险等级 发生的可能性 应对策略 状态 责任人 备注 ..._软件测试风险管理表格

AAC ADTS封装实现-程序员宅基地

文章浏览阅读1.2k次。一、AAC音频格式种类有哪些AAC音频格式是一种由MPEG-4标准定义的有损音频压缩格式。AAC包含两种格式 ADIF(Audio Data Interchange Format音频数据交换格式)和ADTS(Audio Data transport Stream音频数据传输流)。ADIF特点:可以确定的找到音视频数据的开始,不需要进行在音视频数据流中间开始的解码,它的解码必须在明确的定义开始。应用场景:常用在磁盘文件中。ADTS特点:具有同步字的比特流,解码可以在这个流中任何位置开始。类似于mp_aac adts

Unity基础概念_unity基本概念-程序员宅基地

文章浏览阅读213次。像要使用Resouce类,必须创建一个 Resouce 文件夹,然后把需要的资源放进去,才可以在代码中设置路径进行访问_unity基本概念

在gitlab中指定自定义 CI/CD 配置文件_gitlab配置cicd-程序员宅基地

文章浏览阅读2.4k次。指定自定义 CI/CD 配置文件,顾名思义就是在项目中指定文件来代替默认的.gitlab-ci.yml文件的方式来运行流水线。以往我们在使用流水线的时候,都是默认将.gitlab-ci.yml文件存在在项目的跟路径下,但是我们也可以指定备用文件名路径,或者不想在每个项目中来维护这个yml文件,那么通过自定义 CI/CD 配置文件便可以实现。_gitlab配置cicd

mysql出现#1063 - Incorrect column specifier for column 'id'的解决方法_sql 错误 [1063] [42000]: incorrect column specifier -程序员宅基地

文章浏览阅读1w次。出现这个表示如果设置了自动增长,字段类型应该设置为int整型。_sql 错误 [1063] [42000]: incorrect column specifier for column 'id' incorrec

java getlength_JAVA RSA-DerInputStream.getLength(): lengthTag=127, too big.-程序员宅基地

文章浏览阅读1k次。RSA 加载公钥时: Caused by: java.security.InvalidKeyException: IOException: DerInputStream.getLength(): lengthTag=127, too big.加载公钥代码段:public static String getPubKeyByCer(String cerPath){String pubKey = "";..._java.security.invalidkeyexception: ioexception : derinputstream.getlength():

推荐文章

热门文章

相关标签