`
ghost_face
  • 浏览: 54302 次
社区版块
存档分类
最新评论

Metaq服务器端的配置说明server.ini

阅读更多

注:从metaq官网copy下来,便于查看;

地址:https://github.com/killme2008/Metamorphosis/wiki/%E9%85%8D%E7%BD%AE%E7%AE%A1%E7%90%86

配置管理

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
分享到:
评论

相关推荐

    metaq-server-1.4.6.2.tar.gz

    《MetaQ服务器1.4.6.2版的深度解析》 MetaQ是阿里巴巴开源的一款分布式消息中间件,主要用于提供高可靠、高可用的消息传输服务。在本文中,我们将深入探讨MetaQ Server 1.4.6.2版本的核心特性、架构设计以及使用...

    metaq-server-1.4.6.2.zip 和原版一样就是换了个名字

    《MetaQ服务器1.4.6.2版本详解》 MetaQ是阿里巴巴开源的一款分布式消息中间件,主要用于解决大规模分布式系统中的消息传递问题。在1.4.6.2这个版本中,它继续保持着与原版一致的核心特性,提供高效、稳定、可扩展的...

    metaq-server-1.4.6.2客户端+服务端

    MetaQ Server 1.4.6.2版本是这个中间件的一个特定发行版,包含了服务端和客户端的组件,以及相关的Javadoc文档。下面我们将详细探讨MetaQ的核心特性、工作原理、客户端和服务端的使用,以及Javadoc文档的重要性。 *...

    MetaQ 分布式消息服务中间件.pdf

    MetaQ支持的消息过滤方式有两种:服务器端过滤和客户端过滤。服务器端过滤可以在消息到达消费者之前进行过滤,减少无用数据在网路上传输,但会增加服务器端的负担。客户端过滤则是将无用数据传输到客户端,增加了...

    metamorphosis(metaq)

    5. 调度与重试:如果消息未能成功送达消费者,MetaQ会根据配置进行重试,直至消息被正确消费或达到最大重试次数。 五、总结 MetaQ 1.4.3版本作为一款成熟的消息队列系统,以其高性能、高可用性和丰富的功能,为...

    Metaq详细手册.docx

    生产者创建并发送消息至Metaq服务器,服务器负责消息的持久化,消费者则从服务器拉取消息进行消费。 7. **消息会话工厂**: - **MessageSessionFactory**:这是创建消息生产者和消费者的关键。它负责服务发现...

    Metaq原理与应用

    - **Broker**:消息中转服务器,存储和转发消息,也被称为 Server。在 JMS 规范中对应于 Provider。 2. **消息消费模式**: - **广播消费**:一条消息会被同一 Consumer Group 中的所有消费者各消费一次,符合 ...

    metaQ向spark传数据

    总结来说,将MetaQ中的数据传递到Spark涉及的主要步骤包括:配置MetaQ与Kafka的连接,使用Spark Streaming从Kafka消费数据,使用Spark的DataFrame/Dataset API进行数据处理,以及选择合适的方式输出处理结果。...

    Metaq在JDk 7下的异常及解决方案

    《Metaq在JDK 7下的异常及其解决策略》 Metaq是一款高性能的消息中间件,广泛应用于分布式系统中,提供高效、稳定的消息传递服务。然而,在JDK 7环境下,Metaq可能会遇到一些运行异常,其中最常见的就是与物理文件...

    metaQ的安装包

    此外,由于 MetaQ 使用 ZooKeeper,所以也需要安装并配置好 ZooKeeper 服务。 4. **安装步骤**: - 下载 MetaQ 安装包,该压缩包可能包含启动脚本、配置文件、依赖库等。 - 解压文件到指定目录,例如 `/usr/local...

    metaq消息中间件服务端、客户端资源汇集

    Metamorphosis是淘宝开源的一个Java消息中间件,他类似apache-kafka,但不是一个简单的山寨拷贝,而是做了很多改进和优化,项目的主页在淘蝌蚪上。服务端、客户端、javadoc都包含在内。

    zookeeper安装教程

    - **MetaQ** (分布式消息中间件) #### 五、Zookeeper 集群安装部署 Zookeeper 支持三种部署模式:单机模式、伪分布式模式和分布式模式。单机模式和伪分布式模式主要用于本地测试调试。下面详细介绍分布式模式的...

    基于OpenConfiguration规范的最佳实践.pdf

    配置中心的物理架构通常包含地址服务器组件、服务核心组件(如ACM/diamond-server)和MySQL存储。地址服务器负责服务发现,ACM/diamond-server通过Http协议提供配置管理和推送服务,而MySQL用于持久化配置数据。为了...

    【系统架构】最全最强解析:支付宝钱包系统架构内部剖析(架构图).docx

    2. 纯Java实现,从通讯到存储,从client到server都是重新实现 3. 提供事务支持,包括本地事务和XA分布式事务 4. 支持HA复制,包括异步复制和同步复制,保证消息的可靠性 5. 支持异步发送消息 6. 消费消息失败,支持...

    RocketMQ群问题整理

    15. **Web服务器与Nameserver**:在 Web 服务器上部署 Nameserver 地址文件便于热升级,并简化配置。 16. **msgId重复**:RocketMQ 的 msgId 不会重复,除非数据被清除并重启,msgId 由服务器 IP 端口号和 ...

    Metamorphosis, 一种高可用高性能的分布式.zip

    Metamorphosis, 一种高可用高性能的分布式 #新闻MetaQ 1.4.6.2 发布。更新日志MetaQ 1.4.6.1 发布。更新日志MetaQ 1.4.5.1 发布。更新日志MetaQ 1.4.5发布。更新日志meta: 一个用于的ruby 客户端。 源代码

    storm项目-流数据监控系列5《zookeeper统一配置》

    3、storm项目-流数据监控系列3《实例运行》4、storm项目-流数据监控系列4《MetaQ接口》5、storm项目-流数据监控系列5《zookeeper统一配置》 6、storm项目-流数据监控系列6《最新代码树及详解》。希望能对大家有所...

    RocketMQ相关资料(含rocketmq3.4.2用户指南)

    Metaq在JDk 7下的异常及解决方案.docx mqvsmq.pdf RocketMQ_原理简介.pdf RocketMQ_admin.pdf RocketMQ_benchmark.pdf RocketMQ_calvinzhan - 类图.pdf RocketMQ_calvinzhan.pdf RocketMQ_design-整体设计文档.pdf ...

    kafka学习文档

    迓有些零碎的,关亍通信段的源码览读:《net 包源码览读》、《broker 配置》 扩展的阅读迓有下面返些: 关亍 kafka 和 jafka 的相关博客,特删好,有徆多问题也都找他览决的,大神一般的存在: ...

Global site tag (gtag.js) - Google Analytics