RocketMQ消息队列产品

前言:RocketMQ消息队列产品的学习,正好到时候学习下CVE-2023-33246

参考文章:https://blog.csdn.net/qq_21040559/article/details/122703715

RocketMQ介绍

官网地址:http://rocketmq.apache.org

RocketMQ是一个统一消息引擎、轻量级数据处理平台。RocketMQ是一款阿里巴巴开源的消息中间件。2016年11月28日,阿里巴巴向 Apache 软件基金会捐赠
RocketMQ,成为Apache孵化项目。2017年9月25日,Apache宣布RocketMQ孵化成为Apache顶级项目(TLP),成为国内首个互联网中间件在 Apache 上的顶级项目。

RocketMQ架构

RocketMQ主要有四大核心组成部分:NameServer、Broker、Producer以及Consumer四部分。

四大核心的运行流程

  • NameServer 先启动

  • Broker 启动时向 NameServer 注册

  • 生产者在发送某个主题的消息之前先从 NamerServer 获取 Broker 服务器地址列表(有可能是集群),然后根据负载均衡算法从列表中选择一台Broker 进行消息发送。

  • NameServer 与每台 Broker 服务器保持长连接,并间隔 30S 检测 Broker 是否存活,如果检测到Broker 宕机(使用心跳机制, 如果检测超120S),则从路由注册表中将其移除。

  • 消费者在订阅某个主题的消息之前从 NamerServer 获取 Broker 服务器地址列表(有可能是集群),但是消费者选择从 Broker 中 订阅消息,订阅规则由 Broker 配置决定

NameServer

Name Server是一个几乎无状态节点,可集群部署,节点之间无任何信息同步。

NameServer是整个RocketMQ的"大脑",它是RocketMQ的服务注册中心,所以RocketMQ需要先启动NameServer再启动Rocket中的Broker。

这边为什么说是大脑呢,因为名称服务器(NameServer)用来保存 Broker 相关元信息并给 Producer 和 Consumer 查找Broker 信息。NameServer 被设计成几乎无状态的,可以横向扩展,节点之间相互之间无通信,通过部署多台机器来标记自己是一个伪集群。

为什么先启动NameServer再启动Broker呢,每个Broker在启动的时候会到NameServer注册,Producer在发送消息前会根据Topic到NameServer获取到Broker的路由信息,进而和Broker取得连接。Consumer也会定时获取Topic的路由信息。

这边简单的理解其实就是NameServer保存了Broker的信息,然后提供给Producer和Consumer相关的Broker信息。

NameServer 与每台 Broker 服务保持长连接,并间隔 30S 检查 Broker 是否存活,如果检测到Broker 宕机,则从路由注册表中将其移除,这样就可以实现 RocketMQ 的高可用。

Broker

消息服务器(Broker)是消息存储中心,主要作用是接收来自Producer的消息并存储,Consumer从这里取得消息。它还存储与消息相关的元数据,包括用户组、消费进度偏移量、队列信息等。从部署结构图中可以看出Broker有Master和Slave两种类型。

知识点:Master既可以写又可以读,Slave不可以写只可以读,相当于只能同步。

消费类型

消费模式

消费

posted @   zpchcbd  阅读(69)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示