今天分享下qmq高可用的特性
高可用说明
qmq高可用主要从两个角度提供:
- 分片:qmq不是基于partition,可以很容易通过添加更多的记起提高一个subject的可用性,消息按照一定的负载均衡策略分布在不同的机器上,某台机器离线后producer将不再将消息发送给该Server
- 复制:QMQ通过主从复制来提高单机可用性。QMQ将服务端集群划分为多个group,每个group包含一个master和一个slave。消息的发送和消费全部指向master,slave只为保证可用性
主从切换
- 不支持自动主从切换,需要人工介入;
- 切换步骤:
- 将某组设置为readonly,设置readonly之后,该组将不再接受新的消息;
- 等待主从完全同步,可以通过观察master的slaveMessageLogLag监控了解;
- 停止slave, 停止master;
- 执行ReplaceBroker命令切换角色(该步骤一定要在停止应用之后执行);
- 启动slave, 启动master;
部署方案实例
- metaserver:部署两台应用,然后配置nginx作为负载均衡,确保mysql可用;
- broker:部署两组,每组为一主一从两台,则至少部署4台;
- delay server:同broker部署方式(如没有延时消息可以不部署);
- watchdog:建议部署两台,但某个时刻只有一台工作,当一台故障会自动切换(如无事务或持久化消息可以不部署);