一、简介
METAQ(全称Metamorphosis)是一款完全的队列模型消息中间件,服务器使用Jave语言编写,可在多种软硬件平台上部署;客户端支持Java、C++编程语言;单台服务器可支持1万以上个消息队列,通过扩容服务器,队列数几乎可以任意横向扩展;每个队列都是持久化、长度无限(取决于磁盘空间大小)、并可从队列任意位置开始消费;
MetaQ是一款分布式、队列模型的消息中间件,MetaQ具有消息存储顺序写、吞吐量大和支持本地和XA事务等特性,适用于大吞吐量、顺序消息、广播和日志数据传输等场景。基于发布订阅模式,有Push和Pull两种消费方式,支持严格的消息顺序,亿级别的堆积能力,支持消息回溯和多个维度的消息查询
相关名称解释:
1、Topic---消息的主题:由用户定义并在服务端配置;producer发送消息到某个topic下,consumer从某个topic下消费信息;
2、Offset---消息在broker上的每个分区都是组织成一个文件列表,消费者拉取数据需要知道数据在文件中偏移量(offset),Offset是绝对偏移量,服务器会将offset转化为具体文件的相对偏移量;
3、Broker---就是meta的服务端或服务器,在消息中间件也通称为broker;
4、分区(partition)---同一个topic下面分为多个分区;
配置文件相关参数:
zk.zkEnable=true ---是否注册到zk,默认true
zk.zkConnect=localhost:2180 ---zk的服务器列表
zk.zkSessionTimeoutMs=30000 ---zk心跳超时,单位毫秒,默认30秒
zk.zkConnectionTimeoutMs=30000 ---zk连接超时时间,单位毫秒,默认30秒
brokerId ---服务器ID,必须是集群内唯一,必须为整数0-1024之间
serverPort ---服务器端口
hostName ---默认将取本机IP,多机网卡需要指明
dataLogPath ----日志数据文件路径,默认跟dataPath一样
dataPath ---于指定默认的数据存储路径
deletePolicy=delete,168 ---数据删除策略,默认超过7天删除,默认单位小时
deleteWhen: ---何时执行删除策略的cron表达式,默认0 0 6,18 * *?
flushTxLogAtCommit=1 ---事务日志的同步设置
unflushThreshold ---每个多少条消息做一次磁盘sync,强制将更改的数据刷入磁盘;
unflushInterval ---间隔多少毫秒定期做一次磁盘sync,默认10秒
二、搭建过程
系统环境:CentOS Linux release 7.6.1810 (Core)
1、jdk环境
2、搭建zookeeper(伪集群)
1)解压
tar -zxvf zookeeper-3.4.14.tar.gz -C /usr/local/
2)创建三个节点,复制文件(文件夹)
# mkdir -p zk1 zk2 zk3
cp -r zookeeper-3.4.14 zk1/
3)配置文件(其他两个节点类似)
cd zk1/zookeeper-3.4.14/
# mkdir dataDir dataLogDir
#创建标识(三个节点分别1,2,3)
# cd dataDir
vim myid
1
##修改配置文件
# mv conf/zoo_sample.cfg conf/zoo.cfg
# vim conf/zoo.cfg
其他两个节点拷贝过去即可(注意修改标识)##修改相关配置文件
# cp -rf zk1/zookeeper-3.4.14 zk2/
# cp -rf zk1/zookeeper-3.4.14 zk3/
4)启动服务
# zk1/zookeeper-3.4.14/bin/zkServer.sh start
# zk2/zookeeper-3.4.14/bin/zkServer.sh start
# zk3/zookeeper-3.4.14/bin/zkServer.sh start
# netstat -tnlp | grep -E '2181|2182|2183'
测试连接登录即可:
# zk1/zookeeper-3.4.14/bin/zkCli.sh -server 127.0.0.1:2181
3、搭建metaq环境
1)解压文件
# tar -zxvf metaq-server-1.4.6.2.tar.gz -C /usr/local/
2)配置文件
# cd /usr/local/taobao/metamorphosis-server-wrapper/
# vim conf/server.ini
3)启动服务
./bin/metaServer.sh start &
##停止命令
./bin/metaServer.sh stop
##重启命令
./bin/metaServer.sh restart &
##重新加载topic配置
./bin/metaServer.sh reload &
##查看server状态
./bin/metaServer.sh stats
4、检查部分
1)查看metaq注册到zookper上
# zk1/zookeeper-3.4.14/bin/zkCli.sh -server 127.0.0.1:2181
###已注册,查看meatq的队列