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
英文地址,請注明出處:http://en.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):數據一致性

概述 一致性就是數據保持一致,在分布式系統中,可以理解為多個節點中數據的值是一致的。 強一致性:這種一致性級別是最符合用戶直覺的,它要求系統寫入什么,讀出來的也會是什么,用戶體驗好,但實現起來往往對系統的性能影響大弱一致性:這種一致性級別約束了系統在寫入成功…