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

智能推荐

OpenShift 4.5 新特性 - 创建任务和定时任务_openshift cronjob-程序员宅基地

文章浏览阅读1.1k次。文章目录通过YAML创建创建Job创建CronJob使用命令创建Job创建CronJob在Kubernetes中分贝使用Job和CronJob实现一次性运行的任务和定时运行的的任务,他们分别被Kubernetes的JobController和CronJobController控制器所控制,而这些任务都是通过Pod运行的。在创建Job和CronJob对象的时候,既可以使用定义对象的YAML文件,还可使用命令直接创建。需要注意的是,从OpenShift 4.5开始,在使用oc命令创建Job和CronJob对_openshift cronjob

前端js实现canves画布中拖拽、放大、缩小、旋转图片和文字,设置背景图片,导出_fabric.js 截取固定大小图片-程序员宅基地

文章浏览阅读2.7k次。最近在研究canves,想实现一个可以在画布中操作上传的内容,不经意间发现了个插件Fabric.js。Fabric.js 是一个强大的H5 canvas框架,在原生canvas之上提供了交互式对象模型,通过简洁的api就可以在画布上进行丰富的操作。image。_fabric.js 截取固定大小图片

iOS 音频的录制、播放及音频文件管理_updatemeters-程序员宅基地

文章浏览阅读2.1w次,点赞2次,收藏6次。音频会话音效播放音乐播放音频录制音频管理音频队列服务参考地址_updatemeters

深入理解机械臂动力学建模_机械臂 组合体惯量法-程序员宅基地

文章浏览阅读1.8w次,点赞4次,收藏87次。A刚性机械臂机械臂建模是机械臂控制的基础,控制效果的好坏很大程度上决定于所建立的动力学模型的准确性。目前对刚性机械臂的动力学建模方法较多,理论较为成熟。而对于柔性空间机械臂的精确建模尚处在研究阶段。 表格1 刚体动力学建模原理..._机械臂 组合体惯量法

npm install 报错:gyp ERR! configure error gyp ERR! stack Error: EACCES: permission denied, mkdir '/Us_npm configure error报错-程序员宅基地

文章浏览阅读4k次。没有权限解决方案:sudo chown -R $USER /Users/huzhiqi/Downloads/web/projects/tag_web/node_modules/node-sass/注意:要看清是哪里没有权限,再给没有权限的文件夹设置权限。..._npm configure error报错

anaconda装好后,cmd不能使用conda等命令的解决_安装anaconda后cmd输入conda没反应-程序员宅基地

文章浏览阅读7.9k次,点赞2次,收藏3次。windows下安装好anaconda后,在cmd中使用conda命令会出现:'conda' 不是内部或外部命令,也不是可运行的程序或批处理文件把anaconda目录下的scripts添加到环境变量中就行了。..._安装anaconda后cmd输入conda没反应

随便推点

网络安全系列-XI: 主流网络协议介绍_xiip-程序员宅基地

文章浏览阅读4.2k次。本文针对主流的网络协议进行介绍_xiip

正则表达式-实数_实数正则判断-程序员宅基地

文章浏览阅读3k次。整数整数包括:0,正整数,负整数00的正则:^0$正整数正整数(必须为1-9开头,后面[0-9]0个或多个)的正则:^[1-9]\d*$负整数负整数(正整数前加"-"):^\-[1-9]\d*$0,正整数和负整数合并起来就是整数:^-?[1-9]\d*|0$小数(这里说的时末尾可以为0的小数)小数就是整数加上小数点再加上1个或多个[0-9],即^(\-?[1-9]\d*|0)\.\d+$"|"会作用于全部范围,所以要加括号。(这里说的时末尾不为0的小数)小数就是整_实数正则判断

RabbitMQ高级特性(消息可靠性投递 ACK TTL+死信队列 延迟队列 日志与监控 消息可靠性分析与追踪 消息可靠性保障 消息幂等性处理)_消息可靠性等级-程序员宅基地

文章浏览阅读500次。RabbitMQ高级特性RabbitMQ一、RabbitMQ高级特性1.1 消息可靠性投递搭建consumerproviderconfirmCallback 确认模式return 退回模式1.2Consumer ACK1.3 消费端限流1.4 TTL1.5 死信队列1.6 延迟队列1.7 日志与监控1.8 消息可靠性分析与追踪二、RabbitMQ应用问题2.1 消息可靠性保障2.2 消息幂等性处理RabbitMQ一、RabbitMQ高级特性1.1 消息可靠性投递在使用 RabbitMQ 的时候,作为_消息可靠性等级

Redis防止重复提交-程序员宅基地

文章浏览阅读2k次。以用户的id或者其他参数进行设置唯一的key,然后进行判断是否包含。为了防止用户频繁点击按钮,一直提交重复数据。_redis防止重复提交

vue 元素宽度_Vue指令可根据元素宽度自动调整字体大小_vue-resize-text-程序员宅基地

文章浏览阅读2.5k次。vue 元素宽度 Vue调整文字大小 (Vue Resize Text) A vue directive which automatically resize font size based on element width. Vue指令可根据元素宽度自动调整字体大小。 It makes the font-size flexible on fluid or responsive layout..._vue-resize-text

pytorch 简单方式实现最小池化-程序员宅基地

文章浏览阅读2.3k次,点赞9次,收藏5次。x = - max_pool(-x)_最小池化

推荐文章

热门文章

相关标签