消息隊列-初識kafka

優缺點

消息隊列的優點:

  1. 實現系統解耦:

:::color5
系統解耦解釋

有 MQ 時是 “服務 A 發消息到隊列,其他服務從隊列拿消息新增服務接隊列就行”;無 MQ 時是 “服務 A 直接調其他服務的接口 / 依賴,新增 / 變更服務時 A 得改代碼適配”(有 MQ 時服務間依賴弱,無 MQ 時依賴強、改動影響大)。

有mq:

沒有mq:

:::

  1. 實現異步調用

:::color5
異步調用解釋

有 MQ 的情況 服務 A 不需要等待服務 B、C、D 處理完任務才繼續自己的工作。服務 A 只需把要處理的任務(消息)發送到 MQ 中,然后就可以立即去做其他事情了。而服務 B、C、D 會各自從 MQ 里獲取任務,然后在后臺異步地去處理這些任務,彼此之間互不干擾,實現了任務的異步執行。

沒有 MQ 的情況 服務 A 調用服務 B、C、D 時,必須等待服務 B、C、D 把當前的任務處理完成,得到返回結果后,服務 A 才能繼續進行后續的操作,整個過程是同步的,會造成服務 A 等待時間長,資源利用效率低。

與線程的區別:

  1. 適用范圍:MQ 適用于跨服務 / 分布式場景,線程適用于單進程內部
  2. 耦合程度:MQ 實現服務解耦,線程間通常存在較強耦合

【因為mq生產者只需要關心消息發送,消費者只需要關心接受,耦合度不高,而線程通常在一個程序內部,共享內存等,如果一個線程的邏輯或接口發生變化,會影響到其他協作的進程】

  1. 可靠性:MQ 自帶消息持久化,線程需額外處理數據安全
  2. 擴展性:MQ 可輕松橫向擴展消費者,線程數量受系統資源限制

:::

  1. 流量削峰

缺點:

  1. 系統可用性降低【如果mq宕機了,那么服務就都宕機了】
  2. 提升系統的復雜度【中間件越多,系統越復雜】
  3. 數據一致性問題【與原生的相比,需要處理數據一致性問題】

消息隊列的分類與選擇

  • Kafka:分布式消息系統,性能高、支持多語言,分布式架構有副本機制,可靠性高,適合日志等場景,但隊列 / 分區過多時負載和響應時間受影響,實時性依賴輪詢間隔,消費失敗不支持重試且社區更新慢。
  • RocketMQ:阿里開源,Java 實現,消息可靠性好,單機支持大量持久化隊列,性能優、支持多種消費模式,分布式擴展好且版本更新快,但客戶端語言支持少,社區成熟度及關注度不及 Kafka,無 Web 管理界面且未在核心實現 JMS 接口。
  • RabbitMQ:基于 AMQP 協議,性能好、支持高并發,健壯穩定、跨平臺且支持多語言,有消息確認和持久化機制,路由高度可定制,管理界面豐富、社區活躍,但代理架構導致運行速度慢、消息封裝大,學習和維護成本高。
  • ActiveMQ:Apache 出品,支持 JMS 規范和多語言,可通過 JDBC 持久化到數據庫,有自動重連、錯誤重試和安全機制,監控完善、界面友好,但社區活躍度不如 RabbitMQ,存在消息丟失問題,對上千隊列的場景不適用且對舊版本維護少。
  • ZeroMQ:類似 Socket 接口的傳輸層庫,非傳統消息隊列服務器,可實現 N:M 通信,屏蔽 Socket 編程細節,讓網絡編程更簡單,支持多種通信模型,目標是成為標準網絡協議棧部分,但更偏向底層網絡通訊庫。

KafKa

基本介紹

安裝and運行

安裝Zookeeper

:::color5
ZooKeeper 是一個分布式協調服務

  • 元數據管理:Kafka 依賴 ZooKeeper 存儲和管理集群的元數據信息,包括 Topic 的創建、刪除,分區的分配情況,Broker 的注冊信息等。比如當創建一個新的 Topic 時,Kafka 會將相關的 Topic 元數據存儲在 ZooKeeper 中。
  • Broker 協調:ZooKeeper 負責監控 Kafka 集群中 Broker 的狀態。當有 Broker 加入或離開集群時,ZooKeeper 會感知到變化,并通知其他相關組件。同時,在選舉分區的 Leader 副本時,也需要借助 ZooKeeper 來保證選舉的一致性和正確性,確保數據的讀寫操作能夠正常進行。
  • 消費者組管理:對于 Kafka 的消費者組,ZooKeeper 記錄了消費者組的成員信息、消費偏移量(Offset)等。當消費者組內成員發生變化(如新增消費者或消費者下線)時,ZooKeeper 會協助進行 Rebalance 操作,重新分配分區的消費任務,保證消費的均衡和高效。

:::

(kafka中也有自帶的zookeeper,但這里也可以自己裝一個)

KafKa配置介紹

安裝and配置EFAK

