應用角度看kafka的術語和功能

来源:https://www.cnblogs.com/xiexj/archive/2019/10/06/11626676.html
-Advertisement-
Play Games

kafka的術語(Terminology) Topic 和Consumer Group Topic 每條發佈到 Kafka 集群的消息都有一個類別,這個類別被稱為 Topic。(物理上不同 Topic 的消息分開存儲,邏輯上一個 Topic 的消息雖然保存於一個或多個 broker 上但用戶只需指定 ...


kafka的術語(Terminology)

Topic 和Consumer Group 

Topic 每條發佈到 Kafka 集群的消息都有一個類別,這個類別被稱為 Topic。(物理上不同 Topic 的消息分開存儲,邏輯上一個 Topic 的消息雖然保存於一個或多個 broker 上但用戶只需指定消息的 Topic 即可生產或消費數據而不必關心數據存於何處)

對應用來說,生產者要發佈消息,必須指定一個主題topic。以確定發到哪裡了。 

Consumer Group  消費組,每個Consumer 屬於一個特定的 Consumer Group(可為每個 Consumer 指定 group name,若不指定 group name 則屬於預設的 group)。

這個概念是和Topic對應的。

一個topic可以有多個消費組進行消費。

一般一個服務創建一個消費組。

如下圖


上面兩個的使用可以用下圖來表示:

 

Producer和Consumer

Producer 負責發佈消息到 Kafka broker

從應用上來說,就是寫代碼的時候用工廠模式簡歷生產者,基本上保證一個服務就是一個生產者往隊列里發送數據。

一般來說,一臺伺服器會起一個生產者。但是也不一定,某個大神寫個死迴圈建立一堆生產者直到記憶體溢出也是可以實現的。

Consumer 消息消費者,向 Kafka broker 讀取消息的客戶端。

和生產者相對應,一臺伺服器會起一個消費者。同理,寫個死迴圈建立一堆消費者直到記憶體溢出也是可以實現的。

 

Partition和Broker

Partition 物理上的概念,每個 Topic 包含一個或多個 Partition。這種服務就是這麼設計,數據太大了,就分成小片。所有的小片合起來完成一個功能,這裡完成一個topic。

Broker  集群包含一個或多個伺服器,這種伺服器被稱為 broker。

對應用來說,生產者把消費發出去了,就不管了。消費者慢條斯理的按照自己的速率來消費。這段時間可能有大量消息產生,消費者壓力還是在一定範圍內。做生產者和消費者之間解耦的就是一個緩存服務broker。

以上用一張圖表示如下:

應用場景

基本應用

  1. 用於解耦生產端和消費端。比如兩個團隊需要共用相同的數據,但是數據只能由一方來存儲。另一方需要的數據可以通過作為消息的一個消費者進行消息消費。

  2. 用於增加併發度。一個http調用內部邏輯複雜。可以將這個調用分為兩階段處理。第一階段校驗調用的合法性。將校驗結果和查詢號返回客戶端。這個階段處理簡單,可以支撐很高的併發度。如果校驗合法發送消息進行執行階段處理。因為MQ消息消費速率相對恆定,不會壓垮服務。客戶端可以通過單號查詢結果。

高級應用

死信

消息隊列里的消息如果設定延時消費,則這條消息就會阻塞後面正常的消息直到這條消息被消費。解決辦法是使用另外的隊列來存放這些會阻塞的消息。這就是死信隊列。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. github上搜索vue-awesome-swiper 2. readme中有安裝方法,建議在插件名後@版本號,使用穩定的老版本 npm install [email protected] --save 3. 在項目main.js中引入 4.創建單文件組件Swiper.vue(單 ...
  • 3)html當中如何引用js文件如果需要javascript工程師和html美工各乾各的工作,需要分開寫文件。例 1.2<html><head> <script src="Hello.js"></script> <title></title></head><body></body></html>He ...
  • 字元串值,數值,布爾值,數組,對象。 JavaScript 數據類型 JavaScript 變數能夠保存多種數據類型:數值、字元串值、數組、對象等等: var length = 7; // 數字 var lastName = "Gates"; // 字元串 var cars = ["Porsche" ...
  • 要向HTML DOM添加新元素,必須首先創建元素(元素節點),然後將其附加到現有元素。 appendChild()上一個示例中的方法將新元素作為父項的最後一個子項附加。如果您不希望可以使用insertBefore()方法: 要將元素替換為HTML DOM,請使用以下replaceChild()方法: ...
  • 背景 事情是這樣的。一天下午4點42分左右。業務反饋我開發的服務在測試環境出現問題,返回資源數據是0。查日誌發現是ES訪問超時。相當於資料庫掛了。持續了20多分鐘自己恢復。咨詢了ES團隊,最終得到下麵的答覆: 調查 1.需要換成本地磁碟,測試環境也是我們的正式環境。是否能直接替換成物理機?多少台合適 ...
  • 聲明:本文是一個系列原創(作者在GIS+BIM行業已有從業15年有餘,還是個行業的小學生,文章內容不免有錯誤或者不當之處,敬請理解),旨在通過這個系列打造一個高性能,高可擴展的GIS+BIM框架,拋磚引玉,為國內GIS+BIM行業貢獻綿薄之力。 對於行業內的人說到GIS、BIM最先想到是:引擎,是的 ...
  • 觀察者模式(Observer): 指多個對象間存在一對多的依賴關係,當一個對象的狀態發生改變時,所有依賴於它的對象都得到通知並被自動更新。 觀察者模式的角色: 1)抽象目標(Subject):也叫抽象目標類,它提供了一個用於保存觀察者對象的聚集類和增加、刪除觀察者對象的方法,以及通知所有觀察者的抽象 ...
  • 責任鏈模式: 下圖為責任鏈 1、定義:為了避免請求發送者與多個請求處理者耦合在一起,將所有請求的處理者通過前一對象 記住其下一個對象的引用而連成一條鏈;當有請求發生時,可將請求沿著這條鏈傳遞,直到有對象處理它為止 2、模型結構: (1)抽象處理者(Handler):定義一個處理請求的介面,包含抽象處 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...