[譯]揭秘LinkedIn的Kafka生態(tài)系統(tǒng)

原文:Kafka Ecosystem at LinkedIn

作者:Joel Koshy ? ?譯者:杰微刊兼職翻譯汪建 ?

Apache Kafka是一個高可擴展的消息系統(tǒng)踱侣,它作為LinkedIn的數(shù)據(jù)中心管道扮演著關鍵的作用。早在2010年Kafka就在LinkedIn發(fā)展得很完善了蚜退,目前它每天通過1400個broker處理著超過1.4萬億的消息给郊。Kafka的強穩(wěn)定性和低延時讓我們可以在LinkedIn中使用Kafka去驅(qū)動一些關鍵性任務牡肉。包括用基于Kafka的復制組件Espresso去替代Mysql的自帶的復制組件,還包括我們的Venice系統(tǒng)和對下一代的數(shù)據(jù)總線的支持(我們還在開發(fā)中)淆九。

由于我們在Kafka使用方面不斷快速增多统锤,我們必須解決一些顯著的問題,這才能讓這一切成為可能炭庙。所以我們圍繞Kafka開發(fā)了整個生態(tài)系統(tǒng)饲窿,在這篇文章中,我將會對我們的一些解決方案進行總結焕蹄,這些方案會對其他使用Kafka的人很有幫助免绿, 并且我們將一些我們即將完成的項目高亮顯示,通過這些系統(tǒng)大家可以學到更多東西擦盾。


上面的圖并不能完全表達LinkedIn各種數(shù)據(jù)管道和拓撲結構淌哟,但可以用來說明LinkedIn的Kafka的部署以及他們之間是如何交互的迹卢。

Kafka核心服


Kafka Brokers

我們在每個數(shù)據(jù)中心都部署若干個Kafka broker集群用于不同目的,目前我們已經(jīng)在整個LinkedIn部署了將近1400個broker徒仓,這些broker每周接收了超過2PB字節(jié)數(shù)據(jù)腐碱,我們一般都是使用Apache Kafka主干的代碼,大約每個季度會有一個新內(nèi)部版本發(fā)布。

Kafka Mirror-Maker

mirror-maker能讓我們通過消費方式從一個源集群到目標集群中進行集群復制症见,有多種鏡像管道運行在同個數(shù)據(jù)中心或者跨數(shù)據(jù)中心運行喂走。Todd Palino的文章總結了在LinkedIn我們?nèi)绾卫胢irror-maker讓Kafka多管道復制。

Schema注冊中心

我們已經(jīng)標準化了Avro作為我們LinkedIn數(shù)據(jù)管道的交互編碼語言谋作,所以每個生產(chǎn)者用Avro對數(shù)據(jù)進行編碼芋肠,向schema注冊中心注冊Avro schema信息,并且每個序列化消息都必須嵌入一個schema-ID遵蚜。消費者通過schema注冊中心服務獲取schema相應的ID帖池,然后再對Avro消息進行反序列化。我們的跨數(shù)據(jù)中心有多個schema注冊中心吭净,這些都支持包含了schema的單一數(shù)據(jù)庫睡汹。

Kafka REST代理

Kafka REST是一個HTTP協(xié)議代理,我們通過它提供給非java客戶端調(diào)用寂殉。我們大多數(shù)Kafka集群都有一個相關聯(lián)的REST代理囚巴,Kafka REST也作為topic管理操作的正式網(wǎng)關提供服務。

Nuage

Kafka大多數(shù)情況下是一個自助服務:用戶定義他們的事件schema并且開始向topic生產(chǎn)數(shù)據(jù)友扰,Kafka broker自動利用默認的配置和partition個數(shù)創(chuàng)建topic彤叉,最后,任何一個消費者都可以消費這個topic焕檬,使Kafka完全開放姆坚。

隨著Kafka的使用場景不斷增加,新的用例出現(xiàn)实愚,上述方法的許多局限性變得顯而易見兼呵。首先,一些要求對Kafka SRE特殊請求的topic要求要自定義配置腊敲;第二击喂,對于大多數(shù)用戶很難發(fā)獲取元數(shù)據(jù),例如byte-rate碰辅、審計完整性和schema歷史信息等等懂昂,這些都是topic相關的元數(shù)據(jù);第三没宾,由于Kafka整合了各種安全功能凌彬,某一topic的擁有者可能想讓他們的topic有個嚴格的訪問權限,并且他們自己要能自己管理這些訪問控制列表循衰。

Nuage是為LinkedIn提供線數(shù)據(jù)基礎設施資源的自助服務門戶铲敛,我們最近與Nuage團隊合作將Kafka的支持增加到Nuage門戶上,這為我們提供了一個方便管理他們topic和相關元數(shù)據(jù)的地方会钝。Nuage通過Kafka REST代理了topic的CRUD操作伐蒋,提供有意義的Kafka管理功能。

