RocketMQ的核心概念以及架构图

编程界的小学生

  • 一、架构图以及角色
    • 1、架构图
    • 2、角色
      • 2.1、Broker
      • 2.2、Nameserver
      • 2.3、Producer
      • 2.4、Consumer
    • 3、核心流程
  • 二、核心概念
    • 1、Message
    • 2、topic
    • 3、queue
    • 4、Tag
    • 5、Message Model
    • 6、Message Order
    • 7、Producer Group
    • 8、Consumer Group
  • 三、ACK
  • 四、消费模式
    • 1、集群模式(Clustering)
      • 1.1、图解
      • 1.2、特点
    • 2、广播模式(Broadcasting)
      • 2.1、图解
      • 2.2、特点

一、架构图以及角色

1、架构图

在这里插入图片描述

2、角色

2.1、Broker

  • 理解成RocketMQ本身

  • broker主要用于producer和consumer接收和发送消息

  • broker会定时向nameserver提交自己的信息

  • 是消息中间件的消息存储、转发服务器

  • 每个Broker节点,在启动时,都会遍历NameServer列表,与每个NameServer建立长连接,注册自己的信息,之后定时上报

2.2、Nameserver

  • 理解成zookeeper的效果,只是他没用zk,而是自己写了个nameserver来替代zk

  • 底层由netty实现,提供了路由管理、服务注册、服务发现的功能,是一个无状态节点

  • nameserver是服务发现者,集群中各个角色(producer、broker、consumer等)都需要定时向nameserver上报自己的状态,以便互相发现彼此,超时不上报的话,nameserver会把它从列表中剔除

  • nameserver可以部署多个,当多个nameserver存在的时候,其他角色同时向他们上报信息,以保证高可用,

  • NameServer集群间互不通信,没有主备的概念

  • nameserver内存式存储,nameserver中的broker、topic等信息默认不会持久化,所以他是无状态节点

2.3、Producer

  • 消息的生产者
  • 随机选择其中一个NameServer节点建立长连接,获得Topic路由信息(包括topic下的queue,这些queue分布在哪些broker上等等)
  • 接下来向提供topic服务的master建立长连接(因为rocketmq只有master才能写消息),且定时向master发送心跳

2.4、Consumer

  • 消息的消费者

  • 通过NameServer集群获得Topic的路由信息,连接到对应的Broker上消费消息

  • 由于Master和Slave都可以读取消息,因此Consumer会与Master和Slave都建立连接进行消费消息

3、核心流程

  • Broker都注册到Nameserver上
  • Producer发消息的时候会从Nameserver上获取发消息的topic信息
  • Producer向提供服务的所有master建立长连接,且定时向master发送心跳
  • Consumer通过NameServer集群获得Topic的路由信息
  • Consumer会与所有的Master和所有的Slave都建立连接进行监听新消息

二、核心概念

1、Message

消息载体。Message发送或者消费的时候必须指定Topic。Message有一个可选的Tag项用于过滤消息,还可以添加额外的键值对。

2、topic

消息的逻辑分类,发消息之前必须要指定一个topic才能发,就是将这条消息发送到这个topic上。消费消息的时候指定这个topic进行消费。就是逻辑分类。

3、queue

1个Topic会被分为N个Queue,数量是可配置的。message本身其实是存储到queue上的,消费者消费的也是queue上的消息。多说一嘴,比如1个topic4个queue,有5个Consumer都在消费这个topic,那么会有一个consumer浪费掉了,因为负载均衡策略,每个consumer消费1个queue,5>4,溢出1个,这个会不工作。

4、Tag

Tag 是 Topic 的进一步细分,顾名思义,标签。每个发送的时候消息都能打tag,消费的时候可以根据tag进行过滤,选择性消费。

5、Message Model

消息模型:集群(Clustering)和广播(Broadcasting)

6、Message Order

消息顺序:顺序(Orderly)和并发(Concurrently)

7、Producer Group

消息生产者组

8、Consumer Group

消息消费者组

三、ACK

首先要明确一点:ACK机制是发生在Consumer端的,不是在Producer端的。也就是说Consumer消费完消息后要进行ACK确认,如果未确认则代表是消费失败,这时候Broker会进行重试策略(仅集群模式会重试)。ACK的意思就是:Consumer说:ok,我消费成功了。这条消息给我标记成已消费吧。

四、消费模式

1、集群模式(Clustering)

1.1、图解

RocketMQ的核心概念以及架构图_第1张图片

1.2、特点

  • 每条消息只需要被处理一次,broker只会把消息发送给消费集群中的一个消费者
  • 在消息重投时,不能保证路由到同一台机器上
  • 消费状态由broker维护

2、广播模式(Broadcasting)

2.1、图解

RocketMQ的核心概念以及架构图_第2张图片

2.2、特点

  • 消费进度由consumer维护

  • 保证每个消费者都消费一次消息

  • 消费失败的消息不会重投

你可能感兴趣的:(RocketMQ,java,kafka,分布式,运维,RocketMQ)