關于kafka

1.為什么需要消息隊列

舉個經典的例子。

你是一個網購達人,經常在網上購物。快遞小哥到了你的小區后,立刻給你打電話說:“你的快遞到了,請馬上來取。”

但你是一個合格的牛馬,在上班,不方便取快遞,只能等下班才能取快遞。那快遞小哥總不能一直傻等著你下班吧,他還有很多其他人的快遞要送。不管是你請假拿快遞,還是小哥干等著你來取快遞,這都會影響效率。

因此,快遞柜、快遞站應用而生,他的身份就是消息隊列。它充當了一個緩沖區的角色,快遞小哥按照自己的時間安排送快遞,我們按照自己的時間安排取快遞,如此一來,就解決了快遞員和你之間的時間差溝通效率問題。

總結一下,消息中間件出現帶來的好處:
1、 解耦
  快遞小哥手上有很多快遞需要送,他每次都需要先電話一一確認收貨人是否有空、哪個時間段有空,然后再確定好送貨的方案。這樣完全依賴收貨人了!如果快遞一多,快遞小哥估計的忙瘋了……如果有了快遞站,快遞小哥只需要將同一個小區的快遞放在同一個快遞站,然后通知收貨人來取貨就可以了,這時候快遞小哥和收貨人就實現了解耦!

2、 異步
  快遞小哥打電話給我后需要一直在你樓下等著,直到我拿走你的快遞他才能去送其他人的。快遞小哥將快遞放在快遞站后,又可以干其他的活兒去了,不需要等待你到來而一直處于等待狀態。提高了工作的效率。

3、 削峰
  假設雙十一我買了不同店里的各種商品,而恰巧這些店發貨的快遞都不一樣,有中通、圓通、申通、各種通等……更巧的是他們都同時到貨了!中通的小哥打來電話叫我去北門取快遞、圓通小哥叫我去南門、申通小哥叫我去東門。我一時手忙腳亂……此時,一個菜鳥驛站就解決了這些問題。

2.什么是kafka,應用場景

kafka是基于發布/訂閱的分布式消息系統。具有消息持久化速度快、高吞吐、高容錯、易擴展的特點。

kafka的作用和好處是:解耦、異步、削峰

Kafka的主要應用場景有:

  1. 消息隊列:用作高吞吐量的消息系統,將消息從一個系統傳遞到另一個系統。
  2. 日志收集:集中收集日志數據,然后通過Kafka傳遞到實時監控系統或存儲系統。
  3. 流計算:處理實時數據流,將數據傳遞給實時計算系統,如Apache Storm或Apache Flink。
  4. 事件溯源:記錄事件發生的歷史,以便稍后進行數據回溯或重新處理。

3.kafka的集群架構

?推薦視頻:詳細原理_嗶哩嗶哩_bilibili

3.1架構圖

3.2.kafka基本架構包括的組件及作用

Kafka 的基本架構主要包括四個組件:Producer(生產者)、Consumer(消費者)、Broker(消息代理)和 Zookeeper(協調器)

  1. Producer(生產者):負責將數據發布到 Kafka 的特定 Topic 上。它會根據要求將數據以不同的分區策略分布到各個分區里。
  2. Consumer(消費者):從 Kafka 的 Topic 中讀取數據。消費者可以屬于某個消費組(Consumer Group),這樣可以讓多個消費者平衡負載讀取數據。
  3. Broker(消息代理):是 Kafka 的核心。Kafka 集群由一個或多個服務器組成,每個服務器被稱為 Broker。Broker 負責接收消息、記錄消息、響應消費者請求等。
  4. Zookeeper(協調器):用于 Kafka 的分布式協調和管理任務,比如存儲 Broker 的元數據信息、管理集群成員關系、主題配置、選舉 Leader。Zookeeper 確保 Kafka 集群的高可用性和一致性。

