一、nameserver
1、配置
mqnamesrv -h
usage: mqnamesrv [-c <arg>] [-h] [-n <arg>] [-p]
-c,--configFile <arg> Name server config properties file
-h,--help Print help
-n,--namesrvAddr <arg> Name server address list, eg: '192.168.0.1:9876;192.168.0.2:9876'
-p,--printConfigItem Print all config items
"Namesrv starts OK"
可以通过 -c 选项指定配置文件,配置文件中支持的选项可以通过 mqnamesrv -p 获取,常见的参数如下:
选项 | 默认值 | 描述 |
---|---|---|
bindAddress | 0.0.0.0 | 服务绑定的ip地址 |
listenPort | 9876 | 默认的监听端口 |
serverWorkerThreads | 8 | 服务端工作线程数 |
serverSocketBacklog | 1024 | TCP连接队列设置的大小 |
配置文件样例namesrv.conf
bindAddress=0.0.0.0
listenPort=9876
serverWorkerThreads=8
serverSocketBacklog=1024
2、启动服务
### start namesrv
$ nohup sh bin/mqnamesrv &
### verify namesrv
$ tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...
The Name Server boot success 表明该服务启动成功
二、broker
usage: mqbroker [-c <arg>] [-h] [-m] [-n <arg>] [-p]
-c,--configFile <arg> Broker config properties file
-h,--help Print help
-m,--printImportantConfig Print important config item
-n,--namesrvAddr <arg> Name server address list, eg: '192.168.0.1:9876;192.168.0.2:9876'
-p,--printConfigItem Print all config item
1、配置文件broker.properties
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
选项 | 默认值 | 描述 |
---|---|---|
brokerClusterName | broker集群名 | |
brokerName | 该broker名 | |
brokerId | brokerid | |
fileReservedTime | 文件保留时长 | |
brokerRole | broker角色 |
主—从模式
- 1、在主—从模式中,主节点和从节点需要指定相同的brokerName和brokerClusterName,并且主节点的brokerId必须设置为0,从节点的brokerId必须大于0,可以支持多个从节点;
- 2、brokerRole 有三种 ASYNC_MASTER、SYNC_MASTER、SLAVE,代表异步复制主节点、同步复制主节点、从节点;如果对数据稳定性有要求,就使用 SYNC_MASTER + SLAVE 主从模式,如果并无要求 就使用 ASYNC_MASTER + SLAVE,平常测试就使用ASYNC_MASTER或者SYNC_MASTER。
Asynchronous Replication
HA (高可用集群(High Availability Cluster,简称HA Cluster))采用Asynchronous Replication(异步复制)策略,在 主节点(primary) 和从节点( secondary)间会存在消息延迟,
- 优点:即使主节点磁盘损坏,丢失的消息也会很少,消息时效性(timeliness )不受影响。同时,Master 宕机后,消费者仍然可以从 Slave 消费,这个过程对应用是透明的,不需要人工干预,性能几乎与多 Master 节点相同;
- 缺点:如果发生主服务器中断或磁盘损坏,少量消息将丢失;
Synchronous Dual Write 同步写
HA (高可用集群(High Availability Cluster,简称HA Cluster))采用Synchronous Dual Write(同步写)策略,只有当主节点和从节点都写入成功,才会向客户端返回成功;
- 优点:数据和服务都没有单点故障,主节点中断时消息没有延迟,业务可用性和数据可用性都非常高;
- 缺点: 性能较Asynchronous Replication降低10%左右;
2、启动broker和proxy
### start broker
$ nohup sh bin/mqbroker -n localhost:9876 --enable-proxy &
### verify broker
$ tail -f ~/logs/rocketmqlogs/proxy.log
The broker[broker-a,192.169.1.2:10911] boot success...
“The broker[brokerName,ip:port] boot success…” 代表服务启动成功
usage: mqbroker [-c <arg>] [-h] [-m] [-n <arg>] [-p]
-c,--configFile <arg> Broker config properties file
-h,--help Print help
-m,--printImportantConfig Print important config item
-n,--namesrvAddr <arg> Name server address list, eg:
-p,--printConfigItem Print all config item
nohup sh mqbroker -c ../conf/broker.conf -n '10.240.184.81:9876;10.240.184.84:9876' --enable-proxy &
3、broker 配置文件详解
Parameter | Default | Description |
---|---|---|
listenPort | 10911 | 监听端口,接收客户端连接 |
namesrvAddr | null | nameServer address |
brokerIP1 | 绑定的ip地址 | |
brokerIP2 | 与brokerIP1相似 | When a master/slave broker exists, if the brokerIP2 property is configured on the broker master node, the broker slave node will connect to the brokerIP2 configured on the master node for synchronization |
brokerName | null | broker name |
brokerClusterName | DefaultCluster | broker所属集群 |
brokerId | 0 | 0代表主节点, 其他大于0的值代表从节点 |
storePathCommitLog | $HOME/store/commitlog/ | Path to store the commit log |
storePathConsumerQueue | $HOME/store/consumequeue/ | A path that consumes queue is stored |
mapedFileSizeCommitLog | 1024 * 1024 * 1024(1G) | commit log mapping file size |
deleteWhen | 04 | 应该在一天中的什么时间删除已经超过保留时长的提交日志 |
fileReservedTime | 72 | 文件(提交日志)保留时长 (retention),单位小时 |
brokerRole | ASYNC_MASTER | SYNC_MASTER / ASYNC_MASTER / SLAVE |
flushDiskType | ASYNC_FLUSH | SYNC_FLUSH / ASYNC_FLUSH 刷盘机制待后续详解 |
三、发送、接收消息
$ export NAMESRV_ADDR=localhost:9876
$ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
SendResult [sendStatus=SEND_OK, msgId= ...
$ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
ConsumeMessageThread_%d Receive New Messages: [MessageExt...
四、关闭相关服务
关闭服务的时候需要指定组件名,比如broker、namesrv、controller
$ sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK
$ sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK