一、rocketMQ是什么
rocketmq是一款低延迟、高可靠、可伸缩、已使用的消息中间件。具有以下特性:
1、支持发布/订阅、点对点(p2p)消息模型
2、同一个队列中支持先进先出(FIFO)和严格的顺序传递
3、支持拉(pull)和推(push)两种消息模式
4、单一队列百万消息的堆积能力
5、支持多种消息协议,比如: JMS 、MQTT
6、分布式高可用的不是架构,满足至少一次消息传递语义
7、提供docker 镜像用于隔离测试和云集群部署
8、提供配置、指标和监控功能丰富的Dashboard
二、专业术语
1、producer
生产者、作用是将消息发送到MQ
2、producer group
生产者组,多个发送同一类消息的生成者简称为一个生产者组
3、consumer
消费者、消费MQ上的消息
4、consumer group
消费者组,消费同一类型消息的多个consumer简称一个消费者组
5、topic
是一种消息的逻辑分类,比如:订单相关的消息存储在一个topic中、库存相关的消息存储在同一个topic中
6、message
是消息的载体,一个message必须指定topic,相当于寄信地址。message还可以设置一个tag 比便于消费者可以基于tag进行过滤消息
7、tag
标签,可以被认为是对topic的进一步细化,一般在相同业务模块中通过引入标签来标记不同的用途的消息
8、broker
是rocketMQ的系统主要角色。broker接受生成者的消息,存储以及为消费者拉取消息的请求做好准备
三、rocketMQ 架构
以上可以看出有4个集群,分别是 nameserver集群、broker集群、producer集群、consumer集群
1、nameserver集群:提供了轻量级的服务和路由,每个nameserver记录完整的路由信息,提供读写服务并且支持快速扩展。
2、broker集群:通过提供轻量级的topic和Queue机制来处理消息存储,同时支持推(push)和拉(pull)模式以及主从结构的容错机制
3、producer:生产者,产生消息的实例,拥有相同的producer Group 和produer 组成一个集群
4、consumer:消费者,接受消息的实例,拥有相同的consumerGroup 和consumer组成一个集群
简单说明一下图中箭头含义,从 Broker 开始,Broker Master1 和 Broker Slave1 是主从结构,它们之间会进行数据同步,即 Date Sync。同时每个 Broker 与
NameServer 集群中的所有节
点建立长连接,定时注册 Topic 信息到所有 NameServer 中。
Producer 与 NameServer 集群中的其中一个节点(随机选择)建立长连接,定期从 NameServer 获取 Topic 路由信息,并向提供 Topic 服务的 Broker Master 建立长连接,
且定时向 Broker 发送心跳。Producer 只能将消息发送到 Broker master,但是 Consumer 则不一样,它同时和提供 Topic 服务的 Master 和 Slave
建立长连接,既可以从 Broker Master 订阅消息,也可以从 Broker Slave 订阅消息。