RocketMQ系列之基础入门
1:MQ介绍和几大产品对比
1.1:MQ介绍
MQ:消息队列,是基础数据结构中“先进先出”的一种数据结构。一般用来解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。
1.2:常见MQ产品对比
常见的MQ产品有Kafana,RocketMQ,RabbitMQ
但是RocketMQ使用Java语言编写,便于Java程序员使用,调错。
2:RocketMQ基础概念
2.1:模型介绍
RocketMQ模型如下图所示
在这张图中有几个重要概念:
前置概念:
1.Topic:是一种消息的逻辑分类,比如说你有订单类的消息,也有库存类的消息,那么就需要进行分类,一个是订单 Topic 存放订单相关的消息,一个是库存 Topic 存储库存相关的消息。
2.Message
Message 是消息的载体。一个 Message 必须指定 topic,相当于寄信的地址。Message 还有一个可选的 tag 设置,以便消费端可以基于 tag 进行过滤消息。也可以添加额外的键值对,例如你需要一个业务 key 来查找 broker 上的消息,方便在开发过程中诊断问题。
3.tag:
标签可以被认为是对 Topic 进一步细化。一般在相同业务模块中通过引入标签来标记不同用途的消息。
节点类型:
1.NameServer
NameServer:是一个无状态的节点,可以集群部署,起到路由作用
2.Broker
Broker是整个服务的中心,起到消息存储等功能,Broker分为Master与Slave,一个Master可以对应多个Slave,但是一个Slave只能对应一个Master,Master与Slave的对应关系通过指定相同的BrokerName,不同的BrokerId来定义,BrokerId为0表示Master,非0表示Slave。Master也可以部署多个。
3.Producer
Producer 是消息的产生者:与Name Server集群中的其中一个节点(随机选择,但不同于上一次)建立长连接,定期从Name Server取Topic路由信息,并向提供Topic服务的Master建立长连接,且定时向Master发送心跳。
4.Consumer
Consumer是消息的消费者:与Name Server集群中的其中一个节点(随机选择,但不同于上一次)建立长连接,定期从Name Server 取Topic路由信息,并向提供Topic服务的Master、Slave建立长连接,且定时向Master、Slave发送心跳。
2.2:部署模式
单 master 模式
多 master 模式
多 master 多 slave 异步复制模式
多 master 多 slave 同步双写模式
刷盘策略:同步刷盘和异步刷盘(指的是节点自身数据是同步还是异步存储)
同步方式:同步双写和异步复制(指的一组 master 和 slave 之间数据的同步)