其他名詞解釋:

  • Topic:Topic 是特定類型的消息流。Kafka 中的消息被歸類為不同的主題,生產者將數據發送到特定的主題,消費者從特定的主題讀取數據。
  • Partition:每個 Topic 可以分成多個 Partition(分區),以便于擴展和提高并行處理能力。每個 Partition 都是一個有序的、不可變的消息序列,并且可以持續地添加消息。
  • Leader and Follower:在 Partition 的副本中,有一個副本是 Leader,其他副本則是 Followers。Leader 副本負責處理所有針對該 Partition 的讀寫請求,Follower 副本會同步 Leader 的數據作為備份。
  • Replication:每一個分區都有多個副本,副本的作用是做備胎。當主分區(Leader)故障的時候會選擇一個備胎(Follower)上位,成為Leader。在kafka中默認副本的最大數量是10個,且副本的數量不能大于Broker的數量,follower和leader絕對是在不同的機器,同一機器對同一個分區也只可能存放一個副本(包括自己)。
  • Offset:Offset 是 Partition 中每條消息的唯一標識符,它是一個單調遞增的整數。消費者通過 Offset 來追蹤其消費進度。
  • Consumer Group:一組 Consumers 可以組成一個 Consumer Group,用于共同消費同一個 Topic 下的消息。Kafka 確保每條消息只會被同一個 Consumer Group 中的一個 Consumer 處理。

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

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

相關文章

微服務即時通信系統(十二)---入口網關子服務

目錄 功能設計 模塊劃分 業務接口/功能示意圖 服務實現流程 網關HTTP接口 網關WebSocket接口 總體流程 服務代碼實現 客戶端長連接管理封裝(connectionManage.hpp) proto文件的編寫 身份鑒權proto 事件通知proto 各項請求的URL的確定 服務端完成入口網關服務類…

存儲器層次結構:理解計算機記憶的金字塔

存儲器層次結構:理解計算機記憶的金字塔 在計算機系統中,“速度”與“成本”常常處于對立面。為了在速度與成本之間取得平衡,計算機體系結構采用了一種名為“存儲器層次結構(Memory Hierarchy)”的設計思想。本文將通…

HTTP 錯誤 500.19 - Internal Server Error

1.HTTP 錯誤 500.19 - Internal Server Error NetCore項目托管到IIS后,報錯如下: 原因是因為IIS中沒有安裝AspNetCoreModuleV2導致的, 1.打開IIS 2.選中服務器根節點,找到模塊,雙擊進入,確認模塊中是否存…

【c++】【STL】stack詳解

目錄 stack類的作用什么是容器適配器stack的接口構造函數emptysizetoppushpopswap關系運算符重載 stack類的實現 stack類的作用 stack是stl庫提供的一種容器適配器,也就是我們數據結構中學到的棧,是非常常用的數據結構,特點是遵循LIFO&#…

K8s學習與實踐

