全網最全圖解Kafka適用場景

来源:https://www.cnblogs.com/JavaEdge/archive/2023/11/24/17853540.html
-Advertisement-
Play Games

消息系統 消息系統被用於各種場景,如解耦數據生產者,緩存未處理的消息。Kafka 可作為傳統的消息系統的替代者,與傳統消息系統相比,kafka有更好的吞吐量、更好的可用性,這有利於處理大規模的消息。 根據經驗,通常消息傳遞對吞吐量要求較低,但可能要求較低的端到端延遲,並經常依賴kafka可靠的dur ...


消息系統

消息系統被用於各種場景,如解耦數據生產者,緩存未處理的消息。Kafka 可作為傳統的消息系統的替代者,與傳統消息系統相比,kafka有更好的吞吐量、更好的可用性,這有利於處理大規模的消息。

根據經驗,通常消息傳遞對吞吐量要求較低,但可能要求較低的端到端延遲,並經常依賴kafka可靠的durable機制。

在這方面,Kafka可以與傳統的消息傳遞系統(ActiveMQ 和RabbitMQ)相媲美。

存儲系統

寫入到kafka中的數據是落地到了磁碟上,並且有冗餘備份,kafka允許producer等待確認,通過配置,可實現直到所有的replication完成複製才算寫入成功,這樣可保證數據的可用性。

Kafka認真對待存儲,並允許client自行控制讀取位置,你可以認為kafka是-種特殊的文件系統,它能夠提供高性能、低延遲、高可用的日誌提交存儲。

日誌聚合

日誌系統一般需要如下功能:日誌的收集、清洗、聚合、存儲、展示。Kafka常用來替代其他日誌聚合解決方案。

和Scribe、Flume相比,Kafka提供同樣好的性能、更健壯的堆積保障、更低的端到端延遲。
日誌會落地,導致kafka做日誌聚合更昂貴。

kafka可實現日誌的:

  • 清洗(需編碼)
  • 聚合(可靠但昂貴,因需落地磁碟)
  • 存儲

ELK是現在比較流行的日誌系統。在kafka的配合 下才是更成熟的方案,kafka在ELK技術棧中,主要起到buffer的作用,必要時可進行日誌的匯流。

系統監控與報警

與日誌分析系統類似,我們需要收集系統指標以進行監控和故障排除。
區別在於指標是結構化數據,而日誌是非結構化文本。指標數據發送到 Kafka 併在 Flink 中聚合。聚合數據由實時監控儀錶板和警報系統(例如 PagerDuty)使用。

Commit Log

Kafka 可充當分散式系統的一種外部提交日誌。日誌有助於在節點之間複製數據,並充當故障節點恢複數據的重新同步機制。

Kafka 中的日誌壓縮功能有助於支持這種用法。

跟蹤網站活動 - 推薦系統

kafka的最初始作用就是,將用戶行為跟蹤管道重構為一組實時發佈-訂閱源。
把網站活動(瀏覽網頁、搜索或其他的用戶操作)發佈到中心topics中,每種活動類型對應一個topic。基於這些訂閱源,能夠實現一系列用例,如實時處理、實時監視、批量地將Kafka的數據載入到Hadoop或離線數倉系統,進行離線數據處理並生成報告。

每個用戶瀏覽網頁時都生成了許多活動信息,因此活動跟蹤的數據量通常非常大。(Kafka實際應用)

像亞馬遜這樣的電子商務網站使用過去的行為和相似的用戶來計算產品推薦。
下圖展示了推薦系統的工作原理。 Kafka 傳輸原始點擊流數據,Flink 對其進行處理,模型訓練則使用來自數據湖的聚合數據。

img這使得能夠持續改進每個用戶的推薦的相關性。 Kafka 的另一個重要用例是實時點擊流分析。

流處理 - kafka stream API

Kafka社區認為僅僅提供數據生產、消費機制是不夠的,他們還要提供流數據實時處理機制

從0.10.0.0開始, Kafka通過提供Strearms API來提供輕量,但功能強大的流處理。實際上就是Streams API幫助解決流引用中一些棘手的問題,比如:

  • 處理無序的數據
  • 代碼變化後再次處理數據
  • 進行有狀態的流式計算

Streams API的流處理包含多個階段,從input topics消費數據,做各種處理,將結果寫入到目標topic, Streans API基於kafka提供的核心原語構建,它使用kafka consumer、 producer來輸入、輸出,用Kfka來做狀態存儲。

