kafka基礎(chǔ)入門

Apache Kafka是一個事件流平臺,其結(jié)合了三個關(guān)鍵的功能八回,使你可以完成端到端的事件流解決方案岩遗。

  1. 發(fā)布(寫)和訂閱(讀)事件流,包括從其他系統(tǒng)連續(xù)導入/導出數(shù)據(jù)控轿。
  2. 事件流存儲具有持久性和可靠性冤竹。
  3. 可以處理當前時刻或者以往的事件流。

所有這些功能都是以分布式茬射、高度可伸縮鹦蠕、彈性、容錯和安全的方式提供的在抛。Kafka是一個分布式系統(tǒng)钟病,由服務端和客戶端組成,通過高性能的TCP網(wǎng)絡協(xié)議進行通信刚梭。Kafka可以部署在裸金屬硬件肠阱、虛擬機和容器上,也可以部署在云上朴读。您可以選擇自管理您的Kafka環(huán)境和使用由各種供應商提供的完全管理的服務屹徘。

服務端:

服務端:Kafka作為一個集群運行一個或多個服務器,可以跨越多個數(shù)據(jù)中心或云區(qū)域磨德。其中一些服務器構(gòu)成存儲層缘回,稱為brokers。其他服務器運行Kafka Connect來持續(xù)導入和導出數(shù)據(jù)作為事件流典挑,將Kafka與您現(xiàn)有的系統(tǒng)集成酥宴,如關(guān)系數(shù)據(jù)庫以及其他Kafka集群。為了讓你實現(xiàn)關(guān)鍵任務的用例您觉,Kafka集群具有高度的可擴展性和容錯性:如果它的任何一個服務器發(fā)生故障拙寡,其他服務器將接管它們的工作,以確保持續(xù)的操作而不丟失任何數(shù)據(jù)琳水。

客戶端:它們允許您編寫分布式應用程序和微服務肆糕,這些應用程序和微服務可以并行地、大規(guī)模地讀取在孝、寫入和處理事件流诚啃,甚至在出現(xiàn)網(wǎng)絡問題或機器故障的情況下也可以容錯。Kafka附帶了一些這樣的客戶端私沮,這些客戶端被Kafka社區(qū)提供的幾十個客戶端增強了:客戶端可以用于Java和Scala始赎,包括更高級別的Kafka Streams庫,以及用于Go、Python造垛、C/ c++和許多其他編程語言以及REST api魔招。

主要概念和術(shù)語

事件記錄了在現(xiàn)實世界中或你的企業(yè)中“發(fā)生了某事”的事實。在文檔中也稱為記錄或消息五辽。當你讀或?qū)憯?shù)據(jù)到Kafka時办斑,你以事件的形式做這件事。從概念上講杆逗,事件具有鍵乡翅、值、時間戳和可選的元數(shù)據(jù)頭髓迎。下面是一個例子:

  • Event key: "Alice"
  • Event value: "Made a payment of $200 to Bob"
  • Event timestamp: "Jun. 25, 2020 at 2:06 p.m."

生產(chǎn)者是那些向Kafka發(fā)布(寫)事件的客戶端應用程序峦朗,而消費者是那些訂閱(讀和處理)這些事件的應用程序。在Kafka中排龄,生產(chǎn)者和消費者是完全解耦的波势,彼此是不可知的,這是實現(xiàn)Kafka聞名的高可擴展性的一個關(guān)鍵設計元素橄维。例如尺铣,生產(chǎn)者從不需要等待消費者。Kafka提供了各種各樣的保證争舞,比如精確處理一次事件的能力凛忿。

事件被組織并持久地存儲在主題(topics)中。很簡單竞川,一個主題類似于文件系統(tǒng)中的一個文件夾店溢,事件就是該文件夾中的文件。一個示例主題名稱可以是“payments”委乌。Kafka中的主題總是多生產(chǎn)者和多訂閱者:一個主題可以有0個床牧、1個或多個生產(chǎn)者向它寫入事件,也可以有0個遭贸、1個或多個消費者訂閱這些事件戈咳。主題中的事件可以根據(jù)需要經(jīng)常讀取——與傳統(tǒng)消息傳遞系統(tǒng)不同,事件在使用后不會刪除壕吹。相反著蛙,你可以通過每個主題的配置設置來定義Kafka應該保留你的事件多長時間,之后舊的事件將被丟棄耳贬。Kafka的性能相對于數(shù)據(jù)大小來說是不變的踏堡,所以長時間存儲數(shù)據(jù)是完全可以的。

