RocketMQ Kafka区别

架构

在这里插入图片描述

  1. ZooKeeper:管理 Broker 注册、分区 Leader 选举及消费者组状态。
  2. Broker:存储 Partition数据,每个 Partition 为独立日志文件。
  3. Producer/Consumer:通过 ZooKeeper获取路由信息,实现消息分发与消费。

在这里插入图片描述

  1. NameServer:无状态路由中心,管理 Broker 地址与 Topic 队列映射。
  2. Broker:主从架构,Master 处理读写,Slave 异步/同步备份数据。
  3. CommitLog:全局顺序写入消息体,ConsumeQueue 存储消费偏移索引。

对比

在这里插入图片描述

RocketMQ 顺序消息

生产者:单个生产者和串行发送
消息存储:按照时间顺序追加到commitlog中的,然后会被定时分发到cosumerQueue
分区顺序:MQ生产者需要发送顺序消息的时候,需要在send方法中传入一个MessageQueueSelector,其中需要重写一个select方法,这个方法就是用来定义要把消息发送到哪个MessageQueue的。这样就实现了分区顺序消息
全局顺序:写死一个队列,让所有的消息都发往这一个队列中即可
顺序消费
1.分布式锁保证了同一个消费组内,一个队列只会被分配给一个消费者。
2.Synchronized这把锁的目的就是为了保证同一时刻只有一个线程去消费这个队列
3.ReentrantLock这把锁的目的就是保证在重平衡过程中不会出现重复消费

RocketMQ事物消息

  1. 发送half消息,探测MQ是否正常
  2. half消息发送失败,MQ故障,业务回滚
  3. half消息成功,订单系统执行自己的业务逻辑
  4. 订单系统执行本地事务失败,则需要发送一个rollback请求给MQ,让其删除这条half消息
  5. 如果订单系统的本地事务执行正常,此时需要发送一个commit请求给MQ,要求MQ对之前的half消息进行commit操作,这样库存系统就可以消费这条消息了。

RocketMQ延时消息

在这里插入图片描述
存在不足
1.延时级别只有 18 个,并不能满足所有场景,也不灵活;
2.延时时间不准确,后台的定时线程可能会因为处理消息量大导致延时误差大。

为了弥补延时消息的不足,引入了定时消息,60s 的时间轮,但是对于所有的时间延时,都是支持的。可以在每个时间节点增加一个 round 字段,记录时间轮转动的圈数,时间轮算法的优势是不用去遍历所有的任务,每一个时间节点上的任务用链表串起来,当时间轮上的指针移动到当前的时间时,这个时间节点上的全部任务都执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/80244.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/80244.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL进阶篇2_SQL优化、锁

文章目录 1 SQL优化1.1插入数据优化1.2主键优化页分裂页合并主键设计原则 1.3order by设计优化1.4group by设计优化小理解 1.5limit设计优化顺序IO和随机IO小疑惑 1.6count设计优化1.7update优化关于隐式事务事务的DML操作 锁全局锁表级锁表锁元数据锁意向锁 行级锁锁的释放条件…

如何测试 esp-webrtc-solution_solutions_doorbell_demo 例程?

软件准备 esp-webrtc-solution/solutions/doorbell_demo 例程 此例程集成了 WebSocket 传输视频流的应用 硬件准备 ESP32P4-Function-Ev-Board 环境搭建 推荐基于 esp-idf v5.4.1 版本的环境来编译此例程 若编译时出现依赖的组件报错,可进行如下修改&#xff…

TransmittableThreadLocal:穿透线程边界的上下文传递艺术

文章目录 前言一、如何线程上下文传递1.1 ThreadLocal单线程1.2 InheritableThreadLocal的继承困境1.3 TTL的时空折叠术 二、TTL核心设计解析2.1 时空快照机制2.2 装饰器模式2.3 采用自动清理机制 三、设计思想启示四、实践启示录结语 前言 在并发编程领域,线程上下…

【数据结构】——栈