一、Kubernetes 核心原理 1. Kubernetes 設計哲學 Kubernetes(k8s)是一個開源的容器編排平臺,旨在自動化容器化應用的部署、擴展和管理。其核心設計圍繞以下目標: 聲明式配置:用戶描述期望狀態(如 YAML …

Umi-OCR項目(1)

最近接觸到了一個項目,我在想能不能做出點東西出來。 目標:識別一張帶表格的圖片,要求非表格內容和表格內容都要識別得很好,并且可視化輸出為word文檔。 下面是第一步的測試代碼,測試是否能夠調用ocr能力。 import re…

Mioty|采用報文分割(Telegram Splitting)以提高抗干擾能力的無線通信技術【無線通信小百科】

1、什么是Mioty 在物聯網(IoT)快速發展的背景下,低功耗廣域網(LPWAN)技術成為連接海量設備的關鍵。LPWAN具有低功耗、低成本、廣覆蓋和強抗干擾能力等特點,使其特別適用于大規模、遠距離、低數據速率的IoT…

TCP三次握手、四次揮手+多線程并發處理

目錄 一、三次握手建立連接 1.1 標記位 1.2 三次握手的過程 二、四次揮手斷開連接 三、模擬服務器和客戶端收發數據 四、多線程并發處理 五、TCP粘包問題 5.1 什么是TCP粘包? 5.2 TCP粘包會有什么問題? 5.3 TCP粘包的解決方法? 一、三…

使用HunyuanVideo搭建文本生視頻大模型

1.摘要 HunyuanVideo是一個全新的開源視頻基礎模型,其視頻生成性能堪比領先的閉源模型,甚至超越它們。我們采用了多項模型學習的關鍵技術,通過有效的模型架構和數據集擴展策略,我們成功訓練了一個擁有超過 130 億個參數的視頻生成…

LabVIEW圓錐滾子視覺檢測系統

基于LabVIEW平臺的視覺檢測系統提高圓錐滾子內組件的生產質量和效率。通過集成高分辨率攝像頭和先進的圖像處理算法,系統能夠自動識別和分類產品缺陷,從而減少人工檢查需求,提高檢測的準確性和速度。 ?? ? 項目背景 隨著制造業對產品質…

mac 基于Docker安裝minio服務器

在 macOS 上基于 Docker 安裝 MinIO 是一個高效且靈活的方案,尤其適合本地開發或測試環境。以下是詳細的安裝與配置步驟,結合了最佳實踐和常見問題的解決方案: 一、安裝 Docker Desktop 下載安裝包 訪問 Docker 官網,下載適用于 …

EchoMimicV2 部署記錄

在這里插入代碼片# 虛擬環境配置 pip install pip -U pip install torch2.5.1 torchvision0.20.1 torchaudio2.5.1 xformers0.0.28.post3 --index-url https://download.pytorch.org/whl/cu124 pip install torchao --index-url https://download.pytorch.org/whl/nightly/cu1…

數據升降級:醫療數據的“時空穿梭“系統工程(分析與架構篇)

一、核心挑戰與量化分析 1. 版本演化困境的深度解析 (1) 格式斷層的結構化危機 數據轉換黑洞:某醫療信息平臺(2021-2023)統計顯示: 數據類型CDA R1→R2轉換失敗率R2→FHIR轉換失敗率關鍵失敗點診斷記錄28.4%19.7%ICD編碼版本沖突(18.7%)用藥記錄15.2%12.3%劑量單位標準化…

個人開發免費好用

聊一聊 現在輸入法非常多,有時候都不知道哪個更好用。 其實,只有多嘗試,才能找到適合自己的。 今天給大家分享一款輸入法,用起來比較順手,大家可以試試。 軟件介紹 BL輸入法 這是一款綠色純凈,安全放心…

Windows查看和修改IP,IP互相ping通

Windows系統 查看IP地址 winr 輸入cmd 打開終端使用 ipconfig 或 ipconfig -all 命令查看當前網絡 IPV4地址 Windows系統 修改IP地址 自動獲取IP(DHCP): 打開 控制面板,點擊 網絡和Internet。點擊 網絡和共享中心。選擇 更改適配…

【IP101】圖像處理基礎:從零開始學習顏色操作(RGB、灰度化、二值化、HSV變換)

🎨 顏色操作詳解 🌟 在圖像處理的世界里,顏色操作就像是一個魔術師的基本功。今天,讓我們一起來解鎖這些有趣又實用的"魔法"吧! 📚 目錄 通道替換 - RGB與BGR的"調包"游戲灰度化 - 讓…

windows系統搭建自己的ftp服務器,保姆級教程(用戶驗證+無驗證)

前言 最近在搭建環境時,我發現每次都需要在網上下載依賴包和軟件,這不僅耗時,而且有時還會遇到網絡不穩定的問題,導致下載速度慢或者中斷,實在不太方便。于是,我產生了搭建一個FTP服務器的想法。通過搭建FT…

藍橋杯 7. 晚會節目單

晚會節目單 原題目鏈接 題目描述 小明要組織一臺晚會,總共準備了 n 個節目。然而晚會時間有限,他只能從中選擇 m 個節目。 這 n 個節目是按照小明設想的順序給定的,順序不能改變。 小明發現觀眾對于晚會的喜歡程度與前幾個節目的好看程度…

JavaScript如何實現類型判斷?

判斷一個數據的類型,常用的方法有以下幾種: typeofinstanceofObject.prototype.toString.call(xxx) 下面來分別分析一下這三種方法各自的優缺點 typeof typeof的本意是用來判斷一個數據的數據類型,所以返回的也是一個數據類型。但是會遇到下…

哈希表筆記(四)Redis對比Java總結

文章目錄 一、基礎結構對比數據結構定義Java HashMapRedis字典 主要區別與設計思路 二、關鍵操作API對比初始化Java HashMapRedis字典 添加元素Java HashMapRedis字典 查找元素Java HashMapRedis字典 刪除元素Java HashMapRedis字典 擴容/重哈希操作Java HashMapRedis字典 三、…