主題是分區(qū)的咒劲,這意味著一個主題分散在位于不同Kafka broker上的多個“桶”上暂吉。這種數(shù)據(jù)的分布式位置對于可伸縮性非常重要胖秒,因為它允許客戶機應用程序同時從/向多個代理讀取和寫入數(shù)據(jù)缎患。當一個新事件被發(fā)布到一個主題時慕的,它實際上被附加到主題的一個分區(qū)中。具有相同事件鍵(例如挤渔,客戶或車輛ID)的事件被寫入同一個分區(qū)肮街,Kafka保證任何給定主題分區(qū)的消費者都將始終以寫入的完全相同的順序讀取該分區(qū)的事件。

image

圖中這個示例主題有四個分區(qū)P1-P4判导。兩個不同的生產(chǎn)者客戶端通過網(wǎng)絡向主題的分區(qū)寫入事件嫉父,從而彼此獨立地向主題發(fā)布新事件。具有相同鍵的事件(圖中通過它們的顏色表示)被寫入同一個分區(qū)眼刃。注意绕辖,如果合適的話,兩個生產(chǎn)者都可以寫入同一個分區(qū)擂红。

為了保證你的數(shù)據(jù)具有容錯性和高可用性,每一個主題可以被復制,甚至跨geo-regions或數(shù)據(jù)中心,這樣總有多個brokers有一份數(shù)據(jù)以防出錯等等仪际。一個常見的生產(chǎn)設置是復制因子3,也就是說昵骤,您的數(shù)據(jù)總是有三個副本树碱。這個復制是在主題分區(qū)級別執(zhí)行的。

這篇入門文章應該足夠作介紹了变秦。如果你感興趣的話成榜,文檔的設計部分詳細地解釋了Kafka的各種概念。

Kafka APIs

除了用于管理和管理任務的命令行工具蹦玫,Kafka還有5個用于Java和Scala的核心api:

  • 管理和檢查主題赎婚、brokers和其他Kafka對象的Admin API。
  • Producer API發(fā)布(寫)事件流到一個或多個Kafka主題樱溉。
  • Consumer API用于訂閱(讀取)一個或多個主題挣输,并處理生成給它們的事件流。
  • Kafka Streams API實現(xiàn)流處理應用和微服務饺窿。它提供了處理事件流的高級函數(shù)歧焦,包括轉(zhuǎn)換、聚合和連接等有狀態(tài)操作肚医、窗口绢馍、基于事件時間的處理等等。從一個或多個主題讀取輸入肠套,以生成對一個或多個主題的輸出舰涌,有效地將輸入流轉(zhuǎn)換為輸出流。
  • Kafka Connect API用于構(gòu)建和運行可重用的數(shù)據(jù)導入/導出連接器你稚,這些連接器消費(讀)或產(chǎn)生(寫)外部系統(tǒng)和應用的事件流瓷耙,以便它們能夠與Kafka集成朱躺。例如,到關(guān)系數(shù)據(jù)庫(如PostgreSQL)的連接器可能捕獲對一組表的每一個更改搁痛。然而长搀,在實踐中,你通常不需要實現(xiàn)自己的連接器鸡典,因為Kafka社區(qū)已經(jīng)提供了數(shù)百個隨時可用的連接器源请。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市彻况,隨后出現(xiàn)的幾起案子谁尸,更是在濱河造成了極大的恐慌,老刑警劉巖纽甘,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件良蛮,死亡現(xiàn)場離奇詭異,居然都是意外死亡悍赢,警方通過查閱死者的電腦和手機决瞳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泽裳,“玉大人瞒斩,你說我怎么就攤上這事′套埽” “怎么了胸囱?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長瀑梗。 經(jīng)常有香客問我烹笔,道長,這世上最難降的妖魔是什么抛丽? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任谤职,我火速辦了婚禮,結(jié)果婚禮上亿鲜,老公的妹妹穿的比我還像新娘允蜈。我一直安慰自己,他們只是感情好蒿柳,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布饶套。 她就那樣靜靜地躺著,像睡著了一般垒探。 火紅的嫁衣襯著肌膚如雪妓蛮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天圾叼,我揣著相機與錄音蛤克,去河邊找鬼捺癞。 笑死,一個胖子當著我的面吹牛构挤,可吹牛的內(nèi)容都是我干的髓介。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼儿倒,長吁一口氣:“原來是場噩夢啊……” “哼版保!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起夫否,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎叫胁,沒想到半個月后凰慈,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡驼鹅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年微谓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片输钩。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡豺型,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出买乃,到底是詐尸還是另有隱情姻氨,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布剪验,位于F島的核電站肴焊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏功戚。R本人自食惡果不足惜娶眷,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望啸臀。 院中可真熱鬧届宠,春花似錦、人聲如沸乘粒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谓厘。三九已至幌羞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間竟稳,已是汗流浹背属桦。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工熊痴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人聂宾。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓果善,卻偏偏與公主長得像,于是被迫代替她去往敵國和親系谐。 傳聞我的和親對象是個殘疾皇子巾陕,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容