在LinkedIn的 Kafka 生態系統

在LinkedIn的 Kafka 生態系統

Apache Kafka是一個高度可擴展的消息傳遞系統,作為LinkedIn的中央數據管道起著至關重要的作用。 Kafka 是在2010年在LinkedIn開發的,它目前在1400多家經紀商處理超過1.4萬億條消息。Kafka 強大的耐用性和低延遲使我們能夠使用Kafka為LinkedIn提供一些新的關鍵任務用例。其中包括用基于Kafka的復制,威尼斯替代Espresso中的 MySQL復制,并支持下一代Databus(正在開發中)。

隨著我們的 Kafka 使用量繼續快速增長,我們必須解決一些重大問題,以使所有這些成為可能,所以我們圍繞 Kafka 開發了一個完整的生態系統。在這篇文章中,我將總結一些我們的解決方案,這些解決方案對于使用 Kafka 的人來說可能是有用的,并且強調幾個即將到來的活動,您可以從中了解更多。

Kafka 生態系統在LinkedIn
上圖并未完全捕捉到LinkedIn上的各種數據管道和拓撲結構,但是可以說明LinkedIn Kafka部署中的關鍵實體以及它們如何相互影響。

核心 Kafka 服務
Kafka 經紀人

我們為每個數據中心的不同目的運行幾組 Kafka 經紀人。我們目前在LinkedIn上部署了近1400名經紀人,每周收到超過2 PB的數據。我們通常運行Apache Kafka主干,每個季度都會削減一個新的內部版本。

Kafka 鏡子制造商

鏡像制造商使我們能夠通過從源集群中消費并生成目標集群來制作集群副本。在數據中心和數據中心內都有多個鏡像管道。Todd Palino的文章總結了我們如何使用這個來促進LinkedIn上的Kafka的多色。

模式注冊表

我們已經在LinkedIn的數據管道內將Avro標準化為通用語言。因此,每個生產者都編碼Avro數據,在模式注冊中注冊Avro模式,并在每個序列化消息中嵌入一個模式ID。消費者從模式注冊表服務中獲取與ID相對應的模式,以反序列化Avro消息。雖然我們的數據中心有多個模式注冊表實例,但這些實例由包含模式的單個(復制)數據庫支持。

Kafka REST代理

Kafka REST是我們為非Java客戶端提供的HTTP代理。我們的大多數Kafka集群都有一個關聯的REST代理。Kafka REST也是主題行政運作的官方網關。

Nuage

Kafka大部分都是自助服務:用戶定義自己的事件模式并開始制作主題。Kafka代理自動創建具有默認配置和分區計數的主題。最后,任何消費者都可以消費這個話題,使 Kafka 完全開放。

隨著 Kafka 的使用量不斷增加,出現新的使用案例,上述方法中出現了一些限制。首先,一些主題需要自定義配置,需要對Kafka SRE進行特殊請求。其次,大多數用戶很難發現和檢查他們擁有的主題的元數據(例如,字節率,審計完整性,模式歷史等)。第三,由于Kafka包含了各種安全功能,某些主題所有者可能希望限制對主題的訪問,并自行管理ACL。

Nuage是LinkedIn在線數據基礎設施資源的自助服務門戶,最近我們與Nuage團隊合作,在Nuage內增加了對Kafka的支持。這為用戶提供了一個方便的地方來管理他們的主題和相關的元數據。Nuage將主題CRUD操作委托給Kafka REST,它抽象出Kafka行政事業的細微差別。

圖書館
LiKafka客戶端庫

LiKafka制作人包裝開放源碼制作人,但也進行模式注冊,Avro編碼,審計和支持大消息。審計事件計算在10分鐘窗口中發送給每個主題的事件數量。同樣,消費者包裝開源消費者,并進行模式查找,Avro解碼和審計。

Kafka 推工作

Kafka推送工作用于將豐富的數據從Hadoop發送到Kafka,供在線服務使用。推送作業在CORP環境中的Hadoop集群上運行,并將數據生成到CORP數據部署Kafka集群中。鏡像制造者將這些數據復制到PROD數據部署集群中。

Gobblin

