当前位置: 首页 > news >正文

RocketMQ 01

今天是2025/04/06 21:31 day 18

总路线请移步主页Java大纲相关文章

今天进行RocketMQ 1,2 个模块的归纳

首先是RocketMQ 的相关内容概括的思维导图

1. 核心组件

1.1 NameServer
  • 核心功能

    • 服务发现:作为轻量级注册中心,管理所有 Broker 的地址和路由信息,Producer/Consumer 通过 NameServer 动态获取 Broker 地址。

    • 无状态设计:多个 NameServer 之间无数据同步,通过 Broker 周期性注册心跳维持路由表。

    • 高可用保障:集群部署,单节点宕机不影响整体服务。

  • 关键特性

    • 低延迟:仅维护基础元数据(Topic-Broker 映射),不参与消息传输。

    • 最终一致性:Broker 下线后,NameServer 通过心跳超时(默认30秒)剔除失效节点。


1.2 Broker
  • 核心职责

    • 消息存储:基于 Commit Log 顺序写盘,保证高吞吐量。

    • 消息转发:根据 Consumer 拉取请求从 Commit Log 读取数据并分发。

    • 高可用架构:主从模式(Master-Slave),支持 同步双写(强一致)和 异步复制(高性能)。

  • 存储机制

    • 刷盘策略

      • 同步刷盘(可靠但低吞吐):消息写入内存后同步刷入磁盘,确保数据不丢失(适用于金融场景)。

      • 异步刷盘(高吞吐):消息写入内存后立即返回成功,异步批量刷盘(适用于日志类场景)。

    • 主从同步

      • 异步复制:Master 异步复制消息到 Slave,存在短暂数据不一致风险。

      • 同步双写:Master 同步等待 Slave 写入成功,保障强一致性(性能较低)。

  • 扩展能力

    • 分片存储:Topic 可划分为多个队列(Queue),分布在多个 Broker 上,实现水平扩展。


1.3 Producer
  • 核心功能

    • 消息发送:将消息发送到指定 Topic 的某个队列(Queue)。

    • 负载均衡策略

      • 轮询(Round Robin)

      • 哈希(Hash,保证相同 Key 的消息进入同一队列)

      • 随机(Random)

  • 发送模式

    • 同步发送:等待 Broker 返回确认(ACK),保证消息可靠但延迟较高。

    • 异步发送:通过回调函数处理结果,兼顾性能和可靠性。

    • 单向发送(Oneway):只管发送,不关注结果(适用于日志采集等低重要性场景)。


1.4 Consumer
  • 消费模式

    • Push 模式(推荐):Broker 主动推送消息给 Consumer,需设置合理的流控策略。

    • Pull 模式:Consumer 主动拉取消息,灵活性高但需自行控制频率。

  • 消费方式

    • 集群消费(Clustering):同组 Consumer 分摊消费同一 Topic 的消息(每条消息仅被消费一次)。

    • 广播消费(Broadcasting):同组 Consumer 各自消费全量消息(适用于通知类场景)。

  • 消息确认(ACK)

    • Consumer 消费成功后需返回 ACK,否则消息会重新投递(重试队列机制)。


2. 消息模型

2.1 主题(Topic)与标签(Tag)
  • Topic

    • 消息的逻辑分类,生产者按 Topic 发送消息,消费者按 Topic 订阅消息。

    • 支持多队列(Queue)分片,提升并发处理能力。

  • Tag

    • 二级消息过滤标签,同一 Topic 下可通过 Tag 实现消息分类(如:订单Topic下分为支付Tag、发货Tag)。

    • 消费者可订阅 Topic + Tag 组合(支持 SQL表达式过滤),避免全量消息处理。


2.2 消息类型
消息类型特性与场景实现机制
顺序消息保证同一队列内消息的严格顺序(如:订单状态变更)通过哈希策略将相同业务 Key 的消息路由到同一队列,消费者单线程顺序消费。
事务消息实现分布式事务(如:支付成功后扣减库存)两阶段提交: 1. 发送 Half 消息(预提交) 2. 本地事务执行成功后提交消息。
定时/延时消息消息在指定时间后投递(如:订单超时取消)Broker 内置定时器,按延迟级别(1s/5s/10s…)存储到特定队列,到期后转发到目标Topic。
批量消息一次发送多条消息,减少网络开销(如:日志批量上传)Producer 将多条消息合并为一次请求发送,单批次消息大小需 ≤ 4MB。

相关文章:

  • 实际犯错以及复盘1
  • FPGA同步复位、异步复位、异步复位同步释放仿真
  • GPMI:一线通联,创新无界
  • 2025-04-06 NO.2 Quest3 基础配置与打包
  • 【AI论文】重新思考视觉语言模型的强化学习扩展:一个透明的、从头开始的框架和全面的评估方案
  • 内存池整体框架设计
  • 网络安全应急响应-系统排查
  • Go语言-初学者日记(三):函数与方法
  • C 语 言 --- 指 针 2
  • MyBatis小技巧与MyBatis参数处理
  • 【Firewalld】Linux中firewall-cmd的基本使用
  • Runnable组件容灾回退机制 with_fallback 深度解析降低程序错误率
  • 单链表的实现 | 附学生信息管理系统的实现
  • 3D打印技术助力高精密零件制造与维修工具革新
  • C# Winform 入门(13)之通过WebServer查询天气预报
  • 网络钓鱼攻击的威胁和执法部门的作用(第一部分)
  • 架构师面试(二十六):系统拆分
  • 【Csharp】获取实时的鼠标光标位置,测试用——做窗口软件绘图需要确定光标位置
  • GenerationMixin概述
  • Python Cookbook-5.5 根据内嵌的数字将字符串排序
  • 任务发布插件wordpress/谷歌seo排名优化服务
  • 网站做境外第三方支付/外贸平台有哪些?
  • 东莞电商网页设计/qq群排名优化软件购买
  • 吉林建设工程信息网/百度关键词排名优化工具
  • 企业系统管理软件/seo网站推广是什么意思
  • 上海做兼职哪个网站靠谱/网络营销师培训费用是多少