【Kafka】2.深入理解Kafka事件流平臺及其核心概念

1.事件流(Event streaming)

事件流是人體中樞神經系統的數字化的等價物。它是構建“始終在線”世界的技術基礎,在這個世界中,企業越來越多地被定義為軟件化和自動化,而軟件的用戶本身也是軟件。

從技術上講,事件流是從數據庫、傳感器、移動設備、云服務和軟件應用程序等事件源實時捕獲數據的做法,以事件流的形式;將這些事件流持久化存儲以供以后檢索;實時以及回顧性地操作、處理和響應事件流;并根據需要將事件流路由到不同的目標技術。因此,事件流確保了數據的持續流動和解釋,以便正確的信息在正確的地點,正確的時間可用。

2.事件流作用

事件流適用于各種用例,跨越眾多行業和組織。它的許多例子包括:

  • 實時處理支付和金融交易,例如在證券交易所、銀行和保險公司。
  • 實時跟蹤和監控汽車、卡車、車隊和貨物,例如在物流和汽車行業。
  • 持續捕獲和分析來自IoT設備或其他設備的傳感器數據,例如在工廠和風力公園。
  • 收集并立即響應客戶互動和訂單,例如在零售、酒店和旅游行業以及移動應用程序中。
  • 在醫院護理中監測患者并預測病情變化,以確保在緊急情況下及時治療。
  • 連接、存儲并使公司不同部門產生的數據可用。
  • 作為數據平臺、事件驅動架構和微服務的基礎。

3.Kafka是一個事件流平臺意味著什么?

Kafka結合了三個關鍵能力,因此您可以使用一個經過實戰考驗的解決方案端到端實現您的事件流用例:

  • 發布(寫入)和訂閱(讀取)事件流,包括從其他系統中持續導入/導出您的數據。
  • 持久可靠地存儲事件流,只要您需要。
  • 實時或回顧性地處理事件流。

所有這些功能都以分布式、高度可擴展、彈性、容錯和安全的方式提供。Kafka可以在裸機硬件、虛擬機上部署,也可以在容器中部署,在本地以及云中。您可以選擇自行管理Kafka環境或使用各種供應商提供的全托管服務。

4.Kafka如何運作?

Kafka是一個由服務器和客戶端組成的分布式系統,通過高性能的TCP網絡協議進行通信。它可以在本地硬件、虛擬機和容器上部署,在本地以及云環境中。

服務器: Kafka作為一臺或多臺服務器的集群運行,可以跨越多個數據中心或云區域。其中一些服務器形成存儲層,稱為代理。其他服務器運行Kafka Connect,以持續地將數據作為事件流導入和導出,將Kafka與您現有的系統集成,例如關系數據庫以及其他Kafka集群。為了讓您實現關鍵任務用例,Kafka集群具有高度的可擴展性和容錯性:如果任何服務器失敗,其他服務器將接管它們的工作,以確保不間斷的操作,而不會丟失任何數據。

客戶端: 它們允許您編寫分布式應用程序和微服務,以并行、大規模和容錯的方式讀取、寫入和處理事件流,即使在網絡問題或機器故障的情況下也是如此。Kafka隨附了一些這樣的客戶端,這些客戶端由Kafka社區提供的數十個客戶端增強:客戶端可用于Java和Scala,包括更高級別的Kafka Streams庫,適用于Go、Python、C/C++等許多其他編程語言,以及REST API。

5.主要概念和術語

事件記錄了“某事發生”的事實,無論是在世界還是您的業務中。它也稱為記錄或消息(Message)。當您讀取或寫入Kafka中的數據時,您是通過事件的形式進行的。概念上,一個事件有一個鍵、值、時間戳和可選的元數據頭。這里是一個示例事件:

  • 事件鍵:“Alice”
  • 事件值:“向Bob支付了200美元”
  • 事件時間戳:“2020年6月25日下午2:06”
    生產者(Producer)是發布(寫入)事件到Kafka的客戶端應用程序,消費者(Consumer)是訂閱(讀取和處理)這些事件的應用程序。在Kafka中,生產者和消費者是完全解耦的,并且彼此不知情,這是實現Kafka眾所周知的高可擴展性的關鍵設計元素。例如,生產者永遠不需要等待消費者。Kafka提供了各種保證,例如能夠精確處理事件的能力。