Gobblin是LinkedIn的新的攝取框架,并貶低了 Camus,這是我們以前的Kafka to Hadoop橋梁。它基本上是一個大的Hadoop作業,它將Kafka中的所有數據復制到Hadoop中進行離線處理。

監測服務
Kafka 監視器

這是Kafka部署的一套持續運行的驗證測試,我們利用這些測試來驗證新版本以及監控現有部署。我們目前正在監控基本但重要的指標,如端到端延遲和數據丟失。我們預計未來我們將在測試集群中使用這個框架來不斷地測試管理操作的正確性(例如分區重新分配),甚至利用諸如Simoorg之類的錯誤注入框架來確保我們能夠滿足我們的可用性SLA即使在各種失敗的情況下。

Kafka 審計

我們的審計跟蹤基礎架構中有兩個關鍵組件:

一種 Kafka 審計服務,用于消費和重新計算 Kafka 集群中的所有數據,并發出類似于追蹤生產者的審計事件。這使我們能夠將Kafka集群上的計數與生產者計數進行協調,并檢測數據丟失(如果有的話)。
Kafka 審計驗證服務,持續監控數據的完整性,并提供用于查看審計跟蹤的用戶界面。此服務消耗并將審計事件插入審計數據庫,并在數據延遲或丟失時發出警報。我們使用審計數據庫來調查發生的警報,并精確地指出數據丟失的位置。
Kafka 生態系統
地洞

Burrow是監控Kafka消費者健康的棘手問題的一個優雅的答案,并提供了一個消費者狀態的全面視圖。它提供消費滯后檢查作為服務,而不需要指定閾值。它以主題分區粒度監視所有消費者的承諾偏移,并根據需要計算這些消費者的狀態。

流處理在LinkedIn
Samza是LinkedIn的流處理平臺,可以幫助用戶盡快完成流處理工作并投入生產。流處理領域一直嗡嗡作響,有許多開源系統正在做類似的事情。與專注于非常廣泛的功能集的其他流處理系統不同,我們專注于使Samza在LinkedIn規模下可靠,高性能和可操作。現在我們有很多生產工作量正在運行,我們可以把注意力放在拓寬功能集上。這篇較早的博客文章詳細介紹了我們關于相關性,分析,站點監控,安全等方面的生產用例以及我們正在開發的一些新功能。

即將舉行的活動
如果您有興趣進一步了解我們的Kafka生態系統,我們如何部署和排除Kafka故障,以及我們的新特性 /用例,我們邀請您參加這些即將到來的會議:

4月26日:Espresso數據庫復制與Kafka @ Kafka峰會:Espresso是LinkedIn的分布式文檔商店,托管我們最重要的成員數據。Tom Quiggle將介紹為什么Espresso將從MySQL的內置復制機制切換到Kafka,以及Espresso如何將Kafka作為復制流 - 這是一個將Kafka的耐久性和可用性保證加入測試的用例!
4月26日:更多的數據中心,更多的問題 @ Kafka峰會:Todd Palino將談論多數據中心和多層 Kafka 集群的基礎架構,并就如何監控整個生態系統提供實用技巧。
4月26日: 在LinkedIn Kafka 天,2015年 @ Kafka 峰會:霍埃爾·科什將深入了解一些最困難,最突出的 Kafka 生產問題是LinkedIn創下2015年該談話會在每個停運及其影響,以及方法到檢測,調查和整治。
5月10日:建立一個自助服務 Kafka 系統 @ 阿帕奇:大數據:霍埃爾·科什將提供一個深入了解成什么需要通過共同編織的安全性,配額的RESTful API和Nuage使 Kafka 一個真正的多租戶服務。
5月9日: 背后縮放流處理應用程序的秘密 @ 阿帕奇:大數據:Navina拉梅什將描述阿帕奇Samza對國家管理和容錯方法,并討論了如何可以有效地用于擴展狀態流處理應用程序。
6月28-30日: λ-少在LinkedIn @流處理@規模的Hadoop峰會:Yi·潘和卡蒂克·帕拉梅西瓦姆將突出Samza的主要優勢是實時流處理平臺,其在LinkedIn使用的動手概述。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容