From 250fd8fcb315d0f879cd768e4ff701d985f39e1f Mon Sep 17 00:00:00 2001 From: gosonzhang Date: Wed, 23 Oct 2024 19:25:02 +0800 Subject: [PATCH 1/4] [INLONG-11386][TubeMQ] Use local files to save consumer group offset information (#11395) --- docs/modules/tubemq/configure_introduction.md | 65 ++--- docs/modules/tubemq/img/sys_structure.png | Bin 54641 -> 145872 bytes docs/modules/tubemq/overview.md | 4 +- docs/modules/tubemq/quick_start.md | 21 +- .../modules/tubemq/configure_introduction.md | 262 +++++++++--------- .../modules/tubemq/img/sys_structure.png | Bin 54641 -> 145872 bytes .../current/modules/tubemq/overview.md | 60 ++-- .../current/modules/tubemq/quick_start.md | 113 ++++---- 8 files changed, 251 insertions(+), 274 deletions(-) diff --git a/docs/modules/tubemq/configure_introduction.md b/docs/modules/tubemq/configure_introduction.md index 4223ba65840..c217b0b15bf 100644 --- a/docs/modules/tubemq/configure_introduction.md +++ b/docs/modules/tubemq/configure_introduction.md @@ -9,7 +9,7 @@ The TubeMQ server includes two modules for the Master and the Broker. The Master Master and Broker use the ini configuration file format, and the relevant configuration files are placed in the master.ini and broker.ini files in the tubemq-server-x.y.z/conf/ directory: ![](img/configure/conf_ini_pos.png) -Their configuration is defined by a set of configuration units. The Master configuration consists of four mandatory units: [master], required but optional in [meta_zookeeper], [meta_bdb], and optional [tlsSetting]. The Broker configuration is mandatory. Broker], [zookeeper] and optional [tlsSetting] consist of a total of 3 configuration units; in actual use, you can also combine the contents of the two configuration files into one ini file. +Their configuration is defined by a set of configuration units. The Master configuration consists of four mandatory units: [master], required but optional in [meta_zookeeper], [meta_bdb], and optional [tlsSetting]. The Broker configuration is mandatory. [Broker], and optional [tlsSetting] consist of a total of 2 configuration units; in actual use, you can also combine the contents of the two configuration files into one ini file. **Note**: - Due to the LICENSE problem of the Apache dependency package, the package released by TubeMQ from version 1.1.0 no longer contains the BDB package; @@ -121,44 +121,37 @@ In addition to the back-end system configuration file, the Master also stores th [broker] >The broker system runs the main configuration unit, required unit, and the value is fixed to "[broker]" -| Name | Required | Type | Description | -| --------------------- | ----------------------------- | ----------------------------- | ------------------------------------------------------------ | -| brokerId | yes | int | Server unique flag, required field, can be set to 0; when set to 0, the system will default to take the local IP to int value | -| hostName | yes | string | The host address of the broker external service, required, must be configured in the NIC, is enabled, non-loopback and cannot be IP of 127.0.0.1 | -| port | no | int | Broker listening port, optional, default is 8123 | -| webPort | no | int | Broker's http management access port, optional, default is 8081 | -| masterAddressList | yes | string | Master address list of the cluster to which the broker belongs. Required fields. The format must be ip1:port1, ip2:port2, ip3:port3. | -| primaryPath | yes | string | Broker stores the absolute path of the message, mandatory field | -| maxSegmentSize | no | int | Broker stores the file size of the message data content, optional field, default 512M, maximum 1G | -| maxIndexSegmentSize | no | int | Broker stores the file size of the message Index content, optional field, default 18M, about 70W messages per file | -| transferSize | no | int | Broker allows the maximum message content size to be transmitted to the client each time, optional field, default is 512K | -| consumerRegTimeoutMs | no | long | Consumer heartbeat timeout, optional, in milliseconds, default 30 seconds | -| socketRecvBuffer | no | long | Socket receives the size of the Buffer buffer SO_RCVBUF, the unit byte, the negative number is not set, the default value is | -| socketSendBuffer | no | long | Socket sends Buffer buffer SO_SNDBUF size, unit byte, negative number is not set, the default value is | -| tcpWriteServiceThread | no | int | Broker supports the number of socket worker threads for TCP production services, optional fields, and defaults to 2 times the number of CPUs of the machine. | -| tcpReadServiceThread | no | int | Broker supports the number of socket worker threads for TCP consumer services, optional fields, defaults to 2 times the number of CPUs of the machine | -| logClearupDurationMs | no | long | The aging cleanup period of the message file, in milliseconds. The default is 3 minutes for a log cleanup operation. The minimum is 1 minutes. | -| logFlushDiskDurMs | no | long | Batch check message persistence to file check cycle, in milliseconds, default is 20 seconds for a full check and brush | -| visitTokenCheckInValidTimeMs | no | long | The length of the delay check for the visitToken check since the Broker is registered, in ms, the default is 120000, the value range [60000, 300000]. | -| visitMasterAuth | no | boolean | Whether the authentication of the master is enabled, the default is false. If true, the user name and signature information are added to the signaling reported to the master. | -| visitName | no | string | User name of the access master. The default is an empty string. This value must exist when visitMasterAuth is true. The value must be the same as the value of the visitName field in master.ini. | +| Name | Required | Type | Description | +| --------------------- | ----------------------------- | ----------------------------- |------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| brokerId | yes | int | Server unique flag, required field, can be set to 0; when set to 0, the system will default to take the local IP to int value | +| hostName | yes | string | The host address of the broker external service, required, must be configured in the NIC, is enabled, non-loopback and cannot be IP of 127.0.0.1 | +| port | no | int | Broker listening port, optional, default is 8123 | +| webPort | no | int | Broker's http management access port, optional, default is 8081 | +| masterAddressList | yes | string | Master address list of the cluster to which the broker belongs. Required fields. The format must be ip1:port1, ip2:port2, ip3:port3. | +| primaryPath | yes | string | Broker stores the absolute path of the message, mandatory field | +| maxSegmentSize | no | int | Broker stores the file size of the message data content, optional field, default 512M, maximum 1G | +| maxIndexSegmentSize | no | int | Broker stores the file size of the message Index content, optional field, default 18M, about 70W messages per file | +| transferSize | no | int | Broker allows the maximum message content size to be transmitted to the client each time, optional field, default is 512K | +| consumerRegTimeoutMs | no | long | Consumer heartbeat timeout, optional, in milliseconds, default 30 seconds | +| socketRecvBuffer | no | long | Socket receives the size of the Buffer buffer SO_RCVBUF, the unit byte, the negative number is not set, the default value is | +| socketSendBuffer | no | long | Socket sends Buffer buffer SO_SNDBUF size, unit byte, negative number is not set, the default value is | +| tcpWriteServiceThread | no | int | Broker supports the number of socket worker threads for TCP production services, optional fields, and defaults to 2 times the number of CPUs of the machine. | +| tcpReadServiceThread | no | int | Broker supports the number of socket worker threads for TCP consumer services, optional fields, defaults to 2 times the number of CPUs of the machine | +| logClearupDurationMs | no | long | The aging cleanup period of the message file, in milliseconds. The default is 3 minutes for a log cleanup operation. The minimum is 1 minutes. | +| logFlushDiskDurMs | no | long | Batch check message persistence to file check cycle, in milliseconds, default is 20 seconds for a full check and brush | +| visitTokenCheckInValidTimeMs | no | long | The length of the delay check for the visitToken check since the Broker is registered, in ms, the default is 120000, the value range [60000, 300000]. | +| visitMasterAuth | no | boolean | Whether the authentication of the master is enabled, the default is false. If true, the user name and signature information are added to the signaling reported to the master. | +| visitName | no | string | User name of the access master. The default is an empty string. This value must exist when visitMasterAuth is true. The value must be the same as the value of the visitName field in master.ini. | | visitPassword | no | string | The password for accessing the master. The default is an empty string. This value must exist when visitMasterAuth is true. The value must be the same as the value of the visitPassword field in master.ini. | -| logFlushMemDurMs | no | long | Batch check message memory persistence to file check cycle, in milliseconds, default is 10 seconds for a full check and brush | - -[zookeeper] ->The Tube MQ cluster corresponding to the Broker stores the information about the ZooKeeper cluster of the Offset. The required unit has a fixed value of "[zookeeper]". +| logFlushMemDurMs | no | long | Batch check message memory persistence to file check cycle, in milliseconds, default is 10 seconds for a full check and brush | +| enableWriteOffset2Zk | no | boolean | Whether to write the consumer group Offset record to ZooKeeper at the same time. The default value is false, which means no record is written. | +| offsetStgFilePath | no | String | The file storage path of the consumer group Offset record, the default is the primaryPath directory | +| grpOffsetStgExpMs | no | long | The storage period of the unupdated consumer group Offset record in the file, in milliseconds, the default value is 20 days (20 * 24 * 60 * 60 * 1000) | +| offsetStgCacheFlushMs | no | long | The period for updating the Offset record of the consumer group to the cache, in ms, with a default value of 5000ms | +| offsetStgFileSyncMs | no | long | The consumer group Offset records the period of synchronizing from the cache to the file, in milliseconds. The default value is offsetStgCacheFlushMs + 1000ms | +| offsetStgSyncDurWarnMs | no | long | The alarm value of the excessive time taken for the consumer group Offset record to be synchronized from the cache to the file, in milliseconds, with a default value of 20000ms | -| Name | Required | Type | Description | -| --------------------- | ----------------------------- | ----------------------------- | ------------------------------------------------------------ | -| zkServerAddr | no | string | Zk server address, optional configuration, defaults to "localhost:2181" | -| zkNodeRoot | no | string | The root path of the node on zk, optional configuration. The default is "/tube". | -| zkSessionTimeoutMs | no | long | Zk heartbeat timeout, in milliseconds, default 30 seconds | -| zkConnectionTimeoutMs | no | long | Zk connection timeout, in milliseconds, default 30 seconds | -| zkSyncTimeMs | no | long | Zk data synchronization time, in milliseconds, default 5 seconds | -| zkCommitPeriodMs | no | long | The interval at which the broker cache data is flushed to zk, in milliseconds, default 5 seconds | -| zkCommitFailRetries | no | int | The maximum number of re-brushings after Broker fails to flush cached data to Zk | - [tlsSetting] >The Master uses TLS to encrypt the transport layer data. When TLS is enabled, the configuration unit provides related settings. The optional unit has a fixed value of "[tlsSetting]". diff --git a/docs/modules/tubemq/img/sys_structure.png b/docs/modules/tubemq/img/sys_structure.png index 70b4dad4ce1bec0e610ce9b0f810c8af9ae95118..a980561ca7f4e512c4c95045d5eda109ff7481fd 100644 GIT binary patch literal 145872 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 S*#+gAY^)r=DLwGr5C0F#TPKJB literal 54641 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 diff --git a/docs/modules/tubemq/overview.md b/docs/modules/tubemq/overview.md index 49a092ef198..182adb6f8f2 100644 --- a/docs/modules/tubemq/overview.md +++ b/docs/modules/tubemq/overview.md @@ -4,7 +4,7 @@ sidebar_position: 1 --- ## 1 TubeMQ Architecture: -After years of evolution, the TubeMQ cluster is divided into the following 5 parts: +After years of evolution, the TubeMQ cluster is divided into the following 4 parts: ![](img/sys_structure.png) - **Portal:** The Portal part responsible for external interaction and maintenance operations, including API and Web. @@ -29,8 +29,6 @@ After years of evolution, the TubeMQ cluster is divided into the following 5 par service supports resetting the precise offset through the client to support the business extract-once consumption. At the same time, the consumer has launched a new cross-cluster switch-free Consumer client; -- **ZooKeeper:** Responsible for the ZooKeeper part of the offset storage. This part of the function has been weakened to only the persistent storage of the offset. Considering the next multi-node copy function, this module is temporarily reserved; - ## 2 Broker File Storage Scheme Improvement: Systems that use disks as data persistence media are faced with various system performance problems caused by disk problems. The TubeMQ system is no exception, the performance improvement is largely to solve the problem of how to read, write and store message data. In this regard TubeMQ has made many improvements: storage instances is as the smallest Topic data management unit; each storage instance includes a file storage block and a memory cache block; each Topic can be assigned multiple storage instances. diff --git a/docs/modules/tubemq/quick_start.md b/docs/modules/tubemq/quick_start.md index e1916299356..e3360fc455d 100644 --- a/docs/modules/tubemq/quick_start.md +++ b/docs/modules/tubemq/quick_start.md @@ -9,15 +9,19 @@ There're two components in the cluster: **Master** and **Broker**. Master and Br can be deployed on the same server or different servers. In this example, we setup our cluster like this, and all services run on the same node. Zookeeper should be setup in your environment also. -| Role | TCP Port | TLS Port | Web Port | Comment | -| ---- | -------- | -------- | -------- |----------------------------------------------------------------------| -| Master | 8099 | 8199 | 8080 | Meta data is stored in ZooKeeper /tubemq | -| Broker | 8123 | 8124 | 8081 | Message is stored at /stage/msg_data | -| Zookeeper | 2181 | | | Master metadata or Broker offset information are stored at /tubemq | +| Role | TCP Port | TLS Port | Web Port | Comment | +| ---- | -------- | -------- | -------- |-------------------------------------------------------------------------------------------------| +| Master | 8099 | 8199 | 8080 | Meta data is stored in ZooKeeper /tubemq | +| Broker | 8123 | 8124 | 8081 | Message is stored at /stage/msg_data | +| Zookeeper | 2181 | | | Master metadata is stored at /tubemq, this component is not required if meta_bdb is configured. | ### 1.2 Prerequisites - ZooKeeper Cluster +ZooKeeper is not mandatory in the TubeMQ environment. If the Master metadata is stored in BDB, this part of the resource can be omitted. + +- TubeMQ installation package deployment + After you extract the package file, here's the folder structure. ``` /INSTALL_PATH/inlong-tubemq-server/ @@ -98,13 +102,6 @@ masterAddressList=MASTER_NODE_IP1:8099,MASTER_NODE_IP2:8099 // multi addresses primaryPath=/stage/msg_data ``` -- ZooKeeper Cluster -```ini -[zookeeper] // Master and Broker in the same cluster must use the same zookeeper environment and have the same configuration -zkNodeRoot=/tubemq -zkServerAddr=localhost:2181 // multi zookeeper addresses can separate with "," -``` - ### 1.5 Start Master - Please go to the `bin` folder and run this command to start the master service. diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/configure_introduction.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/configure_introduction.md index 11eb56dbc86..9639f5305a0 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/configure_introduction.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/configure_introduction.md @@ -2,196 +2,190 @@ title: 配置参数 --- -## 1 TubeMQ服务端配置文件说明: +## 1 TubeMQ 服务端配置文件说明: -TubeMQ服务端包括Master和Broker共2个模块,Master又包含供外部页面访问的Web前端模块(该部分存放在resources中),考虑到实际部署时2个模块常常部署在同1台机器中,TubeMQ将2个模块3个部分的内容打包在一起交付给运维使用;客户端则不包含服务端部分的lib包单独交付给业务使用。 +TubeMQ 服务端包括 Master 和 Broker 共 2 个模块,Master 又包含供外部页面访问的 Web 前端模块(该部分存放在 resources 中),考虑到实际部署时 2 个模块常常部署在同 1 台机器中,TubeMQ 将 2 个模块 3 个部分的内容打包在一起交付给运维使用;客户端则不包含服务端部分的 lib 包单独交付给业务使用。 -Master与Broker采用ini配置文件格式,相关配置文件分别放置在tubemq-server-x.y.z/conf/目录的master.ini和broker.ini文件中: +Master 与 Broker 采用 ini 配置文件格式,相关配置文件分别放置在 tubemq-server-x.y.z/conf/ 目录的 master.ini 和 broker.ini 文件中: ![](img/configure/conf_ini_pos.png) -他们的配置是按照配置单元集合来定义的,Master配置由必选的[master]、可选择的必选[meta_zookeeper]、[meta_bdb]和可选的[tlsSetting]一共4个配置单元组成,Broker配置由必选的[broker]、[zookeeper]和可选的[tlsSetting]一共3个配置单元组成;实际使用时,大家也可将两个配置文件内容合并放置为一个ini文件。 +他们的配置是按照配置单元集合来定义的,Master 配置由必选的 [master]、可选择的必选 [meta_zookeeper]、[meta_bdb] 和可选的 [tlsSetting] 一共 4 个配置单元组成,Broker配置由必选的 [broker] 和可选的 [tlsSetting] 一共 2 个配置单元组成;实际使用时,大家也可将两个配置文件内容合并放置为一个 ini 文件。 **注意**: -- 由于Apache依赖包的LICENSE问题,从1.1.0版本开始TubeMQ发布的包不再包含BDB包; -- 1.1.0版本开始,元数据缺省采用ZooKeeper存储,可选支持BDB,1.1.0版本需要手工设置master.ini配置文件,增加[meta_bdb]配置单元才能支持BDB存储。 -- 若业务使用BDB组件,需要自行下载com.sleepycat.je-7.3.7.jar包,要不会系统运行时会报“ java.lang.ClassNotFoundException: com.sleepycat.je.ReplicaConsistencyPolicy”错误; +- 由于 Apache 依赖包的 LICENSE 问题,从 1.1.0 版本开始 TubeMQ 发布的包不再包含 BDB 包; +- 1.1.0 版本开始,元数据缺省采用 ZooKeeper 存储,可选支持 BDB,1.1.0 版本需要手工设置 master.ini 配置文件,增加 [meta_bdb] 配置单元才能支持 BDB 存储。 +- 若业务使用 BDB 组件,需要自行下载 com.sleepycat.je-7.3.7.jar 包,要不会系统运行时会报“ java.lang.ClassNotFoundException: com.sleepycat.je.ReplicaConsistencyPolicy” 错误; -Master除了后端系统配置文件外,还在resources里存放了Web前端页面模块,resources的根目录velocity.properties文件为Master的Web前端页面配置文件。 +Master 除了后端系统配置文件外,还在 resources 里存放了 Web 前端页面模块,resources 的根目录 velocity.properties 文件为 Master 的 Web 前端页面配置文件。 ![](img/configure/conf_velocity_pos.png) ## 2 配置项详情: -### 2.1 master.ini文件中关键配置内容说明: +### 2.1 master.ini 文件中关键配置内容说明: [master] > master 系统运行主要配置单元,必填单元,值固定为 "[master]" -| 配置项 | 是否必选 | 值类型 | 配置说明 | -|-----| --- | --- |---------------------------------------------------------| -| hostName | 是 | String | Master对外服务的主机地址,必填项,必须在网卡中已配置,处于启用状态,非回环且不能为127.0.0.1的IP | -| port | 否 | int | Master监听的端口,可选项,缺省值为8715 | -| webPort | 否 | int | Master Web控制台的访问端口,缺省值为8080 | -| webResourcePath | 是 | String | Master Web Resource部署绝对路径,必填项,该值设置不正确时Web页面将不能正常显示 | -| confModAuthToken | 否 | String | 通过Master的Web或API做变更操作(包括增、删、改配置,以及变更Master及管理的Broker状态)时操作者需要提供的授权Token,该值可选,缺省为"ASDFGHJKL" | -| firstBalanceDelayAfterStartMs | 否 | long | Master启动至首次开始Rebalance的时间间隔,可选项,缺省30000毫秒 | -| consumerBalancePeriodMs | 否 | long | Master对消费组进行Rebalance的均衡周期,可选项,缺省60000毫秒,当集群规模较大时,请调大该值 | -| consumerHeartbeatTimeoutMs | 否 | long | 消费者心跳超时周期,可选项,缺省30000毫秒,当集群规模较大时,请调大该值 | -| producerHeartbeatTimeoutMs | 否 | long | 生产者心跳超时周期,可选项,缺省30000毫秒,当集群规模较大时,请调大该值 | -| brokerHeartbeatTimeoutMs | 否 | long | Broker心跳超时周期,可选项,缺省30000毫秒,当集群规模较大时,请调大该值 | -| rebalanceParallel | 否 | int | Master Rebalance处理并行度,可选项,缺省4,取值范围[1, 20], 当集群规模较大时,请调大该值 | -| socketRecvBuffer | 否 | long | Socket接收Buffer缓冲区SO\_RCVBUF大小,单位字节, 负数为不做设置以缺省值为准 | -| socketSendBuffer | 否 | long | Socket发送Buffer缓冲区SO\_SNDBUF大小,单位字节, 负数为不做设置以缺省值为准 | -| maxAutoForbiddenCnt | 否 | int | Broker出现IO故障时最大允许Master自动下线Broker个数,可选项,缺省为5,建议该值不超过集群内Broker总数的10% | -| startOffsetResetCheck | 否 | boolean | 是否启用客户端Offset重置功能的检查功能,可选项,缺省为false | -| needBrokerVisitAuth | 否 | boolean | 是否启用Broker访问鉴权,缺省为false,如果为true,则Broker上报的消息里必须携带正确的用户名及签名信息 | -| visitName | 否 | String | Broker访问鉴权的用户名,缺省为空字符串,在needBrokerVisitAuth为true时该值必须存在,该值必须与broker.ini里的visitName字段值同 | -| visitPassword | 否 | String | Broker访问鉴权的密码,缺省为空字符串,在needBrokerVisitAuth为true时该值必须存在,该值必须与broker.ini里的visitPassword字段值同 | -| startVisitTokenCheck | 否 | boolean | 是否启用客户端visitToken检查,缺省为false | -| startProduceAuthenticate | 否 | boolean | 是否启用生产端用户认证,缺省为false | -| startProduceAuthorize | 否 | boolean | 是否启用生产端生产授权认证,缺省为false | -| startConsumeAuthenticate | 否 | boolean | 是否启用消费端用户认证,缺省为false | -| startConsumeAuthorize | 否 | boolean | 是否启用消费端消费授权认证,缺省为false | -| maxGroupBrokerConsumeRate | 否 | int | 集群Broker数与消费组里成员数的最大比值,可选项,缺省为50,50台Broker集群里允许1个消费组最少启动1个客户端消费 | +| 配置项 | 是否必选 | 值类型 | 配置说明 | +|-----| --- | --- |-------------------------------------------------------------------------------------------------------------------| +| hostName | 是 | String | Master 对外服务的主机地址,必填项,必须在网卡中已配置,处于启用状态,非回环且不能为 127.0.0.1 的 IP | +| port | 否 | int | Master 监听的端口,可选项,缺省值为 8715 | +| webPort | 否 | int | Master Web 控制台的访问端口,缺省值为 8080 | +| webResourcePath | 是 | String | Master Web Resource 部署绝对路径,必填项,该值设置不正确时 Web 页面将不能正常显示 | +| confModAuthToken | 否 | String | 通过 Master 的 Web 或 API 做变更操作(包括增、删、改配置,以及变更 Master 及管理的 Broker 状态)时操作者需要提供的授权 Token,该值可选,缺省为 "ASDFGHJKL" | +| firstBalanceDelayAfterStartMs | 否 | long | Master 启动至首次开始 Rebalance 的时间间隔,可选项,缺省 30000 毫秒 | +| consumerBalancePeriodMs | 否 | long | Master 对消费组进行 Rebalance 的均衡周期,可选项,缺省 60000 毫秒,当集群规模较大时,请调大该值 | +| consumerHeartbeatTimeoutMs | 否 | long | 消费者心跳超时周期,可选项,缺省 30000 毫秒,当集群规模较大时,请调大该值 | +| producerHeartbeatTimeoutMs | 否 | long | 生产者心跳超时周期,可选项,缺省 30000 毫秒,当集群规模较大时,请调大该值 | +| brokerHeartbeatTimeoutMs | 否 | long | Broker 心跳超时周期,可选项,缺省 30000 毫秒,当集群规模较大时,请调大该值 | +| rebalanceParallel | 否 | int | Master Rebalance 处理并行度,可选项,缺省 4,取值范围 [1, 20], 当集群规模较大时,请调大该值 | +| socketRecvBuffer | 否 | long | Socket 接收 Buffer 缓冲区 SO\_RCVBUF 大小,单位字节, 负数为不做设置以缺省值为准 | +| socketSendBuffer | 否 | long | Socket 发送 Buffer 缓冲区 SO\_SNDBUF 大小,单位字节, 负数为不做设置以缺省值为准 | +| maxAutoForbiddenCnt | 否 | int | Broker 出现 IO 故障时最大允许 Master 自动下线 Broker 个数,可选项,缺省为 5,建议该值不超过集群内 Broker 总数的 10% | +| startOffsetResetCheck | 否 | boolean | 是否启用客户端 Offset 重置功能的检查功能,可选项,缺省为 false | +| needBrokerVisitAuth | 否 | boolean | 是否启用 Broker 访问鉴权,缺省为 false,如果为 true,则 Broker 上报的消息里必须携带正确的用户名及签名信息 | +| visitName | 否 | String | Broker 访问鉴权的用户名,缺省为空字符串,在 needBrokerVisitAuth 为 true 时该值必须存在,该值必须与 broker.ini 里的 visitName 字段值同 | +| visitPassword | 否 | String | Broker 访问鉴权的密码,缺省为空字符串,在 needBrokerVisitAuth 为 true 时该值必须存在,该值必须与 broker.ini 里的 visitPassword 字段值同 | +| startVisitTokenCheck | 否 | boolean | 是否启用客户端 visitToken 检查,缺省为 false | +| startProduceAuthenticate | 否 | boolean | 是否启用生产端用户认证,缺省为 false | +| startProduceAuthorize | 否 | boolean | 是否启用生产端生产授权认证,缺省为 false | +| startConsumeAuthenticate | 否 | boolean | 是否启用消费端用户认证,缺省为 false | +| startConsumeAuthorize | 否 | boolean | 是否启用消费端消费授权认证,缺省为 false | +| maxGroupBrokerConsumeRate | 否 | int | 集群 Broker 数与消费组里成员数的最大比值,可选项,缺省为 50,50 台 Broker 集群里允许 1 个消费组最少启动 1 个客户端消费 | [meta_zookeeper] > Master 基于 ZooKeeper 进行元数据存储和多节点热备的配置单元,"[meta_zookeeper]" 这部分和 "[meta_bdb]" 二选一。 -| 配置项 | 是否必选 | 值类型 | 配置说明 | -|-----| --- | --- |---------------------------------------------------------| -| zkServerAddr | 否 | String | zk服务器地址,可选配置,缺省为"localhost:2181" | -| zkNodeRoot | 否 | String | zk上的节点根目录路径,可选配置,缺省为"/tubemq" | -| zkSessionTimeoutMs | 否 | long | zk心跳超时,单位毫秒,默认30秒 | -| zkConnectionTimeoutMs | 否 | long | zk连接超时时间,单位毫秒,默认30秒 | -| zkSyncTimeMs | 否 | long | zk数据同步时间,单位毫秒,默认5秒 | -| zkCommitPeriodMs | 否 | long | Master缓存数据刷新到zk上的时间间隔,单位毫秒,默认5秒 | -| zkMasterCheckPeriodMs | 否 | long | 当前节点是否为Master角色的检查周期,单位毫秒,缺省为5秒 | +| 配置项 | 是否必选 | 值类型 | 配置说明 | +|-----| --- | --- |----------------------------------------------| +| zkServerAddr | 否 | String | zk 服务器地址,可选配置,缺省为 "localhost:2181" | +| zkNodeRoot | 否 | String | zk 上的节点根目录路径,可选配置,缺省为 "/tubemq" | +| zkSessionTimeoutMs | 否 | long | zk 心跳超时,单位毫秒,默认 30 秒 | +| zkConnectionTimeoutMs | 否 | long | zk 连接超时时间,单位毫秒,默认 30 秒 | +| zkSyncTimeMs | 否 | long | zk 数据同步时间,单位毫秒,默认 5 秒 | +| zkCommitPeriodMs | 否 | long | Master 缓存数据刷新到 zk 上的时间间隔,单位毫秒,默认 5 秒 | +| zkMasterCheckPeriodMs | 否 | long | 当前节点是否为 Master 角色的检查周期,单位毫秒,缺省为 5 秒 | [meta_bdb] > Master 基于 BDB 存储元数据及进行多节点热备保活的配置单元,"[meta_bdb]" 这部分和 "[meta_zookeeper]" 二选一。 -| 配置项 | 是否必选 | 值类型 | 配置说明 | -|-----| --- | --- |---------------------------------------------------------| -| repGroupName | 否 | String | 集群名,所属主备Master节点值必须相同,可选字段,缺省为"tubemqMasterGroup" | -| repNodeName | 是 | String | 所属Master在集群中的节点名,该值各个节点必须不重复,必填字段 | -| metaDataPath | 否 | String | Metadata存储路径,可以是绝对路径、或者相对TubeMQ安装目录("$BASE_DIR")的相对路径。缺省为"var/meta_data" | -| repNodePort | 否 | int | 节点复制通讯端口,可选字段,缺省为9001 | -| repHelperHost | 否 | String | 集群启动时的主节点,可选字段,缺省为"127.0.0.1:9001" | -| metaLocalSyncPolicy | 否 | int | 数据节点本地保存方式,该字段取值范围[1,2,3],缺省为1:其中1为数据保存到磁盘,2为数据只保存到内存,3为只将数据写文件系统buffer,但不刷盘 | -| metaReplicaSyncPolicy | 否 | int | 数据节点同步保存方式,该字段取值范围[1,2,3],缺省为1:其中1为数据保存到磁盘,2为数据只保存到内存,3为只将数据写文件系统buffer,但不刷盘 | -| repReplicaAckPolicy | 否 | int | 节点数据同步时的应答策略,该字段取值范围为[1,2,3],缺省为1:其中1为超过1/2多数为有效,2为所有节点应答才有效;3为不需要节点应答 | -| repStatusCheckTimeoutMs | 否 | long | 节点状态检查间隔,可选字段,单位毫秒,缺省为10秒 | +| 配置项 | 是否必选 | 值类型 | 配置说明 | +|-----| --- | --- |--------------------------------------------------------------------------------------------------| +| repGroupName | 否 | String | 集群名,所属主备 Master 节点值必须相同,可选字段,缺省为 "tubemqMasterGroup" | +| repNodeName | 是 | String | 所属 Master 在集群中的节点名,该值各个节点必须不重复,必填字段 | +| metaDataPath | 否 | String | Metadata 存储路径,可以是绝对路径、或者相对 TubeMQ 安装目录("$BASE_DIR")的相对路径。缺省为 "var/meta_data" | +| repNodePort | 否 | int | 节点复制通讯端口,可选字段,缺省为 9001 | +| repHelperHost | 否 | String | 集群启动时的主节点,可选字段,缺省为 "127.0.0.1:9001" | +| metaLocalSyncPolicy | 否 | int | 数据节点本地保存方式,该字段取值范围 [1,2,3],缺省为 1:其中 1 为数据保存到磁盘,2 为数据只保存到内存,3 为只将数据写文件系统 buffer,但不刷盘 | +| metaReplicaSyncPolicy | 否 | int | 数据节点同步保存方式,该字段取值范围 [1,2,3],缺省为 1:其中 1 为数据保存到磁盘,2 为数据只保存到内存,3 为只将数据写文件系统 buffer,但不刷盘 | +| repReplicaAckPolicy | 否 | int | 节点数据同步时的应答策略,该字段取值范围为 [1,2,3],缺省为 1:其中 1 为超过 1/2 多数为有效,2 为所有节点应答才有效;3 为不需要节点应答 | +| repStatusCheckTimeoutMs | 否 | long | 节点状态检查间隔,可选字段,单位毫秒,缺省为 10 秒 | [tlsSetting] > Master 启用 TLS 进行传输层数据加密通的相关设置,可选单元,值固定为 "[tlsSetting]" -| 配置项 | 是否必选 | 值类型 | 配置说明 | -|-----| --- | --- |---------------------------------------------------------| -| tlsEnable | 否 | boolean | 是否启用TLS功能,可选配置,缺省为false | -| tlsPort | 否 | int | Master的TLS端口号,可选配置,缺省为8716 | -| tlsKeyStorePath | 否 | String | TLS的keyStore文件的绝对存储路径+keyStore文件名,在启动TLS功能时,该字段必填且不能为空 | -| tlsKeyStorePassword | 否 | String | TLS的keyStorePassword文件的绝对存储路径+keyStorePassword文件名,在启动TLS功能时,该字段必填且不能为空 | -| tlsTwoWayAuthEnable | 否 | boolean | 是否启用TLS双向认证功能,可选配置,缺省为false | -| tlsTrustStorePath | 否 | String | TLS的TrustStore文件的绝对存储路径+TrustStore文件名,在启动TLS功能且启用双向认证时,该字段必填且不能为空 | -| tlsTrustStorePassword | 否 | String | TLS的TrustStorePassword文件的绝对存储路径+TrustStorePassword文件名,在启动TLS功能且启用双向认证时,该字段必填且不能为空 | +| 配置项 | 是否必选 | 值类型 | 配置说明 | +|-----| --- | --- |-------------------------------------------------------------------------------------------| +| tlsEnable | 否 | boolean | 是否启用 TLS 功能,可选配置,缺省为 false | +| tlsPort | 否 | int | Master 的 TLS 端口号,可选配置,缺省为 8716 | +| tlsKeyStorePath | 否 | String | TLS 的 keyStore 文件的绝对存储路径 + keyStore 文件名,在启动 TLS 功能时,该字段必填且不能为空 | +| tlsKeyStorePassword | 否 | String | TLS 的 keyStorePassword 文件的绝对存储路径 + keyStorePassword 文件名,在启动 TLS 功能时,该字段必填且不能为空 | +| tlsTwoWayAuthEnable | 否 | boolean | 是否启用 TLS 双向认证功能,可选配置,缺省为 false | +| tlsTrustStorePath | 否 | String | TLS 的 TrustStore 文件的绝对存储路径 + TrustStore 文件名,在启动 TLS 功能且启用双向认证时,该字段必填且不能为空 | +| tlsTrustStorePassword | 否 | String | TLS 的 TrustStorePassword 文件的绝对存储路径 + TrustStorePassword 文件名,在启动 TLS 功能且启用双向认证时,该字段必填且不能为空 | [prometheus] > Master 使用 prometheus 提供指标数据查询时的相关配置单元设置,可选配置单元集合 " [prometheus] " -| 配置项 | 是否必选 | 值类型 | 配置说明 | -|-----|------|---------|---------------------------------------------------------------------------------| -| promEnable | 否 | boolean | 是否启用 prometheus服务,可选配置,缺省为false | +| 配置项 | 是否必选 | 值类型 | 配置说明 | +|-----|------|---------|---------------------------------------------------------| +| promEnable | 否 | boolean | 是否启用 prometheus 服务,可选配置,缺省为 false | | promClusterName | 否 | String | 启用 prometheus 服务时 服务节点所属于的集群名,缺省值为 " InLong " | -| promHttpPort | 否 | int | 启用 prometheus 服务时的侦听端口,可选配置,缺省值为 9081 | +| promHttpPort | 否 | int | 启用 prometheus 服务时的侦听端口,可选配置,缺省值为 9081 | **注意**: -- 基于Docker容器化的需要,master.ini文件里对[meta_bdb]如上3个参数部分都是使用的缺省设置,在实际组网使用时需要以Master节点真实信息配置 -- Master所有节点的IP信息要在hosts配置文件里构造IP与hostName映射关系,如类似“10.10.11.205 10-10-11-205” -- 需保证Master所有节点之间的时钟同步 +- 基于 Docker 容器化的需要,master.ini 文件里对 [meta_bdb] 如上 3 个参数部分都是使用的缺省设置,在实际组网使用时需要以 Master 节点真实信息配置 +- Master 所有节点的 IP 信息要在 hosts 配置文件里构造 IP 与 hostName 映射关系,如类似 “10.10.11.205 10-10-11-205” +- 需保证 Master 所有节点之间的时钟同步 -### 2.2 Master的前台配置文件velocity.properties中关键配置内容说明: +### 2.2 Master 的前台配置文件 velocity.properties 中关键配置内容说明: -| 配置项 | 是否必选 | 值类型 | 配置说明 | -| --- | --- | --- | --- | -| file.resource.loader.path | 是 | String | Master的Web的模板绝对路径,该部分为实际部署Master时的工程绝对路径+/resources/templates,该配置要与实际部署相吻合,配置失败会导致Master前端页面访问失败。 | +| 配置项 | 是否必选 | 值类型 | 配置说明 | +| --- | --- | --- |------------------------------------------------------------------------------------------------------------| +| file.resource.loader.path | 是 | String | Master 的 Web 的模板绝对路径,该部分为实际部署 Master 时的工程绝对路径 + /resources/templates,该配置要与实际部署相吻合,配置失败会导致 Master 前端页面访问失败。 | -### 2.3 broker.ini文件中关键配置内容说明: +### 2.3 broker.ini 文件中关键配置内容说明: [broker] > Broker 系统运行主配置单元,必填单元,值固定为 "[broker]" -| 配置项 | 是否必选 | 值类型 | 配置说明 | -| --- |------|---------|------------------------------------------------------------------------------------------------------------------| -| brokerId | 是 | int | 服务器唯一标志,必填字段,可设为0;设为0时系统将默认取本机IP转化为int值再取abs绝对值,避免brokerId为负数,如果使用环境的IP比较复杂存在生成的brokerId值冲突时,则需要指定brokerId值进行设置。 | -| hostName | 是 | String | Broker对外服务的主机地址,必填项,必须在网卡中已配置,处于启用状态,非回环且不能为127.0.0.1的IP | -| port | 否 | int | Broker监听的端口,可选项,缺省值为8123 | -| webPort | 否 | int | Broker的http管理访问端口,可选项,缺省为8081 | -| masterAddressList | 是 | String | Broker所属集群的Master地址列表,必填字段,格式必须是ip1:port1,ip2:port2,ip3:port3 | -| primaryPath | 是 | String | Broker存储消息的绝对路径,必选字段 | -| maxSegmentSize | 否 | int | Broker存储消息Data内容的文件大小,可选字段,缺省512M,最大1G | -| maxIndexSegmentSize | 否 | int | Broker存储消息Index内容的文件大小,可选字段,缺省18M,约70W条消息每文件 | -| transferSize | 否 | int | Broker允许每次传输给客户端的最大消息内容大小,可选字段,缺省为512K | -| consumerRegTimeoutMs | 否 | long | consumer心跳超时时间,可选项,单位毫秒,默认30秒 | -| socketRecvBuffer | 否 | long | Socket接收Buffer缓冲区SO\_RCVBUF大小,单位字节,负数为不做设置以缺省值为准 | -| socketSendBuffer | 否 | long | Socket发送Buffer缓冲区SO\_SNDBUF大小,单位字节,负数为不做设置以缺省值为准 | -| tcpWriteServiceThread | 否 | int | Broker支持TCP生产服务的socket worker线程数,可选字段,缺省为所在机器的2倍CPU个数 | -| tcpReadServiceThread | 否 | int | Broker支持TCP消费服务的socket worker线程数,可选字段,缺省为所在机器的2倍CPU个数 | -| logClearupDurationMs | 否 | long | 消息文件的老化清理周期, 单位为毫秒, 缺省为3分钟进行一次日志清理操作,最低1分钟 | -| logFlushDiskDurMs | 否 | long | 批量检查消息持久化到文件的检查周期,单位为毫秒, 缺省为20秒进行一次全量的检查及刷盘 | -| visitTokenCheckInValidTimeMs | 否 | long | visitToken检查时允许Broker注册后延迟检查的时长,单位ms,缺省120000,取值范围[60000,300000] | -| visitMasterAuth | 否 | boolean | 是否启用上报Master鉴权,缺省为false,如果为true,则会在上报Master的信令里加入用户名及签名信息 | -| visitName | 否 | String | 访问Master的用户名,缺省为空字符串,在visitMasterAuth为true时该值必须存在,该值必须与master.ini里的visitName字段值同 | -| visitPassword | 否 | String | 访问Master的密码,缺省为空字符串,在visitMasterAuth为true时该值必须存在,该值必须与master.ini里的visitPassword字段值同 | -| logFlushMemDurMs | 否 | long | 批量检查消息内存持久化到文件的检查周期,单位为毫秒, 缺省为10秒进行一次全量的检查及刷盘 | - -[zookeeper] -> Broker 对应的 Tube MQ 集群存储 Offset 的 ZooKeeper 集群相关信息,必填单元,值固定为"[zookeeper]" - -| 配置项 | 是否必选 | 值类型 | 配置说明 | -|-----| --- | --- |---------------------------------------------------------| -| zkServerAddr | 否 | String | zk服务器地址,可选配置,缺省为"localhost:2181" | -| zkNodeRoot | 否 | String | zk上的节点根目录路径,可选配置,缺省为"/tubemq" | -| zkSessionTimeoutMs | 否 | long | zk心跳超时,单位毫秒,默认30秒 | -| zkConnectionTimeoutMs | 否 | long | zk连接超时时间,单位毫秒,默认30秒 | -| zkSyncTimeMs | 否 | long | zk数据同步时间,单位毫秒,默认5秒 | -| zkCommitPeriodMs | 否 | long | Broker缓存数据刷新到zk上的时间间隔,单位毫秒,默认5秒 | -| zkCommitFailRetries | 否 | int | Broker刷新缓存数据到Zk失败后的最大重刷次数 | +| 配置项 | 是否必选 | 值类型 | 配置说明 | +| --- |------|---------|-----------------------------------------------------------------------------------------------------------------------------------| +| brokerId | 是 | int | 服务器唯一标志,必填字段,可设为 0;设为 0 时系统将默认取本机 IP 转化为 int 值再取 abs 绝对值,避免 brokerId 为负数,如果使用环境的 IP 比较复杂存在生成的 brokerId 值冲突时,则需要指定 brokerId 值进行设置。 | +| hostName | 是 | String | Broker 对外服务的主机地址,必填项,必须在网卡中已配置,处于启用状态,非回环且不能为 127.0.0.1 的 IP | +| port | 否 | int | Broker 监听的端口,可选项,缺省值为 8123 | +| webPort | 否 | int | Broker 的 http 管理访问端口,可选项,缺省为 8081 | +| masterAddressList | 是 | String | Broker 所属集群的 Master 地址列表,必填字段,格式必须是 ip1:port1,ip2:port2,ip3:port3 | +| primaryPath | 是 | String | Broker 存储消息的绝对路径,必选字段 | +| maxSegmentSize | 否 | int | Broker 存储消息 Data 内容的文件大小,可选字段,缺省 512M,最大 1G | +| maxIndexSegmentSize | 否 | int | Broker 存储消息 Index 内容的文件大小,可选字段,缺省 18M,约 70W 条消息每文件 | +| transferSize | 否 | int | Broker 允许每次传输给客户端的最大消息内容大小,可选字段,缺省为 512K | +| consumerRegTimeoutMs | 否 | long | consumer 心跳超时时间,可选项,单位毫秒,默认 30 秒 | +| socketRecvBuffer | 否 | long | Socket 接收 Buffer 缓冲区 SO\_RCVBUF 大小,单位字节,负数为不做设置以缺省值为准 | +| socketSendBuffer | 否 | long | Socket 发送 Buffer 缓冲区 SO\_SNDBUF 大小,单位字节,负数为不做设置以缺省值为准 | +| tcpWriteServiceThread | 否 | int | Broker 支持 TCP 生产服务的 socket worker 线程数,可选字段,缺省为所在机器的 2 倍 CPU 个数 | +| tcpReadServiceThread | 否 | int | Broker 支持 TCP 消费服务的 socket worker 线程数,可选字段,缺省为所在机器的 2 倍 CPU 个数 | +| logClearupDurationMs | 否 | long | 消息文件的老化清理周期, 单位为毫秒, 缺省为 3 分钟进行一次日志清理操作,最低 1 分钟 | +| logFlushDiskDurMs | 否 | long | 批量检查消息持久化到文件的检查周期,单位为毫秒, 缺省为 20 秒进行一次全量的检查及刷盘 | +| visitTokenCheckInValidTimeMs | 否 | long | visitToken 检查时允许 Broker 注册后延迟检查的时长,单位 ms,缺省 120000,取值范围 [60000,300000] | +| visitMasterAuth | 否 | boolean | 是否启用上报 Master 鉴权,缺省为 false,如果为 true,则会在上报 Master 的信令里加入用户名及签名信息 | +| visitName | 否 | String | 访问 Master 的用户名,缺省为空字符串,在 visitMasterAuth 为 true 时该值必须存在,该值必须与 master.ini 里的 visitName 字段值同 | +| visitPassword | 否 | String | 访问 Master 的密码,缺省为空字符串,在 visitMasterAuth 为 true 时该值必须存在,该值必须与 master.ini 里的 visitPassword 字段值同 | +| logFlushMemDurMs | 否 | long | 批量检查消息内存持久化到文件的检查周期,单位为毫秒, 缺省为 10 秒进行一次全量的检查及刷盘 | +| enableWriteOffset2Zk | 否 | boolean | 是否将消费组 Offset 记录同时写 ZooKeeper,缺省 false,不写入 | +| offsetStgFilePath | 否 | String | 消费组 Offset 记录的文件保存路径,缺省为 primaryPath 目录下 | +| grpOffsetStgExpMs | 否 | long | 未更新的消费组 Offset 记录在文件里的保存周期,单位 ms, 缺省值为 20 天(20 * 24 * 60 * 60 * 1000) | +| offsetStgCacheFlushMs | 否 | long | 消费组 Offset 记录更新到缓存的周期,单位 ms, 缺省值为 5000ms | +| offsetStgFileSyncMs | 否 | long | 消费组 Offset 记录从缓存同步到文件的周期,单位 ms, 缺省值为 offsetStgCacheFlushMs + 1000ms | +| offsetStgSyncDurWarnMs | 否 | long | 消费组 Offset 记录从缓存同步到文件时间超长告警值,单位 ms, 缺省值为 20000ms | + [tlsSetting] -> Broker启用TLS时通过该配置单元提供相关的设置,可选单元,值固定为"[tlsSetting]" - -| 配置项 | 是否必选 | 值类型 | 配置说明 | -|-----| --- | --- |---------------------------------------------------------| -| tlsEnable | 否 | boolean | 是否启用TLS功能,可选配置,缺省为false | -| tlsPort | 否 | int | Broker的TLS端口号,可选配置,缺省为8124 | -| tlsKeyStorePath | 否 | String | TLS的keyStore文件的绝对存储路径+keyStore文件名,在启动TLS功能时,该字段必填且不能为空 | -| tlsKeyStorePassword | 否 | String | TLS的keyStorePassword文件的绝对存储路径+keyStorePassword文件名,在启动TLS功能时,该字段必填且不能为空 | -| tlsTwoWayAuthEnable | 否 | boolean | 是否启用TLS双向认证功能,可选配置,缺省为false | -| tlsTrustStorePath | 否 | String | TLS的TrustStore文件的绝对存储路径+TrustStore文件名,在启动TLS功能且启用双向认证时,该字段必填且不能为空 | -| tlsTrustStorePassword | 否 | String | TLS的TrustStorePassword文件的绝对存储路径+TrustStorePassword文件名,在启动TLS功能且启用双向认证时,该字段必填且不能为空 | +> Broker 启用 TLS 时通过该配置单元提供相关的设置,可选单元,值固定为 "[tlsSetting]" + +| 配置项 | 是否必选 | 值类型 | 配置说明 | +|-----| --- | --- |-------------------------------------------------------------------------------------------| +| tlsEnable | 否 | boolean | 是否启用 TLS 功能,可选配置,缺省为 false | +| tlsPort | 否 | int | Broker 的 TLS 端口号,可选配置,缺省为 8124 | +| tlsKeyStorePath | 否 | String | TLS 的 keyStore 文件的绝对存储路径 + keyStore 文件名,在启动 TLS 功能时,该字段必填且不能为空 | +| tlsKeyStorePassword | 否 | String | TLS 的 keyStorePassword 文件的绝对存储路径 + keyStorePassword 文件名,在启动 TLS 功能时,该字段必填且不能为空 | +| tlsTwoWayAuthEnable | 否 | boolean | 是否启用 TLS 双向认证功能,可选配置,缺省为 false | +| tlsTrustStorePath | 否 | String | TLS 的 TrustStore 文件的绝对存储路径 + TrustStore 文件名,在启动 TLS 功能且启用双向认证时,该字段必填且不能为空 | +| tlsTrustStorePassword | 否 | String | TLS 的 TrustStorePassword 文件的绝对存储路径 + TrustStorePassword 文件名,在启动 TLS 功能且启用双向认证时,该字段必填且不能为空 | [audit] > Broker 使用审计模块来报告数据设置单元,启用审计时,配置单元提供相关设置,该可选配置单位有一个固定值 " [audit] " -| 配置项 | 是否必选 | 值类型 | 配置说明 | -|-----|------| --- |---------------------------------------------------------------------------------| -| auditEnable | 否 | boolean | 是否启用审计上报功能,可选配置,缺省为false | +| 配置项 | 是否必选 | 值类型 | 配置说明 | +|-----|------| --- |--------------------------------------------------------------------------------| +| auditEnable | 否 | boolean | 是否启用审计上报功能,可选配置,缺省为 false | | auditProxyAddr | 否 | String | 审计上报地址,格式必须是 " ip1:port1,ip2:port2,ip3:port3 ", 缺省值为 127.0.0.1:10081 | -| auditCacheFilePath | 否 | String | 审计上报数据的缓存文件路径,缺省为 " /data/inlong/audit " | -| auditCacheMaxRows | 否 | int | 最大审计缓存的数据条数,缺省为2000000条 | -| auditIdProduce | 否 | int | 上报生产数据的审计ID,缺省值为9 | -| auditIdConsume | 否 | int | 上报消费数据的审计ID,缺省值为10 | +| auditCacheFilePath | 否 | String | 审计上报数据的缓存文件路径,缺省为 " /data/inlong/audit " | +| auditCacheMaxRows | 否 | int | 最大审计缓存的数据条数,缺省为 2000000 条 | +| auditIdProduce | 否 | int | 上报生产数据的审计 ID,缺省值为 9 | +| auditIdConsume | 否 | int | 上报消费数据的审计 ID,缺省值为 10 | [prometheus] > Broker 使用 prometheus 提供指标数据查询时的相关配置单元设置,可选配置单元集合 " [prometheus] " -| 配置项 | 是否必选 | 值类型 | 配置说明 | -|-----|------|---------|---------------------------------------------------------------------------------| -| promEnable | 否 | boolean | 是否启用 prometheus服务,可选配置,缺省为false | +| 配置项 | 是否必选 | 值类型 | 配置说明 | +|-----|------|---------|---------------------------------------------------------| +| promEnable | 否 | boolean | 是否启用 prometheus 服务,可选配置,缺省为 false | | promClusterName | 否 | String | 启用 prometheus 服务时 服务节点所属于的集群名,缺省值为 " InLong " | -| promHttpPort | 否 | int | 启用 prometheus 服务时的侦听端口,可选配置,缺省值为 9081 | +| promHttpPort | 否 | int | 启用 prometheus 服务时的侦听端口,可选配置,缺省值为 9081 | --- Back to top diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/img/sys_structure.png b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/img/sys_structure.png index 70b4dad4ce1bec0e610ce9b0f810c8af9ae95118..a980561ca7f4e512c4c95045d5eda109ff7481fd 100644 GIT binary patch literal 145872 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 S*#+gAY^)r=DLwGr5C0F#TPKJB literal 54641 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 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/overview.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/overview.md index 40f5321ea3d..3c169c1ef69 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/overview.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/overview.md @@ -3,39 +3,37 @@ title: 总览 sidebar_position: 1 --- -## 1 Apache InLong TubeMQ模块的架构 -经过多年演变,TubeMQ集群分为如下5个部分: +## 1 Apache InLong TubeMQ 模块的架构 +经过多年演变,TubeMQ 集群分为如下 4 个部分: ![](img/sys_structure.png) -- **Portal**: 负责对外交互和运维操作的Portal部分,包括API和Web两块,API对接集群之外的管理系统,Web是在API基础上对日常运维功能做的页面封装; +- **Portal**: 负责对外交互和运维操作的 Portal 部分,包括 API 和 Web 两块,API 对接集群之外的管理系统,Web 是在 API 基础上对日常运维功能做的页面封装; -- **Master**: 负责集群控制的Control部分,该部分由1个或多个Master节点组成,Master HA通过Master节点间心跳保活、实时热备切换完成(这是大家使用TubeMQ的Lib时需要填写对应集群所有Master节点地址的原因),主Master负责管理整个集群的状态、资源调度、权限检查、元数据查询等; +- **Master**: 负责集群控制的 Control 部分,该部分由 1 个或多个 Master 节点组成,Master HA 通过 Master 节点间心跳保活、实时热备切换完成(这是大家使用 TubeMQ 的 Lib 时需要填写对应集群所有 Master 节点地址的原因),主 Master 负责管理整个集群的状态、资源调度、权限检查、元数据查询等; -- **Broker**: 负责实际数据存储的Store部分,该部分由相互之间独立的Broker节点组成,每个Broker节点对本节点内的Topic集合进行管理,包括Topic的增、删、改、查,Topic内的消息存储、消费、老化、分区扩容、数据消费的offset记录等,集群对外能力,包括Topic数目、吞吐量、容量等,通过水平扩展Broker节点来完成; +- **Broker**: 负责实际数据存储的 Store 部分,该部分由相互之间独立的 Broker 节点组成,每个 Broker 节点对本节点内的 Topic 集合进行管理,包括 Topic 的增、删、改、查,Topic 内的消息存储、消费、老化、分区扩容、数据消费的 offset 记录等,集群对外能力,包括 Topic 数目、吞吐量、容量等,通过水平扩展 Broker 节点来完成; -- **Client**: 负责数据生产和消费的Client部分,该部分我们以Lib形式对外提供,大家用得最多的是消费端,相比之前,消费端现支持Push、Pull两种数据拉取模式,数据消费行为支持顺序和过滤消费两种。对于Pull消费模式,支持业务通过客户端重置精确offset以支持业务exactly-once消费,同时,消费端新推出跨集群切换免重启的Consumer客户端; +- **Client**: 负责数据生产和消费的 Client 部分,该部分我们以 Lib 形式对外提供,大家用得最多的是消费端,相比之前,消费端现支持 Push、Pull 两种数据拉取模式,数据消费行为支持顺序和过滤消费两种。对于 Pull 消费模式,支持业务通过客户端重置精确 offset 以支持业务 exactly-once 消费,同时,消费端新推出跨集群切换免重启的 Consumer 客户端; -- **ZooKeeper**: 负责offset存储的ZooKeeper部分,该部分功能已弱化到仅做offset的持久化存储,考虑到接下来的多节点副本功能该模块暂时保留。 - -## 2 Apache InLong TubeMQ模块的系统特点 -- **纯Java实现语言**: -TubeMQ采用纯Java语言开发,便于开发人员快速熟悉项目及问题处理; +## 2 Apache InLong TubeMQ 模块的系统特点 +- **纯 Java 实现语言**: +TubeMQ 采用纯 Java 语言开发,便于开发人员快速熟悉项目及问题处理; - **引入协调节点**: -TubeMQ系统采用自管理的元数据仲裁机制方式进行,Master节点通过采用内嵌数据库BDB完成集群内元数据的存储、更新以及HA热切功能,负责TubeMQ集群的运行管控和配置管理操作,对外提供接口等;通过Master节点,TubeMQ集群里的Broker配置设置、变更及查询实现了完整的自动化闭环管理,减轻了系统维护的复杂度; +TubeMQ 系统采用自管理的元数据仲裁机制方式进行,Master 节点通过采用内嵌数据库 BDB 完成集群内元数据的存储、更新以及 HA 热切功能,负责 TubeMQ 集群的运行管控和配置管理操作,对外提供接口等;通过 Master 节点,TubeMQ 集群里的 Broker 配置设置、变更及查询实现了完整的自动化闭环管理,减轻了系统维护的复杂度; - **服务器侧消费负载均衡**: -TubeMQ采用的是服务侧负载均衡的方案,而不是客户端侧操作,提升系统的管控能力同时简化客户端实现,更便于均衡算法升级; +TubeMQ 采用的是服务侧负载均衡的方案,而不是客户端侧操作,提升系统的管控能力同时简化客户端实现,更便于均衡算法升级; - **系统行级锁操作**: -对于Broker消息读写中存在中间状态的并发操作采用行级锁,避免重复问题; +对于 Broker 消息读写中存在中间状态的并发操作采用行级锁,避免重复问题; -- **Offset管理调整**: -Offset由各个Broker独自管理,ZK只作数据持久化存储用(最初考虑完全去掉ZK依赖,考虑到后续的功能扩展就暂时保留); +- ** Offset 管理调整**: +Offset 由各个 Broker 独自管理,以文件形式持久化存储; - **消息读取机制的改进**: -TubeMQ采用消息随机读取模式,同时为了降低消息时延又增加了内存缓存读写,使其满足业务快速生产消费的需求(后面章节详细介绍); +TubeMQ 采用消息随机读取模式,同时为了降低消息时延又增加了内存缓存读写,使其满足业务快速生产消费的需求(后面章节详细介绍); - **消费者行为管控**: 支持通过策略实时动态地控制系统接入的消费者行为,包括系统负载高时对特定业务的限流、暂停消费,动态调整数据拉取的频率等; @@ -44,20 +42,20 @@ TubeMQ采用消息随机读取模式,同时为了降低消息时延又增加了 针对系统运维、业务特点、机器负载状态的不同需求,系统支持运维通过策略来动态控制不同消费者的消费行为,比如是否有权限消费、消费时延分级保证、消费限流控制,以及数据拉取频率控制等; - **系统安全管控**: -根据业务不同的数据服务需要,以及系统运维安全的考虑,TubeMQ系统增加了TLS传输层加密管道,生产和消费服务的认证、授权,以及针对分布式访问控制的访问令牌管理,满足业务和系统运维在系统安全方面的需求; +根据业务不同的数据服务需要,以及系统运维安全的考虑,TubeMQ 系统增加了 TLS 传输层加密管道,生产和消费服务的认证、授权,以及针对分布式访问控制的访问令牌管理,满足业务和系统运维在系统安全方面的需求; - **资源利用率提升改进**: -TubeMQ采用连接复用模式,减少连接资源消耗;通过逻辑分区构造,减少系统对文件句柄数的占用,通过服务器端过滤模式,减少网络带宽资源使用率;通过剥离对Zookeeper的使用,减少Zookeeper的强依赖及瓶颈限制; +TubeMQ 采用连接复用模式,减少连接资源消耗;通过逻辑分区构造,减少系统对文件句柄数的占用,通过服务器端过滤模式,减少网络带宽资源使用率;通过剥离对 Zookeeper 的使用,解决 Zookeeper 的强依赖及瓶颈限制; - **客户端改进**: -基于业务使用上的便利性以,我们简化了客户端逻辑,使其做到最小的功能集合,我们采用基于响应消息的接收质量统计算法来自动剔出坏的Broker节点,基于首次使用时作连接尝试来避免大数据量发送时发送受阻(具体内容见后面章节介绍)。 +基于业务使用上的便利性以,我们简化了客户端逻辑,使其做到最小的功能集合,我们采用基于响应消息的接收质量统计算法来自动剔出坏的 Broker 节点,基于首次使用时作连接尝试来避免大数据量发送时发送受阻(具体内容见后面章节介绍)。 -## 3 Broker文件存储方案改进 -以磁盘为数据持久化媒介的系统都面临各种因磁盘问题导致的系统性能问题,TubeMQ系统也不例外,性能提升很大程度上是在解决消息数据如何读写及存储的问题。在这个方面TubeMQ进行了比较多的改进,我们采用存储实例来作为最小的Topic数据管理单元,每个存储实例包括一个文件存储块和一个内存缓存块,每个Topic可以分配多个存储实例: +## 3 Broker 文件存储方案改进 +以磁盘为数据持久化媒介的系统都面临各种因磁盘问题导致的系统性能问题,TubeMQ 系统也不例外,性能提升很大程度上是在解决消息数据如何读写及存储的问题。在这个方面 TubeMQ 进行了比较多的改进,我们采用存储实例来作为最小的 Topic 数据管理单元,每个存储实例包括一个文件存储块和一个内存缓存块,每个 Topic 可以分配多个存储实例: ### 3.1 文件存储块 - TubeMQ的磁盘存储方案类似Kafka,但又不尽相同,如下图示,每个文件存储块由一个索引文件和一个数据文件组成,partiton为数据文件里的逻辑分区,每个Topic单独维护管理文件存储块的相关机制,包括老化周期,partition个数,是否可读可写等。 + TubeMQ 的磁盘存储方案类似 Kafka,但又不尽相同,如下图示,每个文件存储块由一个索引文件和一个数据文件组成,partiton 为数据文件里的逻辑分区,每个 Topic 单独维护管理文件存储块的相关机制,包括老化周期,partition 个数,是否可读可写等。 ![](img/store_file.png) ### 3.2 内存缓存块 @@ -65,19 +63,19 @@ TubeMQ采用连接复用模式,减少连接资源消耗;通过逻辑分区 ![](img/store_mem.png) -## 4 Apache InLong TubeMQ模块的客户端演进: -业务与TubeMQ接触得最多的是消费侧,怎样更适应业务特点、更方便业务使用我们在这块做了比较多的改进: +## 4 Apache InLong TubeMQ 模块的客户端演进: +业务与 TubeMQ 接触得最多的是消费侧,怎样更适应业务特点、更方便业务使用我们在这块做了比较多的改进: -- **数据拉取模式支持Push、Pull:** - - **Push客户端:** TubeMQ最初消费端版本只提供Push模式的消费,这种模式能比较快速地消费数据,减轻服务端压力,但同时也带来一个问题,业务使用的时候因为无法控制拉取频率,从而容易形成数据积压数据处理不过来; +- **数据拉取模式支持 Push、Pull:** + - **Push 客户端:** TubeMQ 最初消费端版本只提供 Push 模式的消费,这种模式能比较快速地消费数据,减轻服务端压力,但同时也带来一个问题,业务使用的时候因为无法控制拉取频率,从而容易形成数据积压数据处理不过来; - - **带消费中止/继续的Push客户端:** 在收到业务反馈能否控制Push拉取动作的需求后,我们增加了resumeConsume()/pauseConsume()函数对,让业务可以模拟水位线控制机制,状态比较繁忙时调用pauseConsume()函数来中止Lib后台的数据拉取,在状态恢复后,再调用resumeConsume()通知Lib后台继续拉取数据; + - **带消费中止/继续的 Push 客户端:** 在收到业务反馈能否控制Push拉取动作的需求后,我们增加了 resumeConsume()/pauseConsume() 函数对,让业务可以模拟水位线控制机制,状态比较繁忙时调用 pauseConsume() 函数来中止 Lib 后台的数据拉取,在状态恢复后,再调用 resumeConsume() 通知 Lib 后台继续拉取数据; - - **Pull客户端:** 我们后来版本里增加了Pull客户端,该客户端有别于Push客户端,是由业务而非Lib主动的拉取消息并对数据处理的结果进行成功与否的确认,将数据处理的主动权留给业务。这样处理后,虽然服务端压力有所提升,但业务消费时积压情况可大大缓解。 + - **Pull 客户端:** 我们后来版本里增加了 Pull 客户端,该客户端有别于 Push 客户端,是由业务而非 Lib 主动的拉取消息并对数据处理的结果进行成功与否的确认,将数据处理的主动权留给业务。这样处理后,虽然服务端压力有所提升,但业务消费时积压情况可大大缓解。 -- **数据消费行为支持顺序和过滤消费:** 在TubeMQ设计初我们考虑是不同业务使用不同的Topic,实际运营中我们发现不少业务实际上是通过代理模式上报的数据,数据通过Topic下的文件ID或者表ID属性来区分,业务为了消费自己的一份数据是需要全量消费该Topic下的所有数据。我们通过tid字段支持指定属性的过滤消费模式,将数据过滤放到服务端来做,减少出流量以及客户端的数据处理压力。 +- **数据消费行为支持顺序和过滤消费:** 在 TubeMQ 设计初我们考虑是不同业务使用不同的 Topic,实际运营中我们发现不少业务实际上是通过代理模式上报的数据,数据通过 Topic 下的文件 ID 或者表 ID 属性来区分,业务为了消费自己的一份数据是需要全量消费该 Topic 下的所有数据。我们通过 tid 字段支持指定属性的过滤消费模式,将数据过滤放到服务端来做,减少出流量以及客户端的数据处理压力。 -- **支持业务exactly-once消费:** 为了解决业务处理数据时需要精确回档的需求,在客户端版本里提供了通过客户端重置精确offset功能,业务重启系统时,只需通过客户端提供待回拨时间点的消费上下文,TubeMQ即可按照指定的精确位置接续消费。该特性目前已在Flink这类实时计算框架使用,依托Flink基于checkpoint机制进行exactly-once数据处理。 +- **支持业务 exactly-once 消费:** 为了解决业务处理数据时需要精确回档的需求,在客户端版本里提供了通过客户端重置精确 offset 功能,业务重启系统时,只需通过客户端提供待回拨时间点的消费上下文,TubeMQ 即可按照指定的精确位置接续消费。该特性目前已在 Flink 这类实时计算框架使用,依托 Flink 基于 checkpoint 机制进行 exactly-once 数据处理。 --- diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/quick_start.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/quick_start.md index c5732c8fe30..c50dcc328d4 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/quick_start.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/quick_start.md @@ -5,17 +5,21 @@ sidebar_position: 1 ## 1 部署运行 ### 1.1 配置示例 -TubeMQ 集群包含有两个组件: **Master** 和 **Broker**. Master 和 Broker 可以部署在相同或者不同的节点上,依照业务对机器的规划进行处理。我们通过如下3台机器搭建有2台Master的生产、消费的集群进行配置示例: +TubeMQ 集群包含有两个组件: **Master** 和 **Broker**. Master 和 Broker 可以部署在相同或者不同的节点上,依照业务对机器的规划进行处理。我们通过如下 3 台机器搭建有 2 台 Master 的生产、消费的集群进行配置示例: -| 所属角色 | TCP端口 | TLS端口 | WEB端口 | 备注 | -| --- | --- | --- | --- |------------------------------------------| -| Master | 8099 | 8199 | 8080 | 元数据存储在ZooKeeper的`/tubemq`目录 | -| Broker | 8123 | 8124 | 8081 | 消息储存在`/stage/msg_data` | -| ZooKeeper | 2181 | | | 存储Master元数据及Broker的Offset内容,根目录`/tubemq` | +| 所属角色 | TCP 端口 | TLS 端口 | WEB 端口 | 备注 | +| --- |--------|--------|--------|---------------------------------------------------| +| Master | 8099 | 8199 | 8080 | 元数据存储在 ZooKeeper 的 `/tubemq` 目录 | +| Broker | 8123 | 8124 | 8081 | 消息储存在 `/stage/msg_data` | +| ZooKeeper | 2181 | | | 存储 Master 元数据,如果配置 meta_bdb 则该组件不需要,根目录 `/tubemq` | ### 1.2 准备工作 - ZooKeeper集群 +ZooKeeper 在 TubeMQ 环境里不是必选,如果 Master 元数据采用 BDB 存储,则该部分资源可以省略 + +- TubeMQ 安装包部署 + 选择安装路径后,安装包解压后的目录结构如下: ``` /INSTALL_PATH/inlong-tubemq-server/ @@ -26,68 +30,68 @@ TubeMQ 集群包含有两个组件: **Master** 和 **Broker**. Master 和 Broker └── resources ``` -### 1.3 配置Master -编辑`conf/master.ini`,根据集群信息变更以下配置项 +### 1.3 配置 Master +编辑 `conf/master.ini`,根据集群信息变更以下配置项 -- Master IP和端口 +- Master IP 和端口 ```ini [master] -hostName=YOUR_SERVER_IP // 替换为当前主机IP +hostName=YOUR_SERVER_IP // 替换为当前主机 IP port=8099 webPort=8080 ``` -- 访问授权Token +- 访问授权 Token ```ini -confModAuthToken=abc // 该token用于页面配置、API调用等 +confModAuthToken=abc // 该 token 用于页面配置、API 调用等 ``` -- 配置meta_zookeeper策略 +- 配置 meta_zookeeper 策略 ```ini -[meta_zookeeper] // 同一个集群里Master必须使用同一套zookeeper环境,且配置一致 +[meta_zookeeper] // 同一个集群里 Master 必须使用同一套 zookeeper 环境,且配置一致 zkNodeRoot=/tubemq -zkServerAddr=localhost:2181 // 指向zookeeper集群,多个地址逗号分开 +zkServerAddr=localhost:2181 // 指向 zookeeper 集群,多个地址逗号分开 ``` -- 配置meta_bdb策略(可选) - **注意**:由于Apache依赖包的LICENSE问题,从1.1.0版本开始TubeMQ发布的包不再包含BDB包,如果需要BDB存储元数据,业务需要自行下载com.sleepycat.je-7.3.7.jar包,要不系统运行时会报“ java.lang.ClassNotFoundException: com.sleepycat.je.ReplicaConsistencyPolicy”错误。 +- 配置 meta_bdb 策略(可选) + **注意**:由于 Apache 依赖包的 LICENSE 问题,从 1.1.0 版本开始 TubeMQ 发布的包不再包含 BDB 包,如果需要 BDB 存储元数据,业务需要自行下载 com.sleepycat.je-7.3.7.jar 包,要不系统运行时会报 “ java.lang.ClassNotFoundException: com.sleepycat.je.ReplicaConsistencyPolicy” 错误。 ```ini [meta_bdb] -repGroupName=tubemqGroup1 // 同一个集群的Master必须要用同一个组名,且不同集群的组名必须不同 -repNodeName=tubemqGroupNode1 // 同一个集群的master节点名必须是不同的名称 +repGroupName=tubemqGroup1 // 同一个集群的 Master 必须要用同一个组名,且不同集群的组名必须不同 +repNodeName=tubemqGroupNode1 // 同一个集群的 master 节点名必须是不同的名称 metaDataPath=/stage/meta_data -repHelperHost=FIRST_MASTER_NODE_IP:9001 // helperHost用于创建master集群,一般配置第一个master节点ip +repHelperHost=FIRST_MASTER_NODE_IP:9001 // helperHost 用于创建 master 集群,一般配置第一个 master 节点 ip ``` -- (可选)生产环境,多master HA级别 +- (可选)生产环境,多 master HA 级别 -| HA级别 | Master数量 | 描述 | -| -------- | ------------- | ----------- | -| 高 | 3 masters | 任何主节点崩溃后,集群元数据仍处于读/写状态,可以接受新的生产者/消费者。 | -| 中 | 2 masters | 一个主节点崩溃后,集群元数据处于只读状态。对现有的生产者和消费者没有任何影响。 | -| 低 | 1 master | 主节点崩溃后,对现有的生产者和消费者没有影响。 | +| HA 级别 | Master 数量 | 描述 | +|-------|-----------| ----------- | +| 高 | 3 masters | 任何主节点崩溃后,集群元数据仍处于读/写状态,可以接受新的生产者/消费者。 | +| 中 | 2 masters | 一个主节点崩溃后,集群元数据处于只读状态。对现有的生产者和消费者没有任何影响。 | +| 低 | 1 master | 主节点崩溃后,对现有的生产者和消费者没有影响。 | **注意**: -- 基于Docker容器化的需要,master.ini文件里对[meta_zookeeper] 或 [meta_bdb] 如上3个参数部分都是使用的缺省设置,在实际组网使用时需要以Master节点真实信息配置 -- Master所有节点的IP信息要在hosts配置文件里构造IP与hostName映射关系,如类似“192.168.0.1 192-168-0-1” -- 需保证Master所有节点之间的时钟同步 +- 基于 Docker 容器化的需要,master.ini 文件里对 [meta_zookeeper] 或 [meta_bdb] 如上 3 个参数部分都是使用的缺省设置,在实际组网使用时需要以 Master 节点真实信息配置 +- Master 所有节点的 IP 信息要在 hosts 配置文件里构造 IP 与 hostName 映射关系,如类似 “192.168.0.1 192-168-0-1” +- 需保证 Master 所有节点之间的时钟同步 ### 1.4 配置Broker -编辑`conf/broker.ini`,根据集群信息变更以下配置项 -- Broker IP和端口 +编辑 `conf/broker.ini`,根据集群信息变更以下配置项 +- Broker IP 和端口 ```ini [broker] brokerId=0 -hostName=YOUR_SERVER_IP // 替换为当前主机IP,broker目前只支持IP +hostName=YOUR_SERVER_IP // 替换为当前主机 IP,broker 目前只支持 IP port=8123 webPort=8081 defEthName=eth1 // 获取真实 IP 的网卡 ``` -- Master地址 +- Master 地址 ```ini -masterAddressList=YOUR_MASTER_IP1:8099,YOUR_MASTER_IP2:8099 //多个master以逗号分隔 +masterAddressList=YOUR_MASTER_IP1:8099,YOUR_MASTER_IP2:8099 //多个 master 以逗号分隔 ``` - 数据目录 @@ -95,24 +99,17 @@ masterAddressList=YOUR_MASTER_IP1:8099,YOUR_MASTER_IP2:8099 //多个master以 primaryPath=/stage/msg_data ``` -- ZooKeeper集群地址 -```ini -[zookeeper] // 同一个集群里Master和Broker必须使用同一套zookeeper环境,且配置一致 -zkNodeRoot=/tubemq -zkServerAddr=localhost:2181 // 指向zookeeper集群,多个地址逗号分开 -``` - -### 1.5 启动Master -进入Master节点的 `bin` 目录下,启动服务: +### 1.5 启动 Master +进入 Master 节点的 `bin` 目录下,启动服务: ```bash ./tubemq.sh master start ``` -访问Master的管控台 `http://YOUR_MASTER_IP:8080` ,页面可查则表示master已成功启动: +访问Master的管控台 `http://YOUR_MASTER_IP:8080` ,页面可查则表示 master 已成功启动: ![TubeMQ Console GUI](img/tubemq-console-gui.png) -#### 1.5.1 配置Broker元数据 -Broker启动前,首先要在Master上配置Broker元数据,增加Broker相关的管理信息。在`Broker List` 页面, `Add Single Broker`,然后填写相关信息: +#### 1.5.1 配置 Broker 元数据 +Broker 启动前,首先要在 Master 上配置 Broker 元数据,增加 Broker 相关的管理信息。在 `Broker List` 页面, `Add Single Broker`,然后填写相关信息: ![Add Broker 1](img/tubemq-add-broker-1.png) @@ -123,43 +120,43 @@ Broker启动前,首先要在Master上配置Broker元数据,增加Broker相 然后上线Broker: ![Add Broker 2](img/tubemq-add-broker-2.png) -### 1.6 启动Broker -进入broker节点的 `bin` 目录下,执行以下命令启动Broker服务: +### 1.6 启动 Broker +进入 broker 节点的 `bin` 目录下,执行以下命令启动 Broker 服务: ```bash ./tubemq.sh broker start ``` -刷新页面可以看到 Broker 已经注册,当 `当前运行子状态` 为 `idle` 时, 可以增加topic: +刷新页面可以看到 Broker 已经注册,当 `当前运行子状态` 为 `idle` 时, 可以增加 topic: ![Add Broker 3](img/tubemq-add-broker-3.png) ## 2 快速使用 ### 2.1 新增 Topic -可以通过 web GUI 添加 Topic, 在 `Topic列表`页面添加,需要填写相关信息,比如增加`demo` topic: +可以通过 web GUI 添加 Topic, 在 `Topic列表` 页面添加,需要填写相关信息,比如增加 `demo` topic: ![Add Topic 1](img/tubemq-add-topic-1.png) 然后选择部署 Topic 的 Broker ![Add Topic 5](img/tubemq-add-topic-5.png) -此时 Broker的 `可发布` 和 `可订阅` 依旧是灰色的 +此时 Broker 的 `可发布` 和 `可订阅` 依旧是灰色的 ![Add Topic 6](img/tubemq-add-topic-6.png) -需要在 `Broker列表`页面重载Broker 配置 +需要在 `Broker列表` 页面重载 Broker 配置 ![Add Topic 2](img/tubemq-add-topic-2.png) ![Add Topic 3](img/tubemq-add-topic-3.png) -之后就可以在页面查看Topic信息。 +之后就可以在页面查看 Topic 信息。 ![Add Topic 4](img/tubemq-add-topic-4.png) -### 2.2 运行Example -可以通过上面创建的`demo` topic来测试集群。 +### 2.2 运行 Example +可以通过上面创建的 `demo` topic 来测试集群。 #### 2.2.1 生产消息 -将 `YOUR_MASTER_IP:port` 替换为实际的IP和端口,然后运行producer: +将 `YOUR_MASTER_IP:port` 替换为实际的 IP 和端口,然后运行 producer: ```bash cd /INSTALL_PATH/apache-inlong-tubemq-server-[TUBEMQ-VERSION]-bin ./bin/tubemq-producer-test.sh --master-servers YOUR_MASTER_IP1:port,YOUR_MASTER_IP2:port --topicName demo @@ -169,7 +166,7 @@ cd /INSTALL_PATH/apache-inlong-tubemq-server-[TUBEMQ-VERSION]-bin ![Demo 1](img/tubemq-send-message.png) #### 2.2.2 消费消息 -将 `YOUR_MASTER_IP:port` 替换为实际的IP和端口,然后运行Consumer: +将 `YOUR_MASTER_IP:port` 替换为实际的 IP 和端口,然后运行 Consumer: ```bash cd /INSTALL_PATH/apache-inlong-tubemq-server-[TUBEMQ-VERSION]-bin ./bin/tubemq-consumer-test.sh --master-servers YOUR_MASTER_IP1:port,YOUR_MASTER_IP2:port --topicName demo --groupName test_consume @@ -183,7 +180,7 @@ cd /INSTALL_PATH/apache-inlong-tubemq-server-[TUBEMQ-VERSION]-bin 参考 [InLong TubeMQ Manager](modules/tubemq/tubemq-manager/quick_start.md) ## 4 结束 -在这里,已经完成了TubeMQ的编译,部署,系统配置,启动,生产和消费。如果需要了解更深入的内容,请查看《TubeMQ HTTP API》里的相关内容,进行相应的配置设置。 +在这里,已经完成了 TubeMQ 的编译,部署,系统配置,启动,生产和消费。如果需要了解更深入的内容,请查看《TubeMQ HTTP API》里的相关内容,进行相应的配置设置。 --- Back to top From 48ce4112636ebc41ed7176b7b8e21fc6f269a78e Mon Sep 17 00:00:00 2001 From: gosonzhang Date: Wed, 23 Oct 2024 19:35:17 +0800 Subject: [PATCH 2/4] [INLONG-11386][TubeMQ] Use local files to save consumer group offset information (#11395) --- .../http_access_api_definition_cn.xls | Bin 200704 -> 201728 bytes .../http_access_api_definition_cn.xls | Bin 200704 -> 201728 bytes .../current/modules/tubemq/http_access_api.md | 16 ++++++++-------- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/modules/tubemq/appendixfiles/http_access_api_definition_cn.xls b/docs/modules/tubemq/appendixfiles/http_access_api_definition_cn.xls index e834b49c9b7b0de558ec34edd6a0b3a57bb22d6f..5801651cf0eda35e9ab7a9eb6852d7c41edaa5d5 100644 GIT binary patch delta 35111 zcmc(I349er)^Bwukd>PR5|WTWNJ0|!Jx12Bii!vb44W(=tVTdKF>GNqASmD!8x_Rm zQ^(Q|Hk6)nwLgW7%{WVb;|DOU~NKj3qLf2>lYa$n_ z_6RM-Y$*RCWdaf25-PMrcwZvM}Zuo6RJ`r%kF5X%U3fl)&8Xk-7a$sx2}j zbFVY0LUfN%?=h*CD32h&k&HqyvM=G3;qEg$rIML@yY8oS_L8xdF zriBSPNL6$1&B(OU!V9vp!*6CZwHk+yH_o)0gsrBT+35=LZ7~9WHWlJ|mL?hcyuz&T!%c@++2QXnx0#xI+sv7V^A6{U*fO4*!?SYv|K{P5nM1N$sF9v# zrDS>G{h66o%kV3ioo;QK5Pmo#1!AUUMO%u5P7C*sO6|*x(+(`i%8bbli7xO>NY^_p ztzXN2E!CPr2NvYS#fE>M*CO0Bzc{=&uTS`uykk}7c!=)(yH^bV=Y7)-jL!eIxjpyC@Zj=`>@#nLSC)6Qhu4N5DQ|06-WEPlzOcb9 zm{oaTM8EjWkG=M!mHaILzQfNsq|oroM|+1q`b*dFO|M@6*z3Qh+w0N}ocs9el+KMs z19HH)@#n7GIJd{mFRvOdX5zC*%n*ykN5kh&?R-^S<((7%e*Ks!7V=t3__tfLYNl0G zRxP=1%B+R+@&EjpGZ)QRj9d+>DD#BQl)w$IUc2_tbz;`O8PVa1vBAOzk|<(HI>~QD z#bRU#aOvb5(NMA>NeSxPo7YP@eM8!Zcfa1UhE}ou`uV=qE#mckIDFhhnw5OMXN|S= z-BG!tV#5x+jp<7W5QiZ37{e_7Y-aLm__Z3+rGvTiaiVFeWx0C`4gMh-U{0 z@p_67FAo;t9VqF?ON40HScplN2{8}xwf1t1&k*9tp+daURMdzaR|xT7rV#sv3-JQn z^!brO97hIjJz9t!c|yE827@6;{#YSG5ajvsLOg=4H}7f)94ADF$wD+s!2Bsf?1n(a zGlXaY#s#y4NCD$l=U_eEd;DD9?Ze|ixxq8#N>~Qh4>f@FJCG| zIvBO87UJ(QLVUVRh(BWGcdURLgW&^fgqV*Nw_Y#A_gHamtq`9h+x%-IR^0@D-vnW> z!cAL*7=?wsbu$FZ65^|^LL9^b?OTO-4GU~@n-FJfz0l02I)C}N)$A$PaaQ7U9 z)}XmB>V%ks1)V$uIyBe*87v4U>~k3ShoQRrUw{^{qGw(aqAyfc^_mdhKvns#g9gd> z9)oaTu;5Kd3OQ~_zb40jBkn`^a*ib!jEq!p*V6nTUN8eqvwS9C1i;qEiLhA7fXyBXo*tza<>_l zIC;G#&aAVX{2lgitG%;ehds0|-nO>HSsBib1Z#NOn3T%}Rw-7(j~n8%!}&46Do-1e zJJjn=5=mlA-QYwk#j?gZW0I_;_;r+j)eTOzEURWMk3AAF2p+dagN5>r8TPr zTmYnGkm3FifT<$J4)HoG#hrK1zwgRv zyp6e)0`}qAHrkb_THIC*R8cA5buKYhR0%k{+iHLo9LH@nL<@fDw&FxJ?W8P(4bd0i zv(OdYhUnEOZ-`0)B!g0gg-UTkVgoCbS~WISvQZ##U1BO)@JUQ;%~q;}c#+Q{Y!i#c z5^NYt(0e1sZp6xHEZIjP4w)ekSG;@(1lPz+C)?O%cY}D%4dO8(;s){X>{`(dGs(N-;ROSLQOtp&>{uyA(x1A~H)3E4 z52avML!+5ojSN8yZ=@5~*eV?yF?bSq`wdRHL>ZhWN`ptBkoOc*XN`nX<|YOBp^_O& znmYs_6N&;~8T(g2`HbDjfNG>k)kuRPQ&X0JsryZ3Q&XC$6z$PRrly=wDLQy9GId9< z<(XO})?ldL)FI8(AvSdAfVsWq^d~7(`qB84qX2t@N@2==^n3V) zO-#Ri<8$ zp_#gg0o6p4s)+_grlx!hQ?IUIQ>U}3yP%IuozA9y2%C&-#b9JtkLEM=)fnnGb-HHi zbT)N2Oe9mM8>UXzOr4Gq5mTo_ZJV4mO|8s{%3Sid9>X_zF-$v%8W}WfrBEY7yqmZq zowH5Zuot@$W*REYWC>-`rimn>ABuK!1vNL*D(y5wNT{aRmsAYXw&9;dTa=n~9Fu%G zB-@)LckXP>gxPFDKNRh63TkK;Ln+5L$p9V=IJtXy`iKA1?3 zl?ws=IV6|OCf7>h_#G=3jmF%l?X^(Pj?cAvWwfWN50a;dcso^;;?Gnu z&UrZ3DzVl($8)Xyaf;if=IjkiFoC$WG`O|YxV2Q=+$Dzius}h@w9ugP4XAt#Dn9^4 z4ymA40t$}R4_zcxfdN&ZK@~96bRpGAjzt!wI%GO$tU`9I|CH_m8f{MZd94_SLUydZm`DN^LO{P`6+*yj7K6&sLX3!HtU@?eg>!S>{~}{mcy3e_QH-0? z{e@h+GtX>(V)mjsDz{fW(NC6TlSIu=%anC zE&Ip-uN8xlM0*ZfQ(F}NRs5+I3);i#>JX$Y7)ET~77QacZ_B&XumUS{h%3Ikj0^2j zR7$Cl(Nf1v&fWrRX#NbX{OjP;ULxu*lz&cUp;gqbN?6a&;&pb!I;+H`?#eo1omJv8 zuN5PzoLPldS>+5djF+2?x=n3Qa;NF&sg=@VM^-DTtRoJ#s>GEZR0!cX94$FY*4iPQ za`KktSgqKru5uZ5G8lF87*S=^i5Vf!d6|c*JLL+?0flri#)ax^Ky}ujIvY^MIIk&S zIf~zCpM^+6bO1n3L#53MIL$Sz%&t)83h_JiK?CU^+GzGbz>z|_V#`|L3@ozBuy0Rr zCF^QP)|Dlr!&cH$S5KQ=S(_6jGWxL?Z&uj6YplM zID|9(vsP3MKWQXnyrE)Fx(B`6`j!P)o(gj{()`q28=tA{0pn7UhJp)iwa;XJABB6eBca2^K zR4)yxR{)ACGzC@CmZcivLiIMFdTUU<15i}6DX4oT)M^*1j{((3gX$B2q9RT~<+Nj| zs$HnQ22@`Ss&4?Q+y}J-P$<;)xlrW>RJjIKuArP>+gT6cY~lUwt>Gxf&bFtTtS+a6 z)s9Xj4(VtOH>$VEU`f^6-i}t07ys{dozfdEaUfxcZg*os-km8ktuKzRO&D zri&qgL7RhvXxG<~ewBkFIXIn*0ew(aH)iJ_ba?>jWN^^Xz@VYs14vf{20a}dM74-6 zQ@hdt5|tkMpu2*Ds3Oq^C0!Ii8W9+@JUD1%V9-~=K~&r5>?W24*o_JddNnv`bYM`g zivvhh|LE-Y1_x2Oq7TaHVU5h54qu8CSLDC$AZJ4lj>H?$MUgnx2%oW9_>9%Uhw6iI zKB)5&N(J>e18STW)Z+qB<9$%oJ++`7Z$ORLq#Cb5QBYGsRw-ukKbwPk0)n~{XANZ- zPv9ef8{D9tz^5NJdNlVav4(?sf_9WRK|4yEz({i11(S$N*vA7zOFMKrNujT-$Mmh<-+3=fP z=_eT~o}^i8lBQxZJndVmKwl@JRAD&TfSRm9O%6a&nX91A0SddWDh#I>P*XIhDGJJ| z>|>3^KKpbZE5_~ntYYxT0m)s>awI-hqQrMw?2 zOBI<@4Y8(bVogqySK+VvgW(1(f zi_`*h2C`JD$ed|F&D5Y~2B2p7pmsOM{vffST=tN*Tmbsp@RD0X18L znjL^5e^d+HB%vO2rJ7?v&C#Id1fZ_*LB$N#q`Jm{x<-S#CID6CgIXz})XAkP1FDLl zRLxiwfTAc-3;bC^6`+gMeyss@ttQpA0jRl{=Upbe@1x3Y~zQ z$6L!ht{1nVk1E7@TrVzlx0ZQynm}y#Xxa(LdD_-8Pup7N@z!!HCem8xK|uf3G7kbq zPDahch=s^C@_P6@BxhVQ8Nw$Zpw;l+djEam5K?HB4b9M;( zh|2j33>7ZWtg*mVVdUxyX?L5d3vbHZ^vb&-+InXA|blsm0647ZLAr}pY~uHn>SNC;;_Jf=?ND27sd z^?Czpz2*b!15g`$P#;RDhtNfu++aX$(4aO1pyBIv7@zZ|3(AqMs0yNYEa}g zbo5Bql&)j1sb#M@hm1g8Q_EiSZ?8pObKYx_*LWASYc;p2Rc_vUQ^3nV__zFO|9oObXe>6nwkr_O|hT@Sv9miuPNrk)!Aar1wL~`M;H&ML#{yhqSU=H6`BXtU2o1R!&otb8`J z3jT`WsBIe5wg436UTwt9 zRs-r*4eHhaRM-bKcRWjV(1i*cP+<)!9Dusb2la)7Qf1g}2GngD)NKK%9X_av2`rT= z!*&=@J2a>r0jS%3P$wmnD#LC!pl;WoZVx~?KBzGhS*q2pUpWSpqd_?VsGUBjV-iZ0 zVLJ_|of_260Ms2msLQTqsnp@}9R}1L8q^&Ds5^a7FX>Qs8c=s?P+=tdGG=Yz^|P z;C=WL6{FU7f0RBd!&1dQXL}Ih!6?J2O2P10{PI}QZUw_K&4kBCVgEFTFkjOat zpxWS|2LgkB4h|w)>PWL@1lW;r^+E3i2a&b)K|^K+kf`L*2h{}!k#p#SN@fL+_67zy z!9o8S7!)@m6~S9y6dG(-P=o z8Wd$cDt?gl?vYvV0B5~Fp^x(10nU2=!)sC2`?J@Ig`&u=80pNZvhv5z5QovE^&BvS zIN%e4VEyIr0jQ={yn>mO8V`8oFqKkjjh|HU8vo+LKW@N3?t>5E8@>|07V^x0^%&Oz-^=O7;-zl!gc@yZT@wf|V>AXuwo9bzO;ajNf46bs6JinaXh zKN=o@@A0Uwb=3Jr1`F!}B0~)g@fQe{YTC_ZPkPN&&69>|p43$Hq^p_;)S(Dh=K%?I z)P*`^KpoPc4h5hnjVr10=CM?-yHHOVP)})4PX(YT`zxqBB$O&VpEjVL)}WpaK+&e5 zpqk8QsnogBXAG!kG^l3+P_)G>sGB9!F?WH_8c@$_P|pUSXuncWao4d_sz`s%fO<}Y zqUfU2V-X8d%qgfffWkQ~RaqZ4pbl$LhZU6b#dTJValg+?K&1_R`2s${Rky$@F-}-f z#F{6#C_v3!8=*s6GpbJfbITg?R)q@$j5U3$4p$=s<5pne=v)zIV7!FFW3i z()XU6>m)6*N(_zsmmKa40jZ6S^kEdFzq&}yBHS>g?DNthHnlojdET(k^O}90SN8Gp z*bBf^P<<9N)Jpfr=LG}m1r6$j0Mv^S&d{aoQEDgov!TpCYqt9{E7PBcC?6=OBN9sOB(E4yuV_%O1fVF5D5&xq zSSq!X{KbI!iw5cq*iq_#pV`UD{te=ND5zGP z0I(dTHVEo**X3>yC$tUXguX$X&^Cw@+6Hj~g84Uy6A(;p5M-Sb5R5LNL^3=TBZ{^B z?LVxj^o=|zxwt*=gx&c0}bp9~g@Jz*8K__W>);4@DJ`g8EKEDew8v zfclW33NeA8J`6xnA*Gzk45fBE@}5(GLV2^-DOGWjX? zo|9gSj&&n6|FLe~S}VW9455mSQ-%g-?F z2CB+WB?-9>|J=g)GwvJb3|(iH7-!MGWRhN(o{7@;Hy7g3b%9fLf0x6Z^XshPMv41F z6r>+rq^0Yv9=Kj7Kl1qcv=#`bwd3p4S{$6#;@~ut>5qfcP-Y|!PD7a#2kP`pu^{y^ z-`^=8xxm%tV)3yWijmRcK!JwDCy|lPh7DRAd}0{;6VKS>yq~zv8-XGlD(5{fp;R1v zYCwI;P$~{S4M36U6;$<&S{!_4Kz*i3^%+B{tLYR6p92bU&~hoq!RH(Y6tNTspK}~g z(8(6X0mY4M`QxBNt(9LHiG$A#AwKtnpg8!Pg^(cr-1<4xHcgxc1360N)-TYbR=d9z zHmJrPC3mtfz{u|-Uw~1>N4@|f@{wuYQ4Gv}9v%wKvklR3Y1Z4iN?cv4Ug zNGN5_GX~TdhEnD{6M&*HR8V=F_^@4Vihnbp{-#OwH-?%nra2onS@V5~=qqE|SD1E< z*v_?5qWFrYIr%rqFJex;fldE4o8GpidB29~=ZRRaMH}dXn|K3lh)${^zBYJ#?OSCc zsPg25yw3eKR9JzB^GMTv?VZ^BCbDvO+x!OEV!nuT8GnOpF&|$UmqL9**SY751g{x~ zI{_2XB5}TfIDS|72I54{#(jekepe_Kl;B*YyTA2qQ(3xLeCr#T5iMOzbDrL84L82~ z`kkio??@d^yDd`X{g$!HzlX}N6~o-+d=HghD=zn1G2&Wh`4+3J!(5?i!0!!}f6pqX z!i^&4d**R!imltw~=b^ztDTP0Kh zy2uPa7*Ibjl=A%_0#LMZNS#i15^k|d%Oj8b`O$#-QIqONhJx>Na8oM#2~bte%3G|8 z@pHvkte@oh2_ReWxf%J4QqE64d8kE8o9y0)`V)KU1XpuEd0zUnZ@Fb#IX>ys6T$y% z$oR7lJ_IVkUxoPGz18Y(3Fp*St9AN0xHyahaqw5{9Wc8{a5A=8eVujNtSo2LHmkF< zcbnDPDcp|cTidJ=POt4&=a_loI%no~tF-R^?bbdk=BPMYcV*aGk{HuV^s0MqxAl4d zlnKL+#=Qc-hVeoq*{z;9Z9QYnx(;E#06+9(SM@`WSHNS(1l{#ZUn-$X-OKP(iywM? zA)QO2L#rD6tj3S`?`Hfp@+V82MTk~r*%N_Oz_58AhA6xtKtsPEb ztUY|pj!+6MlAm7|hdo}jh_vIOz>J2Gb^;!M^iHQpI}tX^XxGo1pG2BVNWnAV>SFCe z^Uk>txFj3bNHG?D`nkf?D1B*B<~EKpu8Du#`sf@F1a$6iXqVLJ zS6iD!8J-iRFPHoDxy_^WQ4MeEg3^cASA+FXn9#rf+b716lKoGNOK_1Bfea_$^aM9W zi?R$k**ejHpA1LOg`3iY{>1a&5ZUBB+wk)b?`dw^xZER2>1l4;#O0VSTQOprGb7%f zl(&hCH_CxFU}jBJt6RE@|M3H?AKgkC177$BkJJfRWGo@Dt+kZidpbOK0< z{U(rlgqcL_$%e!}p4rp0^tNH+mkdd3+ptBe7O~Gr2K(E1TO{_09(zQb$76f4J!+z2 z-vVwU@T4&Frn)(JoC9fqw;6eOP+C||9>PfHf0IRwFjE!?nf4nbDn zq14h0%~30^aK@*@VQWPZI>}+1L%;O=ybwRgP<>bQopg;oZQ$Y|q$2L(Q+D7SX=R)icLUfEW zyc757tU9|8R%T!!U74ic3WPI80bO*Lu+GRJ#6^-sc@}1oH!hWNpS}UpxmMcq?j;DF zV^1dOLidUS(c6Xi4iNoy^uAFb$_)tel$PjI?l3q@^G5Ok3X1~v#sUtD2Cn}Va9Eu6 zS`-$?vp6g|W&6TnShnVTtpKNd|DaAH7gD6=&9qtMNs6=qBwxgkLy?TFSjG~TG2WG` zgk?BzH+nu1zWnCm)ANb& zbW^Xzi6U1fid-MJbGh2u+5=7%|1+9vYa@3iZmpS{d`eJ?i!YxNw8v`^x9^%Wx8W^( z+~&5>xRK|pwY{U0y7)+a^0ZkL6l&H3dG-`v-lf=3r0ka3ED8}tS_6{LYNa62%G&bE zN?DKD?pjJ&kIlRmt*lW#7c)8Nq&!#Z+=_HCgMH*kA&FbMJ zy-_+D^BSx-KF;S zmfFY1c;%G)*B->^n01a%P|JGAw8I1zwBT-%-Tz@iTrI`MEz(%pG9> z_vyK7AosO*wihF<>E~ZBi2^Z%`}9a#U+m(f1 z-rOs>PoF!S`*a>7xX%?mZ-VyT^Zw>~oF-!Z^qoD@oe$ zaZ&olbDu8mgec=CM(Mkn`&=>AvL?xa&Vtr_( zBaxdZ(i)JGR8X}L10Aca-Q4-DjolVcL=&Qv{qz#{(-PM+FJV7z?X}2HN4ABZ?r&taV+k)%ucuJbgg$frqj9*LW=wKdpmZfx_*d=%j>3BFn;!d{nXD-T~}Y9UI~&w<*#u9qcJ( ziqwMNXW^27L!W_o{EWOEK`MjXS54m9QNz8;NBUVOk!Pz}Q#xshg&dq#T*fON%`3jb zUE^q8G2WXX=!ju7O4Taot4^H4=eR2#?X8%iLh+c@8ImdI2=P(p(33E$+y(WAkk8L@KPu9Qir*Vo6JkC@>;ais_wjlT6^)YZYrYlEp*fT ztSAF#bDz#+j(@T{_nIhkNoVGUb#0Wsnz>N`=S3MfKgzi4qKsP*rEekk=?hsT$Km1k z^v_+%V(!#8lO^1z@1@sA8Ml=Cy3@%L5AO!=Ee4S1r_f!G!l};irRisfpH9&G!MS5B%k;^JlVJ~eKd9EUD2FX|b zk^|GCd-0;@@S^c58$ro(4ljDW*P=yd_U7ER5S^5}=$RmLvmmcmJi@)fK9ai#Uy*(# zQY1l93@B1%AB{wjph&OkBnk*c>eg4AMRB1>cj+Vw4@HV8*U}nA2}#+TwXlG-Fx*}D z0@lJ+UW>G_wVW%{Z_0h9PwJ;FngU93TLh9XiBeb*w?52mF>@Q?;xA@yqr4VzJKv8T zZBlih(XS4C(($Tx$6 zRuR_u2^6`Ca0Ubv8i{<~t_B2BVmZrR!?OS2N?XIS-|n?Y_CgYB_Ky}Je| zNkUH;Yq?L)RO`4;Wh$AJ)<@~v5T)-%?sJou^Ux)BBjcpi#we3EMd`bV``SC-U4j}} z&%#?I39H6GWN@;?YW%6x*JTJ4zST7mEm{#AKY>=R2?nQBqV(lN>C27M*Ier>mC2-q)+zh)qV%H3>FkJ@r>V!d;d{Bvu3FmiHIy_4ysS{G)V zT<=`ETxZVZ^-IQ$>YYqibj`_;71Qf+qEV%Pq+EFJ@8Dc1^-fN`@MO$QjXu|@y35X< zxJjIGeY**K`=-E0uA5#s6Qteb+LEs5MWH&UzyQjta~WjS6FgbbWpsmwF409(ofIy+ zzPU9}Kz);&)i+t>)H^q)-nsNHm7U^(!IN9>WV#l3;T1QpcWw*+++gs~HSB26(hu|e zlYQf)s`KidOG(p2&ZiDJxn=apPR8B#rYLGs)95WFCMvb1ymXl=8db8S*OEk|%DIJ+ zxox#!a&lqx${egHj~Jy0dQ09($#YisbhD?53gC*h=>9vc<&xwrKZ+uPDi@ zyX`*v$+)zPrjh%6=r)cW&ZIxsd1>$Xx*K38+2P!bZrl&`$RF^6#Bt8KKiKs2fTF$p zYuH|!9)7xMuYK_U*Gmqm6r~+~T|*SD`24?kts!j~^0kI3^}f{bNie2kXVPD#IOMf( zuVtlE{YSfOe6@Inb51fw=(kAPI1GtA(#wX07vdq_k#`jC7T;hdm7O+n?nW-TW3WzD z4ktWn(>tIJyYMl_y>KyrpY6VLCWQKz?u8p5?go%NR-h77L9LTeFS<~%22`vD6&rw} z%2XX}o&yxVclfdk)xdyipg~cc5|N4yJE)+gCuPc422!O`DgFd3QZgxGmpJ0JVxZ%@ z_St2LfVyM~628)`bH(k7x~dJ|l&(`di%puXLHyA)rZ|Jg;0GlZv`f@br#70D`8 z>&#)n;$XFTqB{zC`m$ggaOpr?s+lTprRGC`hsCJyqr-W+`Og2kzIaVHR1VR7pAjgk z*A-N^#~A7>SJDInDuJP>nxyEU;z)<0GGAHj5kSFWue(t6qDH?|bSqNieS}mi&B0VD z6fLzv1X0NNM{7pzy`;k6dljYYhET(Q6DNQA={Mww>~WHr-*a7K5V&ZCZ+NF^SLy zra31M+O-`bicU2Yor)=u^h1T<Bp}c2PSDKl!GtG&bf**L-O(W~KPhYmqTeJ;C9p zQe2wBBTeIxMm)R}m&V~Yvd$NN^XoL-G&UC5Skp~o)(tK+Iq%fjo08-Udlq6z3!OPn z+MBWR<{Xg8*qwD3%V4PrVH6723|@KuA)Zp;PHAdPX{t?W%2Q4pa+M{Y>YK^RY6Spt z&`efVs@IAUyPP&pVL!kP)-I1sV|kexk4#NjnWQYy7Bk7;Gd+K&gIDFGhn~XQeD{bp zE_{{&pQUM!id@RPkvOJf-b(z)M_f{wi`VkH^3$DYyF{ATg6TyQuN4cMwv#Pq?$dTY z_PioADaBA+j9@r$Psh>6G`QErO0r#OSj(b;@5_gSJAC^yF^!yMqdINirJt!Tc3sI_jumb+z^6p&{Jug zfJg{cZ8V2!Dnwsb^UXcY(?%uLwaZC(jx~QV29aS~81OB8@N^HLgpa(6jufe&)&Z(Z zL|u6XRGtP!Wj;w-;hcHSKH{8SXT^3a2AF!_#cB(WPs1g=67GADsv6PHJssK-e=Bo8 zd)O}Rut$`+^0zdYwq&Msf{2`t4iDxydC%MQU5;{BFD*U2NQ7JMpl01NJe%mFQdM)yY{!YRRs9W}k zfed${_ajPQCJ3ofS!ot<)Ln|1wD1CNjg%gh?i|1)>IS*+g@*15S$8s@hWPD<5&x#B zYvqGVdy%1rxKOPOs8$+OE0$CxDS|2jl#05|fbvCMkpWetxlxe@MVcgsnIfh^5ZSWC zR58(O*=SwuwPMhkXV`q)ILrevM0;B}u+{qvL&6g60vqDrb zH3TX>$XVVmks{v1djvPabGP8g?-o2YX&HY6BC;_aThz=+d&zFyqyu6fM#6ji@K?-d z;`^9YbyvJ(-y4%z0=PI{5iv=|Yab~<&ewhYCp$gI84+VWdi%$AXKRqtloy?JrhH=Ohg-)cJF7pja~n`%%X04d#J+*lFPv!hiQ#g=k delta 35071 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 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/http_access_api.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/http_access_api.md index bbc38d86e5d..accefcf7c22 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/http_access_api.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/http_access_api.md @@ -1,19 +1,19 @@ --- -title: HTTP API介绍 +title: HTTP API 介绍 --- -HTTP API是Master或者Broker对外功能暴露的接口,管控台的各项操作都是基于这些API进行;如果有最新的功能,或者管控台没有涵盖的功能,业务都可以直接通过调用HTTP API接口完成。 +HTTP API 是 Master 或者 Broker 对外功能暴露的接口,管控台的各项操作都是基于这些 API 进行;如果有最新的功能,或者管控台没有涵盖的功能,业务都可以直接通过调用 HTTP API 接口完成。 -该部分接口一共有4个部分: +该部分接口一共有 4 个部分: -- Master元数据配置相关的操作接口,接口数量 24个 -- Master消费权限操作接口,接口数量 33个 -- Master订阅关系接口,接口数量 2个 -- Broker相关操作接口定义,接口数量 6个 +- Master 元数据配置相关的操作接口,接口数量 24 个 +- Master 消费权限操作接口,接口数量 33 个 +- Master 订阅关系接口,接口数量 2 个 +- Broker 相关操作接口定义,接口数量 6 个 ![](img/api_interface/http-api.png) -由于接口众多且参数繁杂,md格式不能比较好的表达,因而以excel附件形式提供给到大家: +由于接口众多且参数繁杂,md 格式不能比较好的表达,因而以 excel 附件形式提供给到大家: TubeMQ HTTP API --- From 2b24ec979dd4aca82837ac989878a4637a5a3e04 Mon Sep 17 00:00:00 2001 From: gosonzhang Date: Thu, 24 Oct 2024 08:34:01 +0800 Subject: [PATCH 3/4] [INLONG-11386][TubeMQ] Use local files to save consumer group offset information (#11395) --- docs/modules/tubemq/configure_introduction.md | 10 +++---- docs/modules/tubemq/overview.md | 4 +-- docs/modules/tubemq/quick_start.md | 30 +++++++++---------- .../modules/tubemq/configure_introduction.md | 10 +++---- .../current/modules/tubemq/overview.md | 12 ++++---- .../current/modules/tubemq/quick_start.md | 30 +++++++++---------- 6 files changed, 48 insertions(+), 48 deletions(-) diff --git a/docs/modules/tubemq/configure_introduction.md b/docs/modules/tubemq/configure_introduction.md index c217b0b15bf..92764d70182 100644 --- a/docs/modules/tubemq/configure_introduction.md +++ b/docs/modules/tubemq/configure_introduction.md @@ -2,7 +2,7 @@ title: Configuration --- -## 1 TubeMQ configuration item description +## TubeMQ configuration item description The TubeMQ server includes two modules for the Master and the Broker. The Master also includes a Web front-end module for external page access (this part is stored in the resources). Considering the actual deployment, two modules are often deployed in the same machine, TubeMQ. The contents of the three parts of the two modules are packaged and delivered to the operation and maintenance; the client does not include the lib package of the server part and is delivered to the user separately. @@ -20,9 +20,9 @@ In addition to the back-end system configuration file, the Master also stores th ![](img/configure/conf_velocity_pos.png) -## 2 Configuration item details: +## Configuration item details: -### 2.1 master.ini file: +### master.ini file: [master] > Master system runs the main configuration unit, required unit, the value is fixed to "[master]" @@ -110,13 +110,13 @@ In addition to the back-end system configuration file, the Master also stores th | tlsTrustStorePath | no | string | The absolute storage path of the TLS TrustStore file + the TrustStore file name. This field is required and cannot be empty when the TLS function is enabled and mutual authentication is enabled. | | tlsTrustStorePassword | no | string | The absolute storage path of the TLS TrustStorePassword file + the TrustStorePassword file name. This field is required and cannot be empty when the TLS function is enabled and mutual authentication is enabled. | -### 2.2 velocity.properties file: +### velocity.properties file: | Name | Required | Type | Description | | ------------------------- | ----------------------------- | ----------------------------- | ------------------------------------------------------------ | | file.resource.loader.path | yes | string | The absolute path of the master web template. This part is the absolute path plus /resources/templates of the project when the master is deployed. The configuration is consistent with the actual deployment. If the configuration fails, the master front page access fails. | -### 2.3 broker.ini file: +### broker.ini file: [broker] >The broker system runs the main configuration unit, required unit, and the value is fixed to "[broker]" diff --git a/docs/modules/tubemq/overview.md b/docs/modules/tubemq/overview.md index 182adb6f8f2..f1aa795d4a1 100644 --- a/docs/modules/tubemq/overview.md +++ b/docs/modules/tubemq/overview.md @@ -3,7 +3,7 @@ title: Overview sidebar_position: 1 --- -## 1 TubeMQ Architecture: +## TubeMQ Architecture: After years of evolution, the TubeMQ cluster is divided into the following 4 parts: ![](img/sys_structure.png) @@ -29,7 +29,7 @@ After years of evolution, the TubeMQ cluster is divided into the following 4 par service supports resetting the precise offset through the client to support the business extract-once consumption. At the same time, the consumer has launched a new cross-cluster switch-free Consumer client; -## 2 Broker File Storage Scheme Improvement: +## Broker File Storage Scheme Improvement: Systems that use disks as data persistence media are faced with various system performance problems caused by disk problems. The TubeMQ system is no exception, the performance improvement is largely to solve the problem of how to read, write and store message data. In this regard TubeMQ has made many improvements: storage instances is as the smallest Topic data management unit; each storage instance includes a file storage block and a memory cache block; each Topic can be assigned multiple storage instances. 1. **File storage block:** The disk storage solution of TubeMQ is similar to Kafka, but it is not the same, as shown in the following figure: each file storage block is composed of an index file and a data file; the partiton is a logical partition in the data file; each Topic maintains and manages the file storage block separately, the related mechanisms include the aging cycle, the number of partitions, whether it is readable and writable, etc. diff --git a/docs/modules/tubemq/quick_start.md b/docs/modules/tubemq/quick_start.md index e3360fc455d..5723150f6ed 100644 --- a/docs/modules/tubemq/quick_start.md +++ b/docs/modules/tubemq/quick_start.md @@ -2,9 +2,9 @@ title: Quick Start sidebar_position: 2 --- -## 1 Deploy and Start +## Deploy and Start -### 1.1 Configuration Example +### Configuration Example There're two components in the cluster: **Master** and **Broker**. Master and Broker can be deployed on the same server or different servers. In this example, we setup our cluster like this, and all services run on the same node. Zookeeper should be setup in your environment also. @@ -15,7 +15,7 @@ like this, and all services run on the same node. Zookeeper should be setup in y | Broker | 8123 | 8124 | 8081 | Message is stored at /stage/msg_data | | Zookeeper | 2181 | | | Master metadata is stored at /tubemq, this component is not required if meta_bdb is configured. | -### 1.2 Prerequisites +### Prerequisites - ZooKeeper Cluster ZooKeeper is not mandatory in the TubeMQ environment. If the Master metadata is stored in BDB, this part of the resource can be omitted. @@ -32,7 +32,7 @@ After you extract the package file, here's the folder structure. └── resources ``` -### 1.3 Configure Master +### Configure Master You can change configurations in `conf/master.ini` according to cluster information. - Master IP and Port ```ini @@ -81,7 +81,7 @@ the introduction of availability level. - It is necessary to ensure the clock synchronization between all master nodes -### 1.4 Configure Broker +### Configure Broker You can change configurations in `conf/broker.ini` according to cluster information. - Broker IP and Port ```ini @@ -102,7 +102,7 @@ masterAddressList=MASTER_NODE_IP1:8099,MASTER_NODE_IP2:8099 // multi addresses primaryPath=/stage/msg_data ``` -### 1.5 Start Master +### Start Master - Please go to the `bin` folder and run this command to start the master service. ```bash @@ -113,7 +113,7 @@ the master service. web GUI now. -#### 1.5.1 Configure Broker Metadata +#### Configure Broker Metadata Before we start a broker service, we need to configure it on master web GUI first. Go to the `Broker List` page, click `Add Single Broker`, and input the new broker information. In this example, we only need to input broker IP and authToken: 1. broker IP: broker server ip @@ -123,7 +123,7 @@ In this example, we only need to input broker IP and authToken: Click the online link to activate the new added broker. -### 1.6 Start Broker +### Start Broker - Please go to the `bin` folder and run this command to start the broker service ```bash ./tubemq.sh broker start @@ -134,8 +134,8 @@ Click the online link to activate the new added broker. - After the sub-state of the broker changed to `idle`, we can add topics to that broker. -## 2 Quick Start -### 3.1 Add Topic +## Quick Start +### Add Topic - 3.1.1 We can add or manage the cluster topics on the web GUI. To add a new topic, go to the topic list page and click the add new topic button @@ -149,10 +149,10 @@ that the topic publish/subscribe state is active now. - 3.1.5 Now we can use the topic to send messages. -### 2.2 Run Example +### Run Example Now we can use `demo` topic which created before to test our cluster. -#### 2.2.1 Produce Messages +#### Produce Messages Please don't forget replace `YOUR_MASTER_IP:port` with your server ip and port, and start producer. @@ -164,7 +164,7 @@ cd /INSTALL_PATH/apache-inlong-tubemq-server-[TUBEMQ-VERSION]-bin From the log, we can see the message is sent out. ![Demo 1](img/tubemq-send-message.png) -#### 2.2.2 Consume Messages +#### Consume Messages Please don't forget replace YOUR_MASTER_IP:port with your server ip and port, and start consumer. ```bash @@ -175,10 +175,10 @@ cd /INSTALL_PATH/apache-inlong-tubemq-server-[TUBEMQ-VERSION]-bin From the log, we can see the message received by the consumer. ![Demo 2](img/tubemq-consume-message.png) -## 3 Deploy Manager +## Deploy Manager You can refer to [InLong TubeMQ Manager](modules/tubemq/tubemq-manager/quick_start.md) -## 4 The End +## The End Here, the compilation, deployment, system configuration, startup, production and consumption of TubeMQ have been completed. If you need to understand more in-depth content, please check the relevant content in "TubeMQ HTTP API" and make the corresponding configuration settings. --- diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/configure_introduction.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/configure_introduction.md index 9639f5305a0..06c605baae9 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/configure_introduction.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/configure_introduction.md @@ -2,7 +2,7 @@ title: 配置参数 --- -## 1 TubeMQ 服务端配置文件说明: +## TubeMQ 服务端配置文件说明: TubeMQ 服务端包括 Master 和 Broker 共 2 个模块,Master 又包含供外部页面访问的 Web 前端模块(该部分存放在 resources 中),考虑到实际部署时 2 个模块常常部署在同 1 台机器中,TubeMQ 将 2 个模块 3 个部分的内容打包在一起交付给运维使用;客户端则不包含服务端部分的 lib 包单独交付给业务使用。 @@ -22,9 +22,9 @@ Master 除了后端系统配置文件外,还在 resources 里存放了 Web 前 ![](img/configure/conf_velocity_pos.png) -## 2 配置项详情: +## 配置项详情: -### 2.1 master.ini 文件中关键配置内容说明: +### master.ini 文件中关键配置内容说明: [master] > master 系统运行主要配置单元,必填单元,值固定为 "[master]" @@ -111,14 +111,14 @@ Master 除了后端系统配置文件外,还在 resources 里存放了 Web 前 - 需保证 Master 所有节点之间的时钟同步 -### 2.2 Master 的前台配置文件 velocity.properties 中关键配置内容说明: +### Master 的前台配置文件 velocity.properties 中关键配置内容说明: | 配置项 | 是否必选 | 值类型 | 配置说明 | | --- | --- | --- |------------------------------------------------------------------------------------------------------------| | file.resource.loader.path | 是 | String | Master 的 Web 的模板绝对路径,该部分为实际部署 Master 时的工程绝对路径 + /resources/templates,该配置要与实际部署相吻合,配置失败会导致 Master 前端页面访问失败。 | -### 2.3 broker.ini 文件中关键配置内容说明: +### broker.ini 文件中关键配置内容说明: [broker] > Broker 系统运行主配置单元,必填单元,值固定为 "[broker]" diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/overview.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/overview.md index 3c169c1ef69..dc8eb851ef9 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/overview.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/overview.md @@ -3,7 +3,7 @@ title: 总览 sidebar_position: 1 --- -## 1 Apache InLong TubeMQ 模块的架构 +## TubeMQ 模块的架构 经过多年演变,TubeMQ 集群分为如下 4 个部分: ![](img/sys_structure.png) @@ -16,7 +16,7 @@ sidebar_position: 1 - **Client**: 负责数据生产和消费的 Client 部分,该部分我们以 Lib 形式对外提供,大家用得最多的是消费端,相比之前,消费端现支持 Push、Pull 两种数据拉取模式,数据消费行为支持顺序和过滤消费两种。对于 Pull 消费模式,支持业务通过客户端重置精确 offset 以支持业务 exactly-once 消费,同时,消费端新推出跨集群切换免重启的 Consumer 客户端; -## 2 Apache InLong TubeMQ 模块的系统特点 +## TubeMQ 模块的系统特点 - **纯 Java 实现语言**: TubeMQ 采用纯 Java 语言开发,便于开发人员快速熟悉项目及问题处理; @@ -51,19 +51,19 @@ TubeMQ 采用连接复用模式,减少连接资源消耗;通过逻辑分区 基于业务使用上的便利性以,我们简化了客户端逻辑,使其做到最小的功能集合,我们采用基于响应消息的接收质量统计算法来自动剔出坏的 Broker 节点,基于首次使用时作连接尝试来避免大数据量发送时发送受阻(具体内容见后面章节介绍)。 -## 3 Broker 文件存储方案改进 +## Broker 文件存储方案改进 以磁盘为数据持久化媒介的系统都面临各种因磁盘问题导致的系统性能问题,TubeMQ 系统也不例外,性能提升很大程度上是在解决消息数据如何读写及存储的问题。在这个方面 TubeMQ 进行了比较多的改进,我们采用存储实例来作为最小的 Topic 数据管理单元,每个存储实例包括一个文件存储块和一个内存缓存块,每个 Topic 可以分配多个存储实例: -### 3.1 文件存储块 +### 文件存储块 TubeMQ 的磁盘存储方案类似 Kafka,但又不尽相同,如下图示,每个文件存储块由一个索引文件和一个数据文件组成,partiton 为数据文件里的逻辑分区,每个 Topic 单独维护管理文件存储块的相关机制,包括老化周期,partition 个数,是否可读可写等。 ![](img/store_file.png) -### 3.2 内存缓存块 +### 内存缓存块 在文件存储块基础上,我们额外增加了一个单独的内存缓存块,即在原有写磁盘基础上增加一块内存,隔离硬盘的慢速影响,数据先刷到内存缓存块,然后由内存缓存块批量地将数据刷到磁盘文件。 ![](img/store_mem.png) -## 4 Apache InLong TubeMQ 模块的客户端演进: +## TubeMQ 模块的客户端演进: 业务与 TubeMQ 接触得最多的是消费侧,怎样更适应业务特点、更方便业务使用我们在这块做了比较多的改进: - **数据拉取模式支持 Push、Pull:** diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/quick_start.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/quick_start.md index c50dcc328d4..0be876e3551 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/quick_start.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/quick_start.md @@ -2,9 +2,9 @@ title: 快速开始 sidebar_position: 1 --- -## 1 部署运行 +## 部署运行 -### 1.1 配置示例 +### 配置示例 TubeMQ 集群包含有两个组件: **Master** 和 **Broker**. Master 和 Broker 可以部署在相同或者不同的节点上,依照业务对机器的规划进行处理。我们通过如下 3 台机器搭建有 2 台 Master 的生产、消费的集群进行配置示例: | 所属角色 | TCP 端口 | TLS 端口 | WEB 端口 | 备注 | @@ -13,7 +13,7 @@ TubeMQ 集群包含有两个组件: **Master** 和 **Broker**. Master 和 Broker | Broker | 8123 | 8124 | 8081 | 消息储存在 `/stage/msg_data` | | ZooKeeper | 2181 | | | 存储 Master 元数据,如果配置 meta_bdb 则该组件不需要,根目录 `/tubemq` | -### 1.2 准备工作 +### 准备工作 - ZooKeeper集群 ZooKeeper 在 TubeMQ 环境里不是必选,如果 Master 元数据采用 BDB 存储,则该部分资源可以省略 @@ -30,7 +30,7 @@ ZooKeeper 在 TubeMQ 环境里不是必选,如果 Master 元数据采用 BDB └── resources ``` -### 1.3 配置 Master +### 配置 Master 编辑 `conf/master.ini`,根据集群信息变更以下配置项 - Master IP 和端口 @@ -77,7 +77,7 @@ repHelperHost=FIRST_MASTER_NODE_IP:9001 // helperHost 用于创建 master 集 - 需保证 Master 所有节点之间的时钟同步 -### 1.4 配置Broker +### 配置Broker 编辑 `conf/broker.ini`,根据集群信息变更以下配置项 - Broker IP 和端口 ```ini @@ -99,7 +99,7 @@ masterAddressList=YOUR_MASTER_IP1:8099,YOUR_MASTER_IP2:8099 //多个 master primaryPath=/stage/msg_data ``` -### 1.5 启动 Master +### 启动 Master 进入 Master 节点的 `bin` 目录下,启动服务: ```bash ./tubemq.sh master start @@ -108,7 +108,7 @@ primaryPath=/stage/msg_data ![TubeMQ Console GUI](img/tubemq-console-gui.png) -#### 1.5.1 配置 Broker 元数据 +#### 配置 Broker 元数据 Broker 启动前,首先要在 Master 上配置 Broker 元数据,增加 Broker 相关的管理信息。在 `Broker List` 页面, `Add Single Broker`,然后填写相关信息: ![Add Broker 1](img/tubemq-add-broker-1.png) @@ -120,7 +120,7 @@ Broker 启动前,首先要在 Master 上配置 Broker 元数据,增加 Broke 然后上线Broker: ![Add Broker 2](img/tubemq-add-broker-2.png) -### 1.6 启动 Broker +### 启动 Broker 进入 broker 节点的 `bin` 目录下,执行以下命令启动 Broker 服务: ```bash @@ -130,8 +130,8 @@ Broker 启动前,首先要在 Master 上配置 Broker 元数据,增加 Broke 刷新页面可以看到 Broker 已经注册,当 `当前运行子状态` 为 `idle` 时, 可以增加 topic: ![Add Broker 3](img/tubemq-add-broker-3.png) -## 2 快速使用 -### 2.1 新增 Topic +## 快速使用 +### 新增 Topic 可以通过 web GUI 添加 Topic, 在 `Topic列表` 页面添加,需要填写相关信息,比如增加 `demo` topic: ![Add Topic 1](img/tubemq-add-topic-1.png) @@ -152,10 +152,10 @@ Broker 启动前,首先要在 Master 上配置 Broker 元数据,增加 Broke ![Add Topic 4](img/tubemq-add-topic-4.png) -### 2.2 运行 Example +### 运行 Example 可以通过上面创建的 `demo` topic 来测试集群。 -#### 2.2.1 生产消息 +#### 生产消息 将 `YOUR_MASTER_IP:port` 替换为实际的 IP 和端口,然后运行 producer: ```bash cd /INSTALL_PATH/apache-inlong-tubemq-server-[TUBEMQ-VERSION]-bin @@ -165,7 +165,7 @@ cd /INSTALL_PATH/apache-inlong-tubemq-server-[TUBEMQ-VERSION]-bin 如果能观察下如下日志,则表示数据发送成功: ![Demo 1](img/tubemq-send-message.png) -#### 2.2.2 消费消息 +#### 消费消息 将 `YOUR_MASTER_IP:port` 替换为实际的 IP 和端口,然后运行 Consumer: ```bash cd /INSTALL_PATH/apache-inlong-tubemq-server-[TUBEMQ-VERSION]-bin @@ -176,10 +176,10 @@ cd /INSTALL_PATH/apache-inlong-tubemq-server-[TUBEMQ-VERSION]-bin ![Demo 2](img/tubemq-consume-message.png) -## 3 部署 Manager +## 部署 Manager 参考 [InLong TubeMQ Manager](modules/tubemq/tubemq-manager/quick_start.md) -## 4 结束 +## 结束 在这里,已经完成了 TubeMQ 的编译,部署,系统配置,启动,生产和消费。如果需要了解更深入的内容,请查看《TubeMQ HTTP API》里的相关内容,进行相应的配置设置。 --- From d044ac049de4818b6b63b2024d7fbc5bf947a6c3 Mon Sep 17 00:00:00 2001 From: gosonzhang Date: Thu, 24 Oct 2024 08:35:23 +0800 Subject: [PATCH 4/4] [INLONG-11386][TubeMQ] Use local files to save consumer group offset information (#11395) --- .../current/modules/tubemq/quick_start.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/quick_start.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/quick_start.md index 0be876e3551..82c684a3555 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/quick_start.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/quick_start.md @@ -179,9 +179,6 @@ cd /INSTALL_PATH/apache-inlong-tubemq-server-[TUBEMQ-VERSION]-bin ## 部署 Manager 参考 [InLong TubeMQ Manager](modules/tubemq/tubemq-manager/quick_start.md) -## 结束 -在这里,已经完成了 TubeMQ 的编译,部署,系统配置,启动,生产和消费。如果需要了解更深入的内容,请查看《TubeMQ HTTP API》里的相关内容,进行相应的配置设置。 - --- Back to top