一、栈的概念和结构 栈其实就是一种特殊的顺序表,其只允许在一端进出,就是栈的数据的插入和删除只能在一端进行,进行数据的插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的元素遵循先进后出LIFO(Last InFirst O…

大数据技术全景解析:Spark、Hadoop、Hive与SQL的协作与实战

引言:当数据成为新时代的“石油” 在数字经济时代,数据量以每年50%的速度爆发式增长。如何高效存储、处理和分析PB级数据,成为企业竞争力的核心命题。本文将通过通俗类比场景化拆解,带你深入理解四大关键技术:Hadoop、…

Android13 权限管理机制整理

一、概述 权限机制作为Android 系统安全的保证,很重要,这里整理一下 权限机制中framework 部分,selinux等其他的Android权限机制不在本次讨论范围内 二、个版本差异分类 Android13 Android12 Android11 及以下 抛开版本差异权限机制分为两大类 一类是之前apk在Android6.0…

MySQL的Order by与Group by优化详解!

目录 前言核心思想:让索引帮你“排好序”或“分好组”Part 1: ORDER BY 优化详解1.1 什么是 Filesort?为什么它慢?1.2 如何避免 Filesort?—— 利用索引的有序性1.3 EXPLAIN 示例 (ORDER BY) Part 2: GROUP BY 优化详解2.1 什么是…

awesome-digital-human本地部署及配置:打造高情绪价值互动指南

在数字化交互的浪潮中,awesome-digital-human-live2d项目为我们打开了本地数字人互动的大门。结合 dify 聊天 api,并借鉴 coze 夸夸机器人的设计思路,能为用户带来充满情绪价值的交互体验。本文将详细介绍其本地部署步骤、dify 配置方法及情绪…

[ctfshow web入门] web68

信息收集 highlight_file被禁用了,使用cinclude("php://filter/convert.base64-encode/resourceindex.php");读取index.php,使用cinclude("php://filter/convert.iconv.utf8.utf16/resourceindex.php");可能有些乱码,不…

计算机网络:深度解析基于链路状态的内部网关协议IS-IS

IS-IS(Intermediate System to Intermediate System)路由协议详解 IS-IS(Intermediate System to Intermediate System)是一种基于链路状态的内部网关协议(IGP),最初由ISO为OSI(开放系统互连)模型设计,后经扩展支持IP路由。它广泛应用于大型运营商网络、数据中心及复…

SEGGER项目

SystemView 查看版本, 查看SEGGER官网,release时间是2019-12-18日, 而3.12.0的版本日期是2020-05-04 #define SEGGER_SYSVIEW_MAJOR 3 #define SEGGER_SYSVIEW_MINOR 10 #define SEGGER_SYSVIEW_REV 0SEGGER EMBEDDED Studio 根据S…

Linux——Mysql索引和事务

目录 一,Mysql索引介绍 1,索引概述 1,索引的优点 2,索引的缺点 2,索引作用 3,索引分类 普通索引 唯一索引 主键索引 组合索引 全文索引 4,查看索引 5,删除索引 6&…

【Web】LACTF 2025 wp

目录 arclbroth lucky-flag whack-a-mole arclbroth 看到username为admin能拿到flag 但不能重复注册存在的用户 这题是secure-sqlite这个库的问题,底层用的是C,没处理好\0字符截断的问题 (在 Node.js 中,由于其字符串表示方式…

访问者模式(Visitor Pattern)详解

文章目录 1. 访问者模式概述1.1 定义1.2 基本思想 2. 访问者模式的结构3. 访问者模式的UML类图4. 访问者模式的工作原理5. Java实现示例5.1 基本实现示例5.2 访问者模式处理复杂对象层次结构5.3 访问者模式在文件系统中的应用 6. 访问者模式的优缺点6.1 优点6.2 缺点 7. 访问者…

matlab介绍while函数

MATLAB 中的 while 语句介绍 在 MATLAB 中,while 语句是一种循环结构,用于在满足特定条件时反复执行一段代码块。与 for 循环不同,while 循环的执行次数是动态的,取决于循环条件是否为真。 语法 while condition% 循环体代码 e…

数字信号处理|| 快速傅里叶变换(FFT)

一、实验目的 (1)加深对快速傅里叶变换(FFT)基本理论的理解。 (2)了解使用快速傅里叶变换(FFT)计算有限长序列和无限长序列信号频谱的方法。 (3)掌握用MATLA…

.Net Mqtt协议-MQTTNet(一)简介

一、MQTTNet 简介 MQTTnet 是一个高性能的MQTT类库,支持.NET Core和.NET Framework。 二、MQTTNet 原理 MQTTnet 是一个用于.NET的高性能MQTT类库,实现了MQTT协议的各个层级,包括连接、会话、发布/订阅、QoS(服务质量&#xff0…

时钟晶振锁相环pll方向技术要点和大厂题目解析

本专栏预计更新60期左右。当前第9期。 本专栏不仅适用于硬件的笔试面试,同样也适用于梳理硬件核心的知识点。 通过本文能得到什么? 首先,根据实战经验总结时钟晶振,锁相环的主要知识点,技术要点,面试考点; 然后,列出时钟晶振,锁相环的笔试面试的主要题型真题和模拟题,…

机器学习 day6 -线性回归练习

题目‌: 从Kaggle的“House Prices - Advanced Regression Techniques”数据集使用Pandas读取数据,并查看数据的基本信息。选择一些你认为对房屋价格有重要影响的特征,并进行数据预处理(如缺失值处理、异常值处理等)。…

缓存(2):数据一致性

概述 一致性就是数据保持一致,在分布式系统中,可以理解为多个节点中数据的值是一致的。 强一致性:这种一致性级别是最符合用户直觉的,它要求系统写入什么,读出来的也会是什么,用户体验好,但实现起来往往对系统的性能影响大弱一致性:这种一致性级别约束了系统在写入成功…