docker-compose 安装RocketMq
单Master模式:这种方式风险较大,一旦Broker重启或者宕机时,会导致整个服务不可用。不建议线上环境使用,可以用于本地测试。
single-master.yaml
version: "3.8"
networks:
default:
external:
name: docker_net
services:
rmqnamesrv:
image: rocketmqinc/rocketmq
container_name: mqnamesrv
volumes:
- /home/rocketmq/nameserver/single-master/store:/root/store/
- /home/rocketmq/nameserver/single-master/logs:/root/logs/
ports:
- "9876:9876"
command: sh mqnamesrv
rmqbroker:
image: rocketmqinc/rocketmq
container_name: mqbroker
depends_on:
- rmqnamesrv
environment:
- NAMESRV_ADDR=rmqnamesrv:9876
volumes:
- /home/rocketmq/broker/single-master/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf
- /home/rocketmq/broker/single-master/store:/root/store/
- /home/rocketmq/broker/single-master/logs:/root/logs/
ports:
- 10909:10909
- 10911:10911
command : sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
rmqconsole:
image: styletang/rocketmq-console-ng
container_name: mqconsole
depends_on:
- rmqnamesrv
environment:
- JAVA_OPTS=-Dsever.port=8080 -Drocketmq.namesrv.addr=rmqnamesrv:9876
ports:
- 8080:8080
多Master模式:一个集群无Slave,全是Master,例如2个Master或者3个Master
优点:配置简单,单个Master宕机或重启维护对应用无影响,在磁盘配置为RAID10时,即使机器宕机不可恢复情况下,由于RAID10磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步刷盘一条不丢),性能最高;
缺点:单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订阅,消息实时性会受到影响。(这种模式试着部署了一下,用程序连上去老是报错,后面有时间成功之后再更新,免得误导别人)