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

智能推荐

while循环&CPU占用率高问题深入分析与解决方案_main函数使用while(1)循环cpu占用99-程序员宅基地

文章浏览阅读3.8k次,点赞9次,收藏28次。直接上一个工作中碰到的问题,另外一个系统开启多线程调用我这边的接口,然后我这边会开启多线程批量查询第三方接口并且返回给调用方。使用的是两三年前别人遗留下来的方法,放到线上后发现确实是可以正常取到结果,但是一旦调用,CPU占用就直接100%(部署环境是win server服务器)。因此查看了下相关的老代码并使用JProfiler查看发现是在某个while循环的时候有问题。具体项目代码就不贴了,类似于下面这段代码。​​​​​​while(flag) {//your code;}这里的flag._main函数使用while(1)循环cpu占用99

【无标题】jetbrains idea shift f6不生效_idea shift +f6快捷键不生效-程序员宅基地

文章浏览阅读347次。idea shift f6 快捷键无效_idea shift +f6快捷键不生效

node.js学习笔记之Node中的核心模块_node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是-程序员宅基地

文章浏览阅读135次。Ecmacript 中没有DOM 和 BOM核心模块Node为JavaScript提供了很多服务器级别,这些API绝大多数都被包装到了一个具名和核心模块中了,例如文件操作的 fs 核心模块 ,http服务构建的http 模块 path 路径操作模块 os 操作系统信息模块// 用来获取机器信息的var os = require('os')// 用来操作路径的var path = require('path')// 获取当前机器的 CPU 信息console.log(os.cpus._node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是

数学建模【SPSS 下载-安装、方差分析与回归分析的SPSS实现(软件概述、方差分析、回归分析)】_化工数学模型数据回归软件-程序员宅基地

文章浏览阅读10w+次,点赞435次,收藏3.4k次。SPSS 22 下载安装过程7.6 方差分析与回归分析的SPSS实现7.6.1 SPSS软件概述1 SPSS版本与安装2 SPSS界面3 SPSS特点4 SPSS数据7.6.2 SPSS与方差分析1 单因素方差分析2 双因素方差分析7.6.3 SPSS与回归分析SPSS回归分析过程牙膏价格问题的回归分析_化工数学模型数据回归软件

利用hutool实现邮件发送功能_hutool发送邮件-程序员宅基地

文章浏览阅读7.5k次。如何利用hutool工具包实现邮件发送功能呢?1、首先引入hutool依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.19</version></dependency>2、编写邮件发送工具类package com.pc.c..._hutool发送邮件

docker安装elasticsearch,elasticsearch-head,kibana,ik分词器_docker安装kibana连接elasticsearch并且elasticsearch有密码-程序员宅基地

文章浏览阅读867次,点赞2次,收藏2次。docker安装elasticsearch,elasticsearch-head,kibana,ik分词器安装方式基本有两种,一种是pull的方式,一种是Dockerfile的方式,由于pull的方式pull下来后还需配置许多东西且不便于复用,个人比较喜欢使用Dockerfile的方式所有docker支持的镜像基本都在https://hub.docker.com/docker的官网上能找到合..._docker安装kibana连接elasticsearch并且elasticsearch有密码

随便推点

Python 攻克移动开发失败!_beeware-程序员宅基地

文章浏览阅读1.3w次,点赞57次,收藏92次。整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置..._beeware

Swift4.0_Timer 的基本使用_swift timer 暂停-程序员宅基地

文章浏览阅读7.9k次。//// ViewController.swift// Day_10_Timer//// Created by dongqiangfei on 2018/10/15.// Copyright 2018年 飞飞. All rights reserved.//import UIKitclass ViewController: UIViewController { ..._swift timer 暂停

元素三大等待-程序员宅基地

文章浏览阅读986次,点赞2次,收藏2次。1.硬性等待让当前线程暂停执行,应用场景:代码执行速度太快了,但是UI元素没有立马加载出来,造成两者不同步,这时候就可以让代码等待一下,再去执行找元素的动作线程休眠,强制等待 Thread.sleep(long mills)package com.example.demo;import org.junit.jupiter.api.Test;import org.openqa.selenium.By;import org.openqa.selenium.firefox.Firefox.._元素三大等待

Java软件工程师职位分析_java岗位分析-程序员宅基地

文章浏览阅读3k次,点赞4次,收藏14次。Java软件工程师职位分析_java岗位分析

Java:Unreachable code的解决方法_java unreachable code-程序员宅基地

文章浏览阅读2k次。Java:Unreachable code的解决方法_java unreachable code

标签data-*自定义属性值和根据data属性值查找对应标签_如何根据data-*属性获取对应的标签对象-程序员宅基地

文章浏览阅读1w次。1、html中设置标签data-*的值 标题 11111 222222、点击获取当前标签的data-url的值$('dd').on('click', function() { var urlVal = $(this).data('ur_如何根据data-*属性获取对应的标签对象

推荐文章

热门文章

相关标签