事件流處理 (ESP) 與 Kafka 簡介

大資料技術前線發表於2023-11-06

來源:小技術君

讓我們從一個場景開始,以建立對我們討論主題的基本理解。現在大多數人都熟悉的是“忠誠度或獎勵計劃”。

顧客使用他們的信用卡/簽帳金融卡進行金融交易,購買雜貨、T恤、書籍...或者訂購度假時的航班和酒店房間...使用專用支付方式進行任何購買。

公司然後根據消費金額向顧客提供積分、里程、返現或福利。顧客可以使用這些積分/里程/返現/獎勵來獲得折扣、免費產品或會員特權。企業這樣做是為了激勵再次購買,並建立與顧客的信任。

事件流處理 (ESP) 與 Kafka 簡介

什麼是事件流處理 (ESP)? 那麼,這是如何發生的?我的信用卡公司是如何將我花的每一美元與適當的費用類別匹配,然後向我授予我可以用來預訂酒店房間或機票的里程數的?這就是“事件流處理 (ESP)”發揮作用的地方。ESP是一種能夠處理持續資料流(事件流)的技術,一旦事件或變化發生,就能立即處理。透過處理單個資料點而不是整個批次,事件流處理平臺提供了一種架構,使軟體能夠理解、對事件作出反應,並在事件發生時執行。

影像來源:tibco.com

ESP 平臺

讓我們從資料整合的角度來考慮這個過程,我們有一個從“源系統”開始的事件,其中包含有關新交易的資料,然後連線到“目標系統”,在那裡事件變化被載入、分析和轉換成期望的結果。只需幾行程式碼的簡單軟體可以執行此操作:

事件流處理 (ESP) 與 Kafka 簡介

影像來源:Learn Apache Kafka for Beginners

隨著源系統和/或目標系統的數量增加,資料整合挑戰也增加了。

事件流處理 (ESP) 與 Kafka 簡介

影像來源:Learn Apache Kafka for Beginners

因此,正如您所看到的,整合變得並不容易。源系統和/或目標系統的數量越多,就需要建立越多的整合,使架構變得非常複雜。此外,每個源系統可能會因來自目標系統的請求和連線數量增加而負擔過重。每個整合還會涉及協議、資料格式、資料模式和演變方面的困難。

這就是事件流處理平臺的用武之地。正如我們上面討論的,ESP平臺提供了一種使軟體能夠理解、對事件作出反應並在事件發生時執行的架構。

事件流處理 (ESP) 與 Kafka 簡介
事件流處理 (ESP) 與 Kafka 簡介

什麼是 Apache Kafka? — Kafka 是一種流行的事件流處理平臺。 與許多 ESP 平臺一樣,Kafka透過在源系統和目標系統之間引入解耦來解決資料整合挑戰:

Apache Kafka將收集、分類和儲存來自源系統(例如網站、定價資料、金融交易、使用者互動等)的所有資料。這些源系統被稱為“生產者”,它們生成 Kafka 資料流。當目標系統需要接收資料時,它們只需從 Kafka 資料中提取資料。因此,目標系統被稱為“消費者”。Kafka現在位於生成者接收資料和向消費者傳送資料之間。

它是如何工作的?

Kafka的工作方式與訊息佇列(例如 RabbitMQ)非常相似,但具有一些增強功能。Kafka有生產者和消費者的概念,正如前面討論過的。生產者將訊息推送到Kafka,而接收者獲取它們。許多訊息可能透過Kafka傳遞,因此為了區分它們並允許您隔離不同的處理上下文,Kafka將訊息分組到“主題”中。

每個試圖釋出某些內容的生產者都必須提供“主題名稱”。另一方面,消費者訂閱一組主題(可以同時有許多主題),然後從這些主題中獲取訊息。

事件流處理 (ESP) 與 Kafka 簡介

圖片來源:hevodata.com

總結一下,這些是關於Kafka的關鍵重要資訊:

生產者將訊息釋出到佇列,消費者獲取它們進行處理。消費者和生產者在一組被稱為主題的訊息上工作。這使您能夠隔離不同型別的訊息。消費者分組成消費者組,允許您將工作負載分佈到處於同一組的不同消費者例項中。消費者是Java應用程式,可以擴充套件以提供更多(或更少)的處理能力。每個主題分為分割槽 —— 單獨的訊息塊,具有一個分割槽內的順序保證。可以根據需要配置分割槽的數量。每條訊息由主題名稱、分割槽號和偏移量唯一標識。偏移量是從主題和分割槽存在的開始位置的訊息編號。提交的偏移量是儲存在Kafka中的偏移量,用於在消費者崩潰或重新啟動後恢復處理。可以將其視為檢查點。消費者位置是消費者內部使用的偏移量,用於跟蹤下一次輪詢時要獲取的訊息。

為什麼使用 Apache Kafka?

Kafka是一個開源專案。它具有分散式、彈性的架構,並且容忍故障(您可以對其進行修補和維護,而無需關閉整個系統)。Kafka具有橫向擴充套件性。該專案旨在提供一個統一的、高吞吐量、低延遲(低於10毫秒)的平臺,用於處理實時資料流。

Kafka被許多組織(如Netflix、Uber、LinkedIn等)和IT團隊用作訊息系統、活動跟蹤系統、流處理、微服務釋出/訂閱、應用程式日誌收集、度量資料收集、解耦系統依賴關係以及與其他大資料技術整合。

Netflix使用Kafka實時應用建議,當使用者在他們的應用上觀看電視節目時。Uber使用Kafka實時收集使用者和行程資料,以計算和預測需求以及價格漲跌情況。這就是為什麼您的Uber應用中相同行程的價格隨時都會發生變化。

Kafka是一個非常酷的平臺。我們可以使用Docker輕鬆在您的膝上型電腦上設定單節點Kafka叢集。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70027827/viewspace-2992981/,如需轉載,請註明出處,否則將追究法律責任。

相關文章