:::color5
EFAK(Kafka Eagle)是一款開源的 Kafka 監控和管理工具,用于幫助用戶更好地管理和監控 Kafka 集群,具體作用如下:

  • 集群管理:可以同時管理多個 Kafka 集群,在配置文件(如<font style="color:rgb(0, 0, 0);">system - config.properties</font>)中通過設置<font style="color:rgb(0, 0, 0);">efak.zk.cluster.alias</font>來為不同的 Kafka 集群設置別名,指定每個集群對應的 ZooKeeper 連接地址(如<font style="color:rgb(0, 0, 0);">cluster1.zk.list=localhost:2181</font> ),方便用戶對不同集群進行區分和操作。
  • 監控功能:實時監控 Kafka 集群的各項指標,比如 Broker 的狀態、Topic 的消息堆積情況、消費者組的消費延遲等。通過直觀的界面展示這些指標,讓運維人員和開發者能夠快速了解集群的運行狀況,及時發現潛在問題。
  • 數據統計分析:提供對 Kafka 消息數據的統計和分析功能,例如統計某個 Topic 在一段時間內的消息生產和消費速率、消息總量等,幫助用戶更好地理解業務數據的流動情況,為性能優化和容量規劃提供依據。
  • 數據存儲配置:支持配置不同的數據庫來存儲監控數據,默認支持 SQLite,也可以配置 MySQL(通過修改<font style="color:rgb(0, 0, 0);">efak.driver</font><font style="color:rgb(0, 0, 0);">efak.url</font><font style="color:rgb(0, 0, 0);">efak.username</font><font style="color:rgb(0, 0, 0);">efak.password</font>等參數 ),滿足不同用戶對于數據存儲的需求。

:::

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/922062.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/922062.shtml
英文地址,請注明出處:http://en.pswp.cn/news/922062.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

實踐《數字圖像處理》之Canny邊緣檢測、霍夫變換與主動二值化處理在短線段清除應用中的實踐

在最近的圖像處理項目中&#xff0c;其中一個環節&#xff1a;圖片中大量短線&#xff08;不是噪聲&#xff09;&#xff0c;需要在下一步處理前進行清除。在確定具體實現時&#xff0c;碰到了Canny邊緣檢測、霍夫變換與主動二值化處理的辯證使用&#xff0c;相關邏輯從圖片灰度…

vue3與ue5通信-工具類

工具 ue5-simple.js /*** UE5 通信工具* 兩個核心方法&#xff1a;發送消息和接收消息*/// 確保全局對象存在 if (typeof window ! undefined) {window.ue window.ue || {};window.ue.interface window.ue.interface || {}; }/*** 生成 UUID*/ function generateUUID() {retu…

在kotlin中如何使用像java中的static

在 Kotlin 中&#xff0c;沒有直接的 static 關鍵字&#xff0c;但有幾種等效的方式來實現 Java 中靜態成員的功能&#xff1a; 1. 伴生對象 (Companion Object) - 最常用 class MyClass {companion object {// 靜態常量const val STATIC_CONSTANT "constant value"…

如何在 Spring Boot 中指定不同的配置文件?

介紹 Spring Boot 提供了多種方式來管理和加載配置文件&#xff0c;特別是在多環境配置下&#xff0c;比如開發、測試和生產環境。通過指定不同的配置文件&#xff0c;可以靈活地調整應用程序的行為&#xff0c;以適應不同的需求。本文將介紹在 Spring Boot 中如何指定使用不同…

在centOS源碼編譯方式安裝MySQL5.7

一、前言 在生產環境中部署數據庫時&#xff0c;很多人會選擇直接使用 yum/apt 包管理器 安裝 MySQL&#xff0c;這樣簡單快速&#xff0c;但缺點是版本受限&#xff0c;靈活性不足。對于需要指定版本、啟用特定編譯參數或優化的場景&#xff0c;源碼編譯安裝 MySQL 就顯得非常…

探討Hyperband 等主要機器學習調優方法的機制和權衡

本篇文章Master Hyperband — An Efficient Hyperparameter Tuning Method in Machine Learning深入探討了Hyperband這一高效的超參數調優方法。文章的技術亮點在于其結合了多臂老虎機策略和逐次減半算法&#xff0c;能夠在大搜索空間中快速剔除表現不佳的配置&#xff0c;從而…

Mysql:InnoDB 關鍵特性

目錄 一、插入緩沖&#xff08;Change Buffer&#xff09;→ 快遞驛站的 “臨時存放區” 二、兩次寫&#xff08;Double Write&#xff09;→ 重要文件的 “備份存檔” 三、自適應哈希索引&#xff08;AHI&#xff09;→ 圖書館的 “熱門書快捷查找區” 四、異步 IO&#x…

STM32-----SPI

SPI簡介SCK:和I2C中SCL的時鐘線一個作用&#xff0c;都是在高電平拿出數據&#xff0c;在低電平寫數據MOSI:主機輸出從機輸入MISO:主機輸入從機輸出&#xff0c;只有當對應從機的SS為低電平&#xff0c;從機的MISO引腳才能設置推挽輸出&#xff0c;當從機SS為高電平時&#xff…

華為考試:HCIE數通考試難度分析