Libraries


LiKafka客戶端庫

LiKafka的生產(chǎn)者把開源生產(chǎn)者包裝了一層,它可以提供schema注冊先鱼、Avro編碼俭正、審計和支持大消息等等功能。審計事件的計數(shù)事件通過10分鐘的時間窗口發(fā)送給topic焙畔。同樣地掸读,LiKafka的消費者也是將開源消費者包裝一層,它提供schema發(fā)現(xiàn)闹蒜、Avro解碼和審計等等功能寺枉。

Kafka推送job

Kafka推送job一般用于從Hadoop運送數(shù)據(jù)到Kafka供在線服務消費,推送job在我們CORP環(huán)境上的Hadoop集群上運行绷落,并且生產(chǎn)數(shù)據(jù)往CORP環(huán)境的Kafka集群發(fā)送姥闪,然后mirror-maker將這些數(shù)據(jù)拷貝到PROD環(huán)境的Kafka集群上。

Gobblin

Gobblin是LinkedIn最新的數(shù)據(jù)攝入框架砌烁,并且我們已經(jīng)棄用了Camus筐喳,Camus以前是我們從Kafka到Hadoop的橋梁。將Kafka的所有數(shù)據(jù)拷貝到Hadoop做離線處理基本算是一個很大的Hadoop作業(yè)了函喉。

監(jiān)控服務


Kafka監(jiān)控

Kafka監(jiān)控不斷通過一系列驗證測試檢測Kafka的部署避归,我們充分利用它去校驗Kafka新發(fā)布的版本,同時也監(jiān)控現(xiàn)在已有的Kafka部署管呵。我們目前監(jiān)控了一些基礎但關鍵的指標梳毙,比如端到端的延遲和數(shù)據(jù)丟失情況。我們設想在未來捐下,我們將在測試環(huán)境集群中使用這個框架不斷測試管理操作的正確性账锹,例如分區(qū)重新分配的準確性。甚至我們還利用一個故障注入框架坷襟,如Simoorg奸柬,確保能滿足我們的不同故障百分比的可用性SLA。

Kafka審計

我們的審計跟蹤基礎架構中包含兩個關鍵部分:

①Kafka審計服務消費且重新計算Kafka集群中的所有數(shù)據(jù)婴程,并發(fā)出類似跟蹤生產(chǎn)者的包含計數(shù)的審計事件廓奕。這種功能讓我們通過生產(chǎn)者數(shù)據(jù)數(shù)量來調(diào)整Kafka集群的數(shù)據(jù)數(shù)量,而且還能檢測是否有數(shù)據(jù)丟失档叔。

②Kafka審計驗證服務桌粉,它持續(xù)監(jiān)控數(shù)據(jù)的完整性,并且提供了一個可視化審計跟蹤的用戶界面衙四。這個服務消耗并插入審核事件到審核數(shù)據(jù)庫铃肯,當數(shù)據(jù)延遲或丟失時就會發(fā)出警報。我們使用審計數(shù)據(jù)庫去調(diào)查報警的原因届搁,并且精確定位到數(shù)據(jù)延遲丟失的問題。


Burrow

Burrow是一個關于監(jiān)控Kafka消費者健康度問題的優(yōu)雅的解決辦法,并提供了消費者狀態(tài)監(jiān)控的全面視圖卡睦。它提供了不需要指定閥值的消費者滯后檢查服務宴胧,它可以以topic分區(qū)顆粒度去監(jiān)控所有消費者已提交的偏移量,并計算這些消費者的狀態(tài)表锻。

LinkedIn的流處理

Samza是LinkedIn的流處理平臺恕齐,它允許用戶創(chuàng)建他們的流處理作業(yè)并在生產(chǎn)環(huán)境中盡可能快地運行完。流處理領域一直有很活躍的討論瞬逊,有許多開源系統(tǒng)都在做類似的事情显歧。不同于專注將非常廣泛的功能集成到流處理的其他系統(tǒng),我們專注于讓Samza可靠性确镊、高性能和擴展性達到LinkedIn的要求士骤。既然我們已經(jīng)在生產(chǎn)上經(jīng)住了工作負荷運轉(zhuǎn),所以我們就可以將注意力轉(zhuǎn)移到如何擴大功能方面蕾域。這篇早期的博客文章有我們生產(chǎn)使用相關情況https://engineering.linkedin.com/blog/2016/01/whats-new-samza拷肌,包括分析、現(xiàn)場檢測旨巷、安全等等巨缘,以及我們正在研究的一些新功能的細節(jié)。

即將舉行的活動

如果您有興趣了解更多關于我們的Kafka生態(tài)采呐,關于我們?nèi)绾尾渴鸷凸收吓懦齂afka若锁,還有我們的新功能新用例,我們邀請您參加這些即將舉行的會談:

1斧吐、4月26日又固,Kafka峰會上《使用Kafka復制Espresso數(shù)據(jù)庫》,Espresso是LinkedIn的分布式文檔存儲數(shù)據(jù)庫会通,它保存著我們一些重要的會員資料口予。 Tom Quiggle會向大家展示為什么Espresso會將Mysql內(nèi)置的復制機制替換成Kafka,以及Espresso如何利用Kafka作為復制流涕侈,這也是對Kafka保證其耐用性和可用性的一個檢驗沪停。

2、4月26日裳涛,Kafka峰會上《數(shù)據(jù)中心越多木张,故障越多》,Todd Palino將探討相關的多數(shù)據(jù)中心和多Kafka集群的基礎架構端三,并對如何監(jiān)控整個生態(tài)系統(tǒng)給出一些實踐建議舷礼。

3、4月6日郊闯,Kafka峰會上《LinkedIn2015年Kafka式的日子》妻献,Joel Koshy將深入探討挖掘2015年LinkedIn遇到的最困難最突出的Kafka生產(chǎn)環(huán)境的問題蛛株,它將影響故障檢測的方法、排查和整治育拨。

4谨履、5月10日,apache大數(shù)據(jù)論壇《建立一個自助服務的Kafka系統(tǒng)》熬丧,Joel Koshy將提供一個關于是什么讓Kafka作為一個真正多租戶服務的深入的了解笋粟,關于安全性、資源分配析蝴、RESTful API和Nuage害捕。

5、5月9日闷畸,apache大數(shù)據(jù)論壇《可伸縮的流處理系統(tǒng)背后的秘密》尝盼,Navina Ramesh將闡述Apache Samza的狀態(tài)管理和容錯處理等機制,并且討論如何有效地將它們應用到可伸縮的流處理系統(tǒng)上腾啥。

6东涡、6月28至30日,apache峰會《LinkedIn的流處理規(guī)奶却》疮跑,Yi Pan 和Kartik Paramasivam將會根據(jù)LinkedIn的使用經(jīng)驗重點討論Samza作為實時流處理平臺的主要優(yōu)勢。

我們期望在那見到你們凸舵!

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末祖娘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子啊奄,更是在濱河造成了極大的恐慌渐苏,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件菇夸,死亡現(xiàn)場離奇詭異琼富,居然都是意外死亡,警方通過查閱死者的電腦和手機庄新,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門鞠眉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人择诈,你說我怎么就攤上這事械蹋。” “怎么了羞芍?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵哗戈,是天一觀的道長。 經(jīng)常有香客問我荷科,道長唯咬,這世上最難降的妖魔是什么纱注? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮胆胰,結果婚禮上奈附,老公的妹妹穿的比我還像新娘。我一直安慰自己煮剧,他們只是感情好,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布将鸵。 她就那樣靜靜地躺著勉盅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪顶掉。 梳的紋絲不亂的頭發(fā)上草娜,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音痒筒,去河邊找鬼宰闰。 笑死,一個胖子當著我的面吹牛簿透,可吹牛的內(nèi)容都是我干的移袍。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼老充,長吁一口氣:“原來是場噩夢啊……” “哼葡盗!你這毒婦竟也來了?” 一聲冷哼從身側響起啡浊,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤觅够,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后巷嚣,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喘先,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年廷粒,在試婚紗的時候發(fā)現(xiàn)自己被綠了窘拯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡评雌,死狀恐怖树枫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情景东,我是刑警寧澤砂轻,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站斤吐,受9級特大地震影響搔涝,放射性物質(zhì)發(fā)生泄漏厨喂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一庄呈、第九天 我趴在偏房一處隱蔽的房頂上張望蜕煌。 院中可真熱鬧,春花似錦诬留、人聲如沸斜纪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盒刚。三九已至,卻和暖如春绿贞,著一層夾襖步出監(jiān)牢的瞬間因块,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工籍铁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留涡上,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓拒名,卻偏偏與公主長得像吩愧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子增显,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

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

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理耻警,服務發(fā)現(xiàn),斷路器甸怕,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • 在LinkedIn的 Kafka 生態(tài)系統(tǒng) Apache Kafka是一個高度可擴展的消息傳遞系統(tǒng)甘穿,作為Linke...
    全能程序猿閱讀 478評論 0 1
  • kafka的定義:是一個分布式消息系統(tǒng),由LinkedIn使用Scala編寫梢杭,用作LinkedIn的活動流(Act...
    時待吾閱讀 5,302評論 1 15
  • 本文轉(zhuǎn)載自http://dataunion.org/?p=9307 背景介紹Kafka簡介Kafka是一種分布式的...
    Bottle丶Fish閱讀 5,428評論 0 34
  • Kafka官網(wǎng):http://kafka.apache.org/入門1.1 介紹Kafka? 是一個分布式流處理系...
    it_zzy閱讀 3,877評論 3 53