在LinkedIn的 Kafka 生態系統

来源:http://www.cnblogs.com/xinxiucan/archive/2017/11/14/7832328.html
-Advertisement-
Play Games

Apache Kafka是一個高度可擴展的消息傳遞系統,作為LinkedIn的中央數據管道起著至關重要的作用。 Kafka 是在2010年在LinkedIn開發的,它目前在1400多家經紀商處理超過1.4萬億條消息。Kafka 強大的耐用性和低延遲使我們能夠使用Kafka為LinkedIn提供一... ...


在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使用的動手概述。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 接著上一篇,這篇文章分析一下redis事務操作中multi,exec,discard三個核心命令。 原文地址:http://www.jianshu.com/p/e22615586595 看本篇文章前需要先對上面文章有所瞭解: "redis源碼分析之事務Transaction(上)" 一、redis事 ...
  • 這周學習了一下redis事務功能的實現原理,本來是想用一篇文章進行總結的,寫完以後發現這塊內容比較多,而且多個命令之間又互相依賴,放在一篇文章里一方面篇幅會比較大,另一方面文章組織結構會比較亂,不容易閱讀。因此把事務這個模塊整理成上下兩篇文章進行總結。 原文地址:http://www.jianshu ...
  • 備份 RMAN>show all; RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON; 設置控制文件自動備份 RMAN> backup database format='/home/oracle/myrman/prod_%s.bak' filesperset 3; ...
  • 第一: MySQL的安裝 下載MySQL軟體,修改安裝路徑之後 安裝資料庫MySQL5.7.18 第一步:資料庫MySQL5.7.18可以在官網上下載對應的版本,下載地址:http://www.filehorse.com/download-mysql-64/, 第二步:將下載好的安裝包進行解壓到一個 ...
  • 上一篇簡要介紹了圖資料庫的一些基本內容(初識SQL Server2017 圖資料庫(一)),本篇通過對比關係型一些語法來體現圖資料庫模式的一些優點,比如查詢方便,語句易理解等。 在圖資料庫模型上構建查詢的優勢: T-SQL 帶給圖表查詢一些新的語法。在SELECT語句中我們有一些特殊的語句來關聯點和 ...
  • 最近一直在用,也一直在學oralc,項目上也用到了批量的添加(讀取上傳CSV文件信息,把符合條件的信息寫入到資料庫中),在寫的時候想到了可能是數據量大就想該怎麼快,(由於本人在.NET開發期間沒有做過深度的優化) 上傳CSV文件有專門的方法,只要複製進去就好了 上傳完成的CSV文件返回的DataTa ...
  • root用戶下 mkdir -p /home/temp cd temp mkdir bin log tmp chown -R oracle:oinstall /home/temp/bin chown -R oracle:oinstall /home/temp/log chown -R oracle: ...
  • MySQL-5.6.xx-winx64 免安裝版配置方法 1. 到Mysql官網下載mysql- 5.6.xx-winx64 2. 解壓MySQL壓縮包 將以下載的MySQL壓縮包解壓到自定義目錄下,如: D:\Program Files (x86)\MySQL\mysql-5.6.xx-winx6 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...