流處理框架: flink、spark streaming、Storm本是正統流處理框架,Kafka在流處理更多扮演流存儲角色。

CDC( Change data capture,變更數據捕獲)

  • CDC將資料庫變化流式傳輸到其他系統,以進行複製或緩存/索引更新
  • Kafka 還是構建data pipeline的絕佳工具,使用它從各種來源獲取數據、應用處理規則並將數據存儲在倉庫、數據湖或數據網格中
  • 如下,事務日誌發送到 Kafka 並由 ElasticSearch、Redis 和輔助資料庫攝取。

img

系統遷移

升級遺留服務具有挑戰性:

  • 舊語言
  • 複雜邏輯
  • 缺乏測試

可利用MQ降低風險。

為升級訂單服務,更新舊的訂單服務以消費來自 Kafka 的輸入並將結果寫入 ORDER topic。新訂單服務使用相同的輸入並將結果寫入 ORDERNEW topic:

Reconciliation調節服務比較 ORDER 和 ORDERNEW。如果它們相同,則新服務通過測試。

事件溯源

如果將事件作為系統中的一等公民(即事實來源),那存儲應用程式的狀態就是一系列事件,系統中的其他所有內容都可根據這些持久且不可變的事件重新計算。

事件溯源就是捕獲一系列事件中狀態的變化。通常使用 Kafka 作為主要事件存儲。如果發生任何故障、回滾或需要重建狀態,可隨時重新應用 Kafka 中的事件。

本文由博客一文多發平臺 OpenWrite 發佈!


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

-Advertisement-
Play Games
更多相關文章
  • 十六、C++字元串(一) 1、原生字元串實現將兩個字元串拼接 //原生字元串實現將兩個字元串拼接 #include <iostream> #include <locale> int main() { char strA[0x10] = "123"; //定義字元串 char strB[0x10] = ...
  • ReentrantReadWriteLock讀寫鎖 樂觀鎖和悲觀鎖 樂觀鎖 樂觀鎖,就是給需要共用的數據,添加一個版本號version,例如1,每次有線程更新共用數據後,version+1,每次線程進行數據更新時,要比較當前線程持有的數據的版本號,相等則修改,不相等則不修改,支持併發訪問。 悲觀鎖 ...
  • 哈嘍大家好,我是鹹魚 接觸過 Python 的小伙伴應該對【字典】這一數據類型都瞭解吧 雖然 Python 沒有顯式名稱為“哈希表”的內置數據結構,但是字典是哈希表實現的數據結構 在 Python 中,字典的鍵(key)被哈希,哈希值決定了鍵對應的值(value)在字典底層數據存儲中的位置 那麼今天 ...
  • 0 大綱 [Apache Flink]2017年12月發佈的1.4.0版本開始,為流計算引入里程碑特性:TwoPhaseCommitSinkFunction。它提取了兩階段提交協議的通用邏輯,使得通過Flink來構建端到端的Exactly-Once程式成為可能。同時支持: 數據源(source) 和 ...
  • 一眨眼明天就周末了,一周過的真快! 今天咱們用Python來實現一下動態網頁數據的抓取 最近不是有消息說世界首富馬上要變成中國人了嗎,這要真成了,可就是歷史上首位中國世界首富了! 那我們就以富豪排行榜為例,爬取一下2023年國內富豪五百強,最後實現一下可視化分析。 準備工作 環境使用 Python ...
  • 來源:levelup.gitconnected.com/how-to-design-a-system-to-scale-to-your-first-100-million-users-4450a2f9703d 1 從頭開始 2 可擴展性的藝術 3 使用負載均衡器來均衡所有節點上的流量 4 擴展關係數 ...
  • 因PDF文檔具有較好的穩定性和相容性,現在越來越多的合同、研究論文、報告等都採用PDF格式。為了進一步保護這些重要文檔內容免受未經授權的複製或使用,我們可以添加水印以表明其狀態、所有權或用途。針對工作中可能出現的在 C++ 應用程式中給 PDF 文檔添加文字水印的需求,本文將詳細展示如何通過第三方國 ...
  • wmproxy wmproxy已用Rust實現http/https代理, socks5代理, 反向代理, 靜態文件伺服器,四層TCP/UDP轉發,七層負載均衡,內網穿透,後續將實現websocket代理等,會將實現過程分享出來,感興趣的可以一起造個輪子 項目地址 國內: https://gitee. ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...