RocketMQ4.x相关概念

一、主要概念

(1)RocketMQ是阿里的中间件,后来加入了Apache基金会,在ActiveMQ和Kafka的基础上做了调整,改善了ActiveMQ的IO模块瓶颈和Kafka的低延迟和高可靠性方面的瓶颈
(2)RocketMQ的消息模型是发布-订阅(Pub/Sub)模型
Rocket MQ的部署模型
在这里插入图片描述
RocketMQ部署模型中的几个重要角色
(1)生产者,Producer
Producer通过 MQ 的负载均衡模块选择相应的 Broker 集群队列进行消息投递,投递的过程支持快速失败和重试。
(2)消费者,Customer
对Broker集群队列中的消息进行消费,支持Pull(拉)和Push(推)两种消费模式,同时支持集群(Clustering)和广播(Broadcasting)消费,并且提供了消息实时订阅机制
(3)名称服务器,NameServer
Topic 路由注册中心,支持 Topic、Broker 的动态注册与发现

  • Broker管理,Broker集群会提交自己的注册信息,NameServer会保存Broker的注册信息作为路由信息,并提供了心跳检测机制,检测Broker是否存活
  • 路由管理,NameServer保存了Broker的路由信息和用于客户端查询的队列信息,Producer(生产者)和Customer(消费者)就知道了Broker集群的整个路由信息,从而进行消息的投递和消费
  • NameServer会多个实例部署,实例之间互相不通信,Broker回向每一个NameServer实例注册自己的路由信息,因此每个NameServer实例都有Broker的完整路由信息,某一个NameServer下线了也没关系
    (4)代理服务器Broker
    保证消息的存储,投递,查询以及保证服务的高可用性
    Broker是多主多从架构,一个Master对应多个Slave,一个Slave只能有一个Master。Master 与 Slave 的对应关系通过指定相同的BrokerName,不同的BrokerId 来定义,BrokerId为0表示Master,非0表示Slave。Master用来存放Producer发送的消息,Slave是对Master的拷贝,当Master宕机时,其中一个Slave会代替Master
    一个Broker中有很多Topic,一个Topic中可能有多个消息队列,并且这些消息队列可能分布在不同的Broker上。
    小结:
    1)Broker会向每一个NameServer建立长连接,定时注册自己的Topic信息。(其实是定时发送心跳包,心跳包中包含了Broker的信息和Broker中存储的所有Topic信息),注册成功后就有Broker和Topic的映射信息
    2)Producer会向NameServer集群中的某一个节点建立长连接,定期获取Topic的路由信息,并向提供Topic服务的Master(Broker)建立长连接,定时向Master发送心跳
    3)Customer会向NameServer集群中的某个节点建立长连接,定期获取Topic的路由信息,并向提供Topic服务的Master和Slave建立长连接,定时向Master和Slave发送自己的心跳信息,既可以从Master中订阅消息,也可以从Slave中订阅消息

二、RocketMQ集群工作流程

1、启动NameServer
NameServer相当于一个路由控制中心,等待Producer,Broker和Customer连接
2、启动Broker
与所有NameServer建立长连接,定时发送心跳包,心跳包中包含Broker的信息和存储的所有Topic信息
3、生产者发送消息
生产者发送消息时向其中一个NameServer建立长连接,从NameServer中获取到当前发送的Topic在哪个Broker上,轮询从队列列表中选择一个队列,与队列所在的Broker建立长连接,并发送消息
4、消费者消费消息
消费者消费消息时向其中一个NameServer建立长连接,获取当前订阅的Topic在哪个Broker中,然后开始消费消息,RocketMQ中消费消息都是以消费组的方式出现的,不同的消费组可以消费同一个Topic,一个消费组中的消费者可以消费多个Topic,但是一个消息队列不能被同一个消费组的多个消费者消费

三、其他概念

1)消息队列
一个Topic可以包含多个队列;
同一个消费组中一个队列只能分配给一个消费者,一个消费者可以分配多个队列,(消费者和消息队列之间是一对多的关系)每个Queue只有一个消费者,可以避免消费过程中的多线程处理和资源锁定,有效提高各Consumer消费的并行度和处理效率;
消费者的数量应该小于或等于消息队列的数量 ,如果消费者大于消息队列的数量,那么超过的那部分消费者会分配不到消息队列
2)读写队列
消息队列分为读队列和写队列,读写队列默认的创建数量都是4

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值