隨著信息技術的飛速發展&#xff0c;網絡技術已成為支撐各行各業運轉的重要基礎&#xff0c;市場對高水平網絡技術人才的需求持續增長。HCIE作為華為認證體系中的最高級別認證&#xff0c;代表了網絡技術領域的專業頂尖水平。本文將對HCIE數通認證的考試內容、難度及備考策略進…

一些常用的激活函數及繪圖

深度網絡的一些常用激活函數&#xff0c;并通過matplot繪制出來&#xff1a; import matplotlib.pyplot as plt import numpy as npdef relu(x):return np.maximum(0, x)def leaky_relu(x, alpha0.01):return np.where(x > 0, x, alpha * x)def gelu(x):return 0.5 * x * (1…

AE蘋果手機iPhone 17展示動畫片頭模板 App Promo Phone 17 Pro

專為 App 發布會、電商促銷、新品宣傳 打造的 iPhone 17 Pro 動畫展示 AE 模板。 4K 超清分辨率 26 張可替換照片位&#xff0c;無需第三方插件&#xff0c;拖拽即可輸出專業級手機宣傳片。 核心亮點 4K 超清&#xff1a;38402160 分辨率&#xff0c;大屏投放與社媒高清壓縮無…

基于Python的云原生TodoList Demo 項目,驗證云原生核心特性

以下是一個基于 Python 的云原生 TodoList Demo 項目&#xff0c;涵蓋 容器化、Kubernetes 編排、CI/CD、可觀測性、彈性擴縮容 等核心云原生特性&#xff0c;代碼簡潔且附詳細操作指南&#xff0c;適合入門學習。項目概覽 目標&#xff1a;實現一個支持增刪改查&#xff08;CR…

go 日志的分裝和使用 Zap + lumberjack

自帶的log無法滿足 按大小輪轉 &#xff0c;按天數清理舊日志 &#xff0c;自動壓縮 &#xff0c;限制備份數量 &#xff0c;防止磁盤寫滿 &#xff0c;生產環境推薦 等 使用 Zap lumberjack package mainimport ("go.uber.org/zap""go.uber.org/zap/zapcore&q…

【.Net技術棧梳理】01-核心框架與運行時(CLR)

文章目錄1 .NET Runtime&#xff08;CLR-公共語言運行時&#xff09;1.1 中間語言 IL1.1.1 從源代碼到通用中間語言&#xff08;IL&#xff09;1.1.2 運行時加載&#xff1a;CLR登場1.1.3 核心步驟&#xff1a;即時編譯 (JIT Compilation)1.1.4 執行與內存管理&#xff08;GC&a…

Claude Code 平替:OpenAI發布 Codex CLI ,GPT-5 國內直接使用

openai推出的命令行編程工具codex已經可以使用最新 GPT-5 模型&#xff0c;擁有可媲美 Claude Code 的 AI 編碼能力。本文將指導你在 Windows 系統上部署原生的 Codex CLI 程序&#xff0c;并接入超低價中轉 API&#xff0c;讓你在國內直接用上超高性價比的 OpenAI Codex CLI 應…

在VS2022的WPF仿真,為什么在XAML實時預覽點擊 ce.xaml頁面控件,卻不會自動跳轉到具體代碼,這樣不方便我修改代碼,

在VS2022的WPF仿真&#xff0c;為什么在XAML實時預覽點擊 WpfApp1\FunctionalModule\08Replace\Replace.xaml頁面控件&#xff0c;卻不會自動跳轉到具體代碼&#xff0c;這樣不方便我修改代碼&#xff0c;

Git Bash 別名

有些常用的指令參數非常多&#xff0c;每次都要輸入好多參數&#xff0c;我們可以使用別名。Linux 系統中很多 shell&#xff0c;包括 bash&#xff0c;sh&#xff0c;zsh&#xff0c;dash 和 korn 等&#xff0c;不管哪種 shell 都會有一個 .bashrc 的隱藏文件&#xff0c;它就…

Centos7部署ceph存儲

一、準備5臺centos7主機 node節點雙網卡&#xff08;1個內部檢測&#xff0c;1個外部使用&#xff09;node節點都添加新網卡關閉防火墻和上下文都需要添加hosts文件都需要cat > /etc/hosts << EOF > 127.0.0.1 localhost localhost.localdomain localhost4 loca…

2025.9.10總結

今日感悟&#xff1a;刷到00后下班去菜市場撿菜的熱點視頻&#xff0c;確實挺有意思&#xff0c;不得不說&#xff0c;又省錢又好玩。雖然每天晚上能免費領個25塊錢的水果回去&#xff0c;但確實沒有什么新鮮感了。別人下班還能撿撿菜放松下&#xff0c;我下班&#xff0c;除了…

【數據結構與算符Trip第2站】稀疏數組

稀疏sparsearray數組 什么是稀疏數組&#xff1f; 稀疏數組是一種特殊的數據結構&#xff0c;用于高效存儲和表示大部分元素為零&#xff08;或默認值&#xff09;的數組。它通過只存儲非零元素的位置和值來節省內存空間。是一種壓縮數組。 實現原理 在Go語言中&#xff0c;稀疏…