一、RocketMQ介绍
(最开始RocketMQ是阿里研究出来的,在2016-11-28捐赠给了开源软件基金会Apache。)
1.1. 简介
RocketMQ 是一款分布式、队列模型的消息中间件,具有以下特点:
能够保证严格的消息顺序 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅机制 亿级消息堆积能力
选用理由:
强调集群无单点,可扩展,任意一点高可用,水平可扩展。
海量消息堆积能力,消息堆积后,写入低延迟。
支持上万个队列
消息失败重试机制
消息可查询
开源社区活跃
成熟度(经过双十一考验)
1.2 关键概念
1.2.1. 主题与标签
主题Tpoic:第一级消息类型,书的标题 标签Tags:第二级消息类型,书的目录,可以基于Tag做消息过滤
例如:
主题:
订单交易 标签:
订单交易-创建
订单交易-付款
订单交易-完成
1.2.2. 发送与订阅群组
生产组:用于消息的发送。
消费组:用于消息的订阅处理。
生产组和消费组,方便扩缩机器,增减处理能力,集群组的名字,用于标记用 途中的一员。每次只会随机的发给每个集群中的一员。
RocketMQ的集群方式 和优缺点如下:
1、单机模式 (配置简单,单master宕机后未恢复前消息不可发送、订阅和消费,整个系统都瘫痪了,风险较大)
2、多master (配置简单,磁盘配置raid10,单master宕机未恢复前消息不可订阅和消费)
3、多master多slave异步复制(即使磁盘村怀,消息丢失非常少,消息可以通过slave来消费)
4、多master多slave同步双写(性能相对3下降10%,消息不会丢失,应用最广)
二、双主双从模式的配置
配置rocketmq前请确保所有机器都已经安装jdk,本文介绍的是apache版本的rocketmq4.2.0版本的双主双从模式的配置以及rocketmq-console监控部署,不适于alibaba版本。
1、服务器环境
ip 角色 模式
10.1.101.3 broker-a NameServer,Broker Master
10.1.101.7 broker-b NameServer,Broker Master
10.1.101.8 broker-a-s NameServer,Broker Slave
10.1.101.9 broker-a-s NameServer,Broker Slave
2、Host添加信息
四台机器执行:
# vi /etc/hosts
设置四台机器的hosts文件如下:
10.1.101.3 mqnameserver1
10.1.101.7 mqnameserver2
10.1.101.8 mqnameserver3
10.1.101.9 mqnameserver4
10.1.101.3 broker-a</