RocketMq 的基本知识1

一RocketMq的基本知识

1.1 RocketMq的基本知识

MQ Message Queue ,是一种提供 消息队列服务 的中间件,也称为消息中间件。

1.2 作用

1.流量消峰

 2.异步传输

 3.日志收集

1.3 核心概念

1消息: 消息是指,消息系统所传输信息的物理载体,生产和消费数据的最小单位,每条消息必须属于一个主题。

2.主题: Topic表示一类消息的集合,每个主题包含若干条消息,每条消息只能属于一个主题,是RocketMQ进行

3.队列: 存储消息的物理实体。一个Topic中可以包含多个Queue,一个TopicQueue中的消息只能被一个消费者组中的一个消费者消费。一个Queue中的消息不允许同一个消费者组中的多个消费者同时消费。

4.消息标识:RocketMQ中每个消息拥有唯一的MessageId,且可以携带具有业务标识的Key,以方便对消息的查询。

producerIp + 进程pid + MessageClientIDSetter类的ClassLoader的hashCode +当前时间 + AutomicInteger自增计数器

offsetMsgId :由 broker 端生成,其生成规则为: brokerIp + 物理分区的 offset Queue 中的
偏移量)

1.4 rocketmq的架构图

1. Producer
Producer 跟 Name Server 的任意一个节点建立长连接,定期从 Name Server 拉取 Topic 路由信息。Producer 是否采用集群,取决于它所在的业务系统。

2.Consumer
Consumer 跟 Name Server 的任意一个节点建立长连接,定期从 Name Server 拉取 Topic 路由信息。Consumer 是否采用集群,取决于它所在的业务系统。

Producer 和 Consumer 只跟任意一个 Name Server 节点建立连接,因为 Broker 会向所有 Name Server 注册 Topic 信息,所以每个 Name Server 保存的数据其实是一致的

3. Name Server 集群
Name Server 集群部署,但是节点之间并不会同步数据,因为每个节点都会保存完整的数据。因此单个节点挂掉,并不会对集群产生影响。

NameServer是一个Broker与Topic路由的注册中心,支持Broker的动态注册与发现。

master负责处理读写操作请求,Slave负责对Master中的数据进行备份 。当 Master 挂掉了, Slave 则会自动切换为 Master 去工作。所
以这个 Broker 集群是主备集群。一个 Master 可以包含多个 Slave ,但一个 Slave 只能隶属于一个 Master
Master Slave 的对应关系是通过指定相同的 BrokerName 、不同的 BrokerId 来确定的。 BrokerId 0
Master ,非 0 表示 Slave 。每个 Broker NameServer 集群中的所有节点建立长连接,定时注册 Topic

4.Broker
Broker 采用主从集群,实现多副本存储和高可用。每个 Broker 节点都要跟所有的 Name Server 节点建立长连接,定义注册 Topic 路由信息和发送心跳。

跟所有 Name Server 建立连接,就不会因为单个 Name Server 挂了影响 Broker 使用。Broker 主从模式中, Slave 节点主动从 Master 节点拉取消息。

Broker充当着消息中转角色,负责存储消息、转发消息。

1.5 工作流程

1)启动NameServerNameServer启动后开始监听端口,等待BrokerProducerConsumer连接。

2 )启动 Broker 时, Broker 会与所有的 NameServer 建立并保持长连接,然后每 30 秒向 NameServer 定时发送心跳包。
3 )发送消息前,可以先创建 Topic ,创建 Topic 时需要指定该 Topic 要存储在哪些 Broker 上,当然,在创建Topic 时也会将 Topic Broker 的关系写入到 NameServer中。不过,这步是可选的,也可以在发送消息时自动创建 Topic
4 Producer 发送消息,启动时先跟 NameServer 集群中的其中一台建立长连接,并从 NameServer中获取路由信息,即当前发送的 Topic 消息的 Queue Broker的地址(IP+Port)的映射关系。然后根据算法 策略从队选择一个 Queue ,与队列所在的 Broker 建立长连接从而向 Broker 发消息。当然,在获取到路由 信息后, Producer 会首先将路由信息缓存到本地,再每 30 秒从 NameServer 更新一次路由信息。
5) Consumer Producer 类似,跟其中一台 NameServer 建立长连接,获取其所订阅 Topic 的路由信息, 然后根据算法策略从路由信息中获取到其所要消费的 Queue ,然后直接跟 Broker 建立长连接,开始消费 其中的消息。 Consumer 在获取到路由信息后,同样也会每 30 秒从 NameServer 更新一次路由信息。不过 不同于 Producer 的是, Consumer 还会向 Broker 发送心跳,以确保 Broker 的存活状态。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值