Web管理平台
从1.4.5开始,MetaQ提供了一个Web管理平台,默认运行在8120端口,你可以通过浏览器访问http://localhost:8120
来访问web管理平台,localhost
为本机IP,可替换为broker运行机器所在ip或者hostname。
1.4.6版本开始,Web管理平台提供RESTFul API,具体见Dashboard API
脚本配置
MetaQ主要通过bin/env.sh
或者bin/env.bat
脚本来配置一些环境变量,如JVM启动参数等,详述如下。
JMX端口
首先,MetaQ服务端默认会暴露一个JMX端口,你可以通过API或者jconsole这样的工具链接上这个端口查看信息或者修改参数等,默认端口是export JMX_PORT=9123
。如果你在同一台机器部署多个Broker,需要修改此参数,防止冲突。
设置JVM参数
首先是可配置JAVA_HOME:
#Config your java home
#JAVA_HOME=/opt/jdk/
默认我们通过which java
获取java命令所在路径,但是如果你取消注释,配置了JAVA_HOME
(或者你的环境变量设置了JAVA_HOME),我们都将优先使用$JAVA_HOME/bin/java
命令。
服务器的默认JVM启动参数是:
BROKER_JVM_ARGS="-Xmx512m -Xms512m -server -Dmeta.home=$meta_home -cp $CLASSPATH "
你可以修改这个参数,比如增大Xmx
堆空间,增加GC参数,一个示范性的配置:
BROKER_JVM_ARGS="-Xms4096m -Xmx4096m -Xmn512m -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:+CMSClassUnloadingEnabled -XX:CMSInitiatingOccupancyFraction=50 -XX:+CMSParallelRemarkEnabled -server -Dmeta.home=$meta_home -cp $CLASSPATH "
启用HTTP接口
MetaQ提供了一套HTTP接口,可以让客户端直接通过HTTP接口来发送或者消费消息,默认不启用。
启用HTTP接口,修改env.sh
里的export enableHttp=true
即可。
默认HTTP接口的端口是通过conf/jettyBroker.properties
配置的:
serverPort=8080
你可以修改这个端口。
通过HTTP接口发送和消费消息,请看metamorphosis-http-client中的例子。
Broker参数配置
示例配置
完整的参数配置示例:
服务端配置
Meta服务端配置主要在服务器conf目录下的server.ini文件,整体配置分为三部分:系统参数、zookeeper参数以及topic配置。系统参数在system section,zookeeper参数配置在zookeeper section,而topic的配置是在topic=xxxx section。具体说明如下:
一份默认提供的参数配置在这里。
系统参数部分
系统参数配置都放在[system]
下面:
- brokerId: 服务器集群中唯一的id,必须为整型0-1024之间。对服务器集群的定义是使用同一个zookeeper并且在zookeeper上的root path相同,具体参见zookeeper配置。
-
hostName: 服务器hostname,默认取本机IP地址,如果你是多网卡机器,可能需要明确指定。服务器会将此hostname加上端口写入到zookeeper提供给客户端发现。
-
serverPort:服务器端口,默认8123。PS. 选择8123是因为这蕴含着我儿子的生日 :D。
-
numPartitions:系统默认情况下每个topic的分区数目,默认为1,可被topic配置覆盖。单个服务器的总分区数目不建议超过1000,太多将导致频繁的磁盘寻道严重影响IO性能。
-
dataPath: 服务器数据文件路径,默认在~home/meta下,每个topic可以覆盖此配置,对于多块磁盘的机器,可设置不同topic到不同磁盘来提升IO效率。
-
dataLogPath:数据日志文件路径,主要存放事务日志,默认跟dataPath一致,最好单独设置到不同的磁盘或者目录上。如果为空,使用指定的dataPath
-
getProcessThreadCount: 处理get请求的并发线程数,默认为CPUS*10。
-
putProcessThreadCount: 处理put请求的并发线程数,默认为CPUS*10。
-
maxSegmentSize: 单个数据文件的大小,默认为1G。默认无需修改此选项。
-
maxTransferSize: 传输给消费者的最大数据大小,默认为1M,请根据你的最大消息大小酌情设置,如果太小,每次无法传输一个完整的消息给消费者,导致消费者消费停滞。可设置成一个大数来取消限制。
1.4.3版本引入的参数:
-
acceptPublish: 是否接收消息,默认为true;如果为false,则不会注册发送信息到zookeeper上,客户端当然无法发送消息到该broker。本参数可以被后续的topic配置覆盖。
-
acceptSubscribe: 与acceptPublish类似,默认也为true;如果为false,则不会注册消费信息到zookeeper上,消费者无法发现该broker,当然无法从该broker消费消息。本参数可以被后续的topic配置覆盖。
1.4.4版本新引入参数:
- stat:全局性地控制是否开启实时统计,可被topic配置覆盖,默认为false。
- loadMessageStoresInParallel: 是否启动时并行加载数据,开启可提升启动速度。默认不开启。开启后启动日志顺序可能紊乱。
- updateConsumerOffsets: 当消费者的offset不在Broker的数据范围内,是否强制更新消费者的offset为当前最大offset。默认为false。测试开发环境建议开启此选项,生产环境不建议。
数据可靠性参数
Meta保证消息可靠性是建立在磁盘可靠性的基础上,发送的每一条消息都保证是在“写入磁盘”的情况下才返回给客户端应答。这里有两个关键参数可以控制:
- unflushThreshold: 每隔多少条消息做一次磁盘sync,强制将更改的数据刷入磁盘。默认为1000。也就是说在掉电情况下,最多允许丢失1000条消息。可设置为0,强制每次写入都sync。在设置为0的情况下,服务器会自动启用group commit技术,将多个消息合并成一次sync来提升IO性能。经过测试,group commit情况下消息发送者的TPS没有受到太大影响,但是服务端的负载会上升很多。
- unflushInterval: 间隔多少毫秒定期做一次磁盘sync,默认是10秒。也就是说在服务器掉电情况下,最多丢失10秒内发送过来的消息。不可设置为小于或者等于0。
请注意,上述两个参数都可以被topic单独配置说覆盖,也就是说每个topic可以配置不同的数据可靠级别。
当某个topic开启group commit后,将为每个分区配置一个线程做聚集force,因此请控制启用group commit技术的topic数量,太多可能导致过多线程,反而效率下降。
数据删除策略配置
默认情况下,meta是会保存不断添加的消息,然后定期对“过期”的数据进行删除或者归档处理,这都是通过下列参数控制的:
- deleteWhen: 何时执行删除策略的cron表达式,默认是
0 0 6,18 * * ?
,也就是每天的早晚6点执行处理策略。 - deletePolicy: 数据删除策略,默认超过7天即删除,这里的168是小时,10s表示10秒,10m表示10分钟,10h表示10小时,不明确指定单位默认为小时。
delete
是指删除,超过指定时间的数据文件将被彻底从磁盘删除。也可以选择archive
策略,即不对过期的数据文件做删除而是归档,当使用archive策略的时候可以选择是否压缩数据文件,如167,archive,true
即选择将更改时间超过7天的数据文件归档并压缩为zip文件,如果不选择压缩,则重命名为扩展名为arc的文件。
上述两个参数都可以被topic单独配置所覆盖,也就是每个topic可以指定自己独特的删除策略。通常来说,对于不重要的topic可以将更早地将他们删除来节省磁盘空间。
事务相关配置
- maxCheckpoints: 最大保存事务checkpoint数目,默认为3,服务器在启动的时候会从最近一次checkpoint回访事务日志文件,恢复重启前的事务状态。不建议修改此参数。
- checkpointInterval:事务checkpoint时间间隔,单位毫秒,默认1小时。间隔时间太长,会导致启动的时候replay事务日志占用了太多时间,太短则可能影响到性能。
- maxTxTimeoutTimerCapacity:最大事务超时timer的数量。服务端会为每个事务启动一个定时器监控事务是否超时,定时器的数目上限通过本参数限制。限制了本参数,也变相地控制了最大可运行的事务数。默认为30000个。
- maxTxTimeoutInSeconds:最大事务超时时间,单位为秒,默认为60秒。客户端设置的事务超时时间不能超过此设定,超过将被强制限制为此设定。
- flushTxLogAtCommit:服务端对事务日志的sync策略,0表示让操作系统决定,1表示每次commit都刷盘,2表示每隔1秒刷盘一次。此参数严重影响事务性能,可根据你需要的性能和可靠性之间权衡做出一个合理的选择。通常建议设置为2,表示每隔1秒刷盘一次,也就是最多丢失一秒内的运行时事务。这样的可靠级别对大多数服务是足够的。最安全的当然是设置为1,但是将严重影响事务性能。而0的安全级别最低。安全级别上
1>=2>0
,而性能则是0 >= 2 > 1
。
zookeeper配置
meta服务端会将自身id,topic信息和socket地址发送到zookeeper上,让客户端可以发现并连接服务器。Zookeeper相关的配置放在[zookeeper]
模块下面:
- zk.zkEnable: 是否启用zookeeper,也就是是否将信息注册到zookeeper上。默认为true。对于同步复制的slave来说,本参数会被强制设置为false。
- zk.zkConnect: zookeeper服务器列表,例如
localhost:1281
这样的字符串。默认也是localhost:2181
。请设置你的zk集群地址列表。 - zk.zkSessionTimeoutMs: zookeeper的session timeout,默认为30秒。单位毫秒。
- zk.zkConnectionTimeoutMs: zookeeper的连接超时时间,默认同样为30秒,单位毫秒。
- zk.zkSyncTimeMs: 预期的zk集群间数据同步延迟,默认为5秒,这个参数对服务器无意义。
Topic配置
服务器将提供哪些topic服务都是通过topic配置来实现的,topic配置都是在[topic=xxx]
的模块下面,其中xxx
就是topic名称,一个示范配置如下:
[topic=boyan-test]
stat=true
numPartitions=1
这里配置了一个名为test
的topic,并针对该topic启用实时统计,并将topic的在本服务器的分区数目设置为1。可见,topic配置可覆盖服务器的部分配置,包括:
- stat:是否启用实时统计,启用则会在服务端对该topic的请求做实时统计,可以通过
stats topic-name
协议观察到该topic运行状况,可选。 - numPartitions: 该topic在本服务器的分区总数,覆盖系统配置,可选。
- unflushInterval:每隔多少条消息做一次磁盘sync,覆盖系统配置,可选。
- unflushThreshold:每隔多少秒做一次磁盘sync,覆盖系统配置,可选。
- deletePolicy:topic的删除策略,覆盖系统配置,可选。
- deleteWhen:删除策略的执行时间,覆盖系统配置,可选。
- dataPath:设置数据文件路径,覆盖系统配置,可选。
1.4.3新增参数:
- acceptPublish: 是否接收该topic的消息,覆盖系统配置,可选。
- acceptSubscribe: 是否接受消费者的订阅,覆盖系统配置,可选。
新增Topic热部署
在新增或者删除topic并保存server.ini之后,可以通过下列命令热加载新的配置文件并生效:
bin/metaServer.sh reload
来自淘宝
相关推荐
4. Controller:管理整个MetaQ集群,监控Broker的状态,处理心跳检测、负载均衡、主备切换等任务。 四、使用场景 1. 日志收集:MetaQ可用于收集分布在各服务器上的日志,统一管理和分析,提高运维效率。 2. 数据...
此外,由于 MetaQ 使用 ZooKeeper,所以也需要安装并配置好 ZooKeeper 服务。 4. **安装步骤**: - 下载 MetaQ 安装包,该压缩包可能包含启动脚本、配置文件、依赖库等。 - 解压文件到指定目录,例如 `/usr/local...
- **解决方案:** 采用特定的消息发送策略和消息队列管理方式,保证消息的顺序性。 **4. 扩展性** - **解决方案:** 通过水平扩展、分布式架构设计以及动态调整资源分配策略,实现系统的平滑扩展。 **5. 容错...
在现代应用架构中,配置管理面临着诸多挑战,尤其是在微服务和云时代。传统的配置管理方式已经无法满足实时性、安全性和规模性等需求。为了解决这些问题,出现了基于OpenConfiguration规范的最佳实践。Open...
RocketMQ物理部署结构是指分布式消息系统的硬件配置和网络架构。物理部署中可能包括消息服务器(Broker)、NameServer、生产者和消费者等。 3. RocketMQ逻辑部署结构 逻辑部署结构是指消息系统的软件架构和组件间...
- **全局配置管理**:将全局配置信息存储在Zookeeper中,应用程序启动时主动获取,并注册监听器以便实时更新配置。 - **分布式搜索服务**:索引元信息和服务器集群状态存储在Zookeeper指定节点上,供客户端订阅使用...
- 应用配置信息的集中管理和动态更新:应用启动时从ZK获取配置,并注册Watcher监听更新。 - 分布式搜索服务中,索引元数据和服务器状态存储在ZK节点,供客户端订阅。 - 日志收集系统:在ZK上创建应用名节点,注册...
2. **配置管理** - 分布式环境下,配置文件的管理和同步是一个常见问题。在一个集群中,所有节点的配置信息应保持一致。 - 修改配置文件后,希望这些更改能够迅速同步到各个节点上。 - 这一功能可以由 Zookeeper ...
在分布式系统中,往往需要对一些全局性的配置进行统一管理和动态更新,如服务地址列表、系统配置参数等。ZooKeeper提供的数据发布与订阅功能恰好满足了这一需求。 - **应用场景**: - **全局配置信息**:应用程序...
- **配置管理**:通过Zookeeper统一管理集群中的配置文件,实现动态更新和分发。 - **集群管理**:实时监控集群中各节点的状态,便于做出相应的管理决策。 - **分布式通知/协调**:实现服务间的状态同步,增强系统的...
RocketMQ提供了丰富的运维指令,方便管理员进行日常维护工作,包括但不限于主题(Topic)、集群(Cluster)、Broker等核心组件的信息管理和监控。 #### 登录控制台 要使用RocketMQ的运维指令,首先需要登录控制台...
- **改进的管理界面**:提供更加友好和直观的用户界面,简化管理操作。 - **优化的集群管理**:改进了集群的动态伸缩机制,支持更多的自定义选项。 综上所述,Apache RocketMQ不仅具备丰富的功能特性,还在不断迭代...
总结起来,ZooKeeper凭借其强大的一致性保证和丰富的API,已经成为许多分布式系统中不可或缺的工具,广泛应用于配置管理、负载均衡、服务发现、分布式协调等多个领域。开发者可以根据具体需求,创造性地利用...
3. 配置监控中心CMC(Configuration Monitoring Center): 负责对现网配置资源进行更新管理,保障了数据配置的及时性和准确性。配置监控中心的设置可以减少手动干预的需求,并且提升网络管理的自动化水平。 4. 统一...
ZooKeeper是一个专门为...总之,ZooKeeper以其强大的一致性保障和简洁的API接口,成为了分布式系统中不可或缺的工具,广泛应用于各种分布式问题的解决,尤其是在配置管理、服务发现、负载均衡等领域发挥了重要作用。
7. **MetaQ与RocketMQ关系**:MetaQ 在 3.0 版本之后更名为 RocketMQ。 8. **JMS支持**:RocketMQ 支持 JMS 客户端 API,用户可以通过官方提供的 rocketmq-jmsclient 进行开发。 9. **启动异常**:如果启动 Broker...
- **可管理性**:提供监控、管理和配置的功能,便于运维团队操作。 #### 六、未来发展趋势 随着云计算、大数据和物联网技术的发展,消息中间件也在不断地演进。未来的趋势包括但不限于: - **云原生**:支持容器...
配置中,用户管理和虚拟主机(Virtual Hosts)设置是关键部分,它们允许精细控制权限和隔离不同应用的队列。 **2.2. 用户角色** RabbitMQ中的用户有不同的角色,如管理员、监控者和普通用户,每个角色有不同的权限...