事件被組織并持久地存儲在主題(Topic)中。非常簡化地說,主題類似于文件系統中的文件夾,事件是該文件夾中的文件。一個示例主題名稱可能是“payments”。Kafka中的主題始終是多生產者和多訂閱者:一個主題可以有零、一個或多個生產者將事件寫入其中,以及零、一個或多個消費者訂閱這些事件。主題中的事件可以根據需要讀取盡可能多次 - 與傳統的消息系統不同,事件在消費后不會被刪除。相反,您通過每個主題的配置設置定義Kafka應該保留您的事件多長時間,之后舊的事件將被丟棄。Kafka的性能對于數據大小實際上是恒定的,因此長時間存儲數據完全沒有問題。

主題是分區(Partition)的,這意味著主題分布在位于不同Kafka代理上的“桶”上。您的數據的分布式放置對于可擴展性非常重要,因為它允許客戶端應用程序同時從/向許多代理讀取和寫入數據。當發布到主題的新事件時,它實際上被追加到主題的某個分區中。具有相同事件鍵(例如,客戶或車輛ID)的事件被寫入到同一個分區中,并且Kafka保證任何給定主題-分區的消費者總是能夠按照它們被寫入的完全相同的順序讀取那些分區中的事件。
 圖示:這個示例主題有四個分區P1-P4。兩個不同的生產者客戶端正獨立于彼此地向主題發布新事件,通過在網絡中向主題的分區寫入事件。具有相同鍵(在圖中用顏色表示)的事件被寫入同一個分區。請注意,如果適當,兩個生產者都可以向同一個分區寫入。
為了使您的數據具有容錯性和高可用性,每個主題都可以復制,甚至可以跨地理區域或數據中心復制,以便在出現問題、您想要對代理進行維護等情況下,始終有多個代理擁有數據的副本。一個常見的生產設置是3的復制因子,即,您的數據將始終有三份副本。這種復制是在主題-分區級別上執行的。

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

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

相關文章

vue2 雙向數據綁定的實現及原理

Oject.defineProperty() 是 JavaScript 中用于定義或修改對象的屬性的方法,可以控制屬性的特性(如可枚舉性、可配置性、可寫性等) Object.defineProperty(obj, prop, descriptor) obj:要在其上定義屬性的對象。 prop:要…

P7222 [RC-04] 信息學競賽

文章目錄 題目[RC-04] 信息學競賽題目描述輸入格式輸出格式樣例 #1樣例輸入 #1樣例輸出 #1 提示 思路AC代碼 題目 [RC-04] 信息學競賽 題目描述 小 R 今天學習了余角有關的數學知識,請你幫幫他計算一個角的余角吧! 一個角的余角的計算公式如下&#…

SHELL編程(一)

目錄 一、 Linux操作系統(一)內核與操作系統(二)操作系統的功能 二、Linux高級命令(一) 離線安裝 dpkg1. 安裝2. 使用3. 查看安裝詳細信息4. 安裝路徑5. 不完全刪除6. 完全刪除 (二)…

KNN算法用于回歸分析

生成數據集 from sklearn.datasets import make_regression import matplotlib.pyplot as plt# 生成特征數量為1, 噪音為50的數據集 X, y make_regression(n_features1, n_informative1, noise50, random_state8)# 散點圖 plt.scatter(X, y, c"orange",…

什么是TCP的粘包、拆包問題?

一、問題解析 TCP粘包和拆包問題是指在進行TCP通信時,因為TCP是面向流的,所以發送方在傳輸數據時可能會將多個小的數據包粘合在一起發送,而接收方則可能將這些數據包拆分成多個小的數據包進行接收,從而導致數據接收出現錯誤或者數…

uniapp swiper添加點擊切換 上一張 下一張

