• RocketMq核心概念


    概念关系

      RocketMq中的概念包括Producer,Producer Group,Brocker,Name Server,Consumer,Consumer Group,Topic,Message,Message Queue,Tag,关系如下图:(蓝色为主要部分,其余颜色只用于区分位置关系)

      以Topic为中心各个概念关系直接采用官网图:(其中subTopics==Message Queue)

     概念详述

     Producer:生产者,代表产生消息的一方。将业务应用程序系统生成的消息发送给Brocker存储。RocketMq提供了多种发送方式,包括同步,异步和单向。同步和异步发送均需要Brocker返回确认信息,单向发送不需要。

     Producer Group:同一类Producer的集合,这类Producer发送同一类消息且发送逻辑一致。如果发送的是事务消息且原始生产者在发送之后崩溃,则Broker服务器会联系同一生产者组的其他生产者实例以提交或回溯消费。

     Consumer:消费者,代表消费消息的一方。从Borcker获取消息并输入应用程序中。从用户应用的角度,提供了两种类型的消费者,PullConsumer和PushConsumer

      PullConsumer:PullConsumer主动从Brocker获取消息,一旦一批消息被拉去,用户应用程序将启动消费过程。

      PushConsumer:Push consumer将消息拉取、消费进度和维护其他工作封装在内部,给最终用户留下一个回调接口,在消息到达时执行。Push模式只是对pull模式的一种封装,其本质实现为消息拉取线程在从服务器拉取到一批消息后,然后提交到消息消费线程池后,又“马不停蹄”的继续向服务器再次尝试拉取消息。

     Consumer Group:同一类Consumer的集合,这类Consumer通常消费同一类消息且消费逻辑一致。消费者组使得在消息消费方面,实现负载均衡和容错的目标变得非常容易。要注意的是,消费者组的消费者实例必须订阅完全相同的Topic。RocketMQ 支持两种消息模式:集群消费(Clustering)和广播消费(Broadcasting)。

      集群消费:相同Consumer Group的Consumer实例平均分摊消息

      广播消费:相同Consumer Group的Consumer实例全量接收消息

     Brocker:接收来自生产者的消息,存储它们并准备处理来自消费者的请求。它还存储与消息相关的元数据,包括消费者组、消费进度偏移量和主题/队列信息。

     Name Server:充当路由信息提供程序。

     Topic:表示一类消息的集合,每个主题包含若干条Message,每条Message只能属于一个主题,是RocketMQ进行消息订阅的基本单位。Topic与Producer和Consumer的关系非常松散。具体来说,一个Topic可以有零个、一个或多个向其发送Message的Producer;相反,生产者可以发送不同Topic的Message。从Consumer的角度来看,一个Topic可以由零个、一个或多个Consumer Group订阅。类似地,Consumer Group可以订阅一个或多个主题,只要该组的实例保持其订阅一致。

     Message:消息系统所传输信息的物理载体,生产和消费数据的最小单位,每条消息必须属于一个主题。RocketMQ中每个消息拥有唯一的Message ID,且可以携带具有业务标识的Key。系统提供了通过Message ID和Key查询消息的功能。

     Message Queue:主题被划分为一个或多个子主题“消息队列”。

     Tag:使用标记,来自同一业务模块的不同目的的消息可能具有相同的主题和不同的标记。标记将有助于保持代码的整洁和一致性,而且标记还可以方便RocketMQ提供的查询系统。

  • 相关阅读:
    每日一题
    每日一题
    每日一题
    每日一题
    GitLab 部署
    Golang Web开发之Gin入门
    Golang消息队列之NSQ
    Golang操作Redis
    Golang操作MySQL
    Golang Json数据处理方法
  • 原文地址:https://www.cnblogs.com/lin0/p/14122080.html
Copyright © 2020-2023  润新知