<view click"switchPrev"><text>上一張</text> </view> <view click"switchNext"><text>下一張</text> </view> <swiper class"swiper" circular :current"current"> data() {…

MySQL數據庫練習二

素材&#xff1a;表名&#xff1a;worker-- 表中字段均為中文&#xff0c;比如部門號、工資、職工號、參加工作等 CREATE TABLE worker (部門號 int(11) NOT NULL,職工號 int(11) NOT NULL,工作時間 date NOT NULL,工資 float(8,2) NOT NULL,政治面貌 varchar(10) NOT NULL DE…

歡樂釣魚大師攻略大全,新手釣魚入坑必備攻略!

《歡樂釣魚大師》是一款深受玩家喜愛的釣魚手游&#xff0c;在游戲中&#xff0c;玩家可以通過升級和更換魚竿來享受釣魚的樂趣&#xff0c;并有機會釣到各種稀有魚類。然而&#xff0c;很多玩家在闖關過程中遇到了不少困難。為了幫助大家更好地掌握游戲技巧&#xff0c;小編特…

4 軟件定義安全綜合:使用c/s模式進行控制器數據安全交互管理

在SDN三層結構中&#xff0c;我們通過OpenFlow 協議可以控制數據轉發設備的相關行為&#xff08;包括收集設備的信息&#xff09;&#xff0c;那么控制器上的數據能否通過應用層的程序進行管理調用呢&#xff1f; SDN&#xff08;軟件定義網絡&#xff09;的北向開發是指通過編…

ASUS Zenbook PE重裝系統后一直轉圈不斷重啟

問題描述&#xff1a; ASUS Zenbook PE重裝系統后一直轉圈不斷重啟 問題原因&#xff1a; RST驅動問題 解決辦法&#xff1a; 使用U盤安裝原版系統&#xff0c;安裝過程中&#xff0c;發現磁盤頁面沒有不識別硬盤&#xff0c;此時選擇加載驅動&#xff0c;加載RST驅動。一…

二進制搭建k8s

實驗環境&#xff1a; k8s集群master01:192.168.1.11 k8s集群master02:192.168.1.22 master虛擬ip&#xff1a;192.168.1.100 k8s集群node01:192.168.1.33 k8s集群node01:192.168.1.44 nginxkeepalive01&#xff08;master&#xff09;:192.168.1.55 nginxkeepalive02&a…

渲染農場是什么意思?瑞云渲染為你解答

渲染農場是一種通過集合多臺計算機的計算能力來加速圖像渲染過程的系統。它尤其適用于動畫、電影特效和高端視覺效果的制作&#xff0c;這些領域通常需要處理非常復雜和計算密集型的渲染任務。 渲染農場就是一大群電腦&#xff0c;他們一起可以快速渲染出漂亮的圖像。在做動畫片…

客觀需求驗證的常見5大步驟(實施版)

我們在挖掘用戶需求時&#xff0c;往往容易犯偽需求或需求錯位等問題&#xff0c;因此需要進行客觀需求驗證。通過客觀的驗證&#xff0c;我們可以有效減少主觀判斷誤差問題&#xff0c;確保需求的準確性&#xff0c;從而降低需求變更和項目風險的概率&#xff0c;減少開發成本…

LeetCode算法題:11. 盛最多水的容器(Java)(雙指針問題總結)

給定一個長度為 n 的整數數組 height 。有 n 條垂線&#xff0c;第 i 條線的兩個端點是 (i, 0) 和 (i, height[i]) 。 找出其中的兩條線&#xff0c;使得它們與 x 軸共同構成的容器可以容納最多的水。 返回容器可以儲存的最大水量。 提示&#xff1a; n height.length2 <…

第十四屆藍橋杯大賽軟件賽國賽C/C++ 大學 B 組 數三角

//枚舉頂點。 //不存在等邊三角形 #include<bits/stdc.h> using namespace std; #define int long long const int n2e311; int a,b,c,l[n],r[n]; signed main() {ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>a;for(int i1;i<a;i){cin>>…

UE4_環境_局部霧化效果

學習筆記&#xff0c;不喜勿噴&#xff01;侵權立刪&#xff01;祝愿大家生活越來越好&#xff01; 本文重點介紹下材質節點SphereMask節點在體積霧中的使用方法。 一、球體遮罩SphereMask材質節點介紹&#xff1a; 球體蒙版&#xff08;SphereMask&#xff09; 表達式根據距…

【筆記】Android Studio 版本信息

Android Studio Jellyfish | 2023.3.1 | Android Developers Android Studio 是開發 Android 應用的官方 IDE&#xff0c;包含構建 Android 應用所需的所有功能。 AS與AGP版本適用關系 AGP(Android Gradle plugin) Android gradle插件 Androdi Studio versionRequired AG…

2024紅帽全球峰會:CEO行業洞察分享

作為全球IT領域一年一度的行業盛宴&#xff0c;2024紅帽全球峰會于近日盛大召開。生成式AI與大模型是當前IT行業最受關注的熱點話題&#xff0c;而紅帽在生成式AI與大模型領域的最新動作&#xff0c;也理所當然地成為了本屆峰會觀眾目光聚集的焦點。 作為世界領先的開源解決方案…

使用vcpkg與json文件自動安裝項目依賴庫

說明 本文記錄自己使用vcpkg.json文件自動安裝依賴庫并完成編譯的全過程。 關于vcpkg是什么這里就不多詳細解釋&#xff0c;可以看一下專門的介紹及安裝的文章&#xff0c;總之了解這是一個C的包管理工具就可以了。 流程 下面介紹從GitHub上克隆C項目以及為這個項目安裝所需…

二叉樹的常見操作

建立樹 復制二叉樹 計算深度 計算總結點數 計算葉子結點數