中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

開(kāi)源Brooklin:近實(shí)時(shí)大規(guī)模數(shù)據(jù)流式傳輸,取代Kafka Mirror Make

2019-07-23    來(lái)源:raincent

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用

作者:Celia Kung 翻譯:井玉倩,無(wú)明

Brooklin 是一種近實(shí)時(shí)的大規(guī)模數(shù)據(jù)流分布式服務(wù),LinkedIn 自 2016 年以來(lái)一直在使用這項(xiàng)服務(wù),支撐每天數(shù)千個(gè)數(shù)據(jù)流和超過(guò) 2 萬(wàn)億條消息。近日,LinkedIn 正式宣布開(kāi)源 Brooklin!

GitHub 項(xiàng)目地址:https://github.com/linkedin/Brooklin/

為什么要開(kāi)發(fā) Brooklin?

由于對(duì)可擴(kuò)展、低延遲數(shù)據(jù)處理管道的需求不斷在增長(zhǎng),LinkedIn 的數(shù)據(jù)基礎(chǔ)設(shè)施也一直在不斷演化。以一種可信賴的方式高速傳輸大量數(shù)據(jù)并非易事,除此之外,他們還要解決其他問(wèn)題——為快速增長(zhǎng)的數(shù)據(jù)存儲(chǔ)類型和消息系統(tǒng)提供支持同樣是一個(gè)有待解決的大問(wèn)題。為此,LinkedIn 開(kāi)發(fā)了 Brooklin,滿足了他們對(duì)在數(shù)據(jù)量和系統(tǒng)可變性方面具備伸縮能力的系統(tǒng)的需求。

什么是 Brooklin?

Brooklin 是一個(gè)分布式系統(tǒng),旨在將數(shù)據(jù)以可靠的方式大規(guī)模傳輸至多個(gè)不同的數(shù)據(jù)存儲(chǔ)系統(tǒng)和消息系統(tǒng)。它公開(kāi)了一組抽象概念,通過(guò)編寫(xiě)新的 Brooklin 消費(fèi)者和生產(chǎn)者來(lái)擴(kuò)展其支持新系統(tǒng)消費(fèi)和生產(chǎn)數(shù)據(jù)的能力。在 LinkedIn,Brooklin 被用來(lái)將數(shù)據(jù)傳輸至多個(gè)數(shù)據(jù)存儲(chǔ)系統(tǒng)(如 Espresso 和 Oracle)和消息系統(tǒng)(如 Kafka、Azure Event Hubs 和 AWS Kinesis)。

 

 

Brooklin 支持將來(lái)自各種數(shù)據(jù)源的數(shù)據(jù)傳輸?shù)讲煌哪康牡?即消息系統(tǒng)和數(shù)據(jù)存儲(chǔ)系統(tǒng))

應(yīng)用場(chǎng)景

Brooklin 有兩大類應(yīng)用場(chǎng)景:數(shù)據(jù)傳輸橋和變更數(shù)據(jù)捕獲(Change Data Capture,CDC)。

數(shù)據(jù)傳輸橋

數(shù)據(jù)可以分布在不同的環(huán)境(公有云及公司的數(shù)據(jù)中心)、地理位置或部署組中。通常情況下,由于訪問(wèn)機(jī)制、序列化格式、合規(guī)性或安全要求的差異,每個(gè)環(huán)境都有其自身的復(fù)雜性。 Brooklin 可以作為這些環(huán)境之間的“橋梁”,在這些環(huán)境之間傳輸數(shù)據(jù)。例如,Brooklin 可以在不同的云服務(wù)(例如 AWS Kinesis 和 Microsoft Azure)之間、同一數(shù)據(jù)中心內(nèi)的不同集群之間甚至不同的數(shù)據(jù)中心之間傳輸數(shù)據(jù)。

 

 

圖示為一個(gè)假設(shè)示例,其中一個(gè) Brooklin 集群被用作數(shù)據(jù)傳輸橋,將數(shù)據(jù)從 AWS Kinesis 傳輸?shù)?Kafka,再?gòu)?Kafkach 傳輸?shù)?Azure Event Hubs

Brooklin 致力于提供跨環(huán)境數(shù)據(jù)傳輸服務(wù),只需要這一項(xiàng)服務(wù)即可應(yīng)對(duì)所有復(fù)雜的情況,讓?xiě)?yīng)用程序開(kāi)發(fā)人員可以專注于處理數(shù)據(jù)而不是移動(dòng)數(shù)據(jù)。此外,這種中心化、托管式和可擴(kuò)展的框架也方便各個(gè)企業(yè)實(shí)施策略和實(shí)現(xiàn)數(shù)據(jù)監(jiān)管。例如,通過(guò)配置 Brooklin,可以在公司內(nèi)部實(shí)施統(tǒng)一策略,比如要求任何流入的數(shù)據(jù)都必須采用 JSON 格式,或者任何流出的數(shù)據(jù)都必須加密。

鏡像 Kafka

在開(kāi)發(fā) Brooklin 之前,LinkedIn 使用 Kafka MirrorMaker(KMM)將 Kafka 數(shù)據(jù)從一個(gè) Kafka 集群鏡像到另一個(gè) Kafka 集群,但在使用這個(gè)工具時(shí)遇到了伸縮性問(wèn)題。Brooklin 可以作為數(shù)據(jù)傳輸?shù)耐ㄓ脴蛄,這樣他們就能夠輕松傳輸大量的 Kafka 數(shù)據(jù)。正是如此,他們才放棄了 KMM,轉(zhuǎn)而將 Kafka 鏡像解決方案整合到 Brooklin 中。

Brooklin 在 LinkedIn 的最大應(yīng)用場(chǎng)景之一是在集群之間和數(shù)據(jù)中心之間鏡像 Kafka 數(shù)據(jù)。 LinkedIn 重度依賴 Kafka,用 Kafka 來(lái)存儲(chǔ)所有類型的數(shù)據(jù),例如日志記錄、跟蹤及指標(biāo),等等。為了方便集中訪問(wèn),LinkedIn 的所有數(shù)據(jù)中心都使用 Brooklin 進(jìn)行數(shù)據(jù)匯總。他們還用 Brooklin 在 LinkedIn 和 Azure 之間傳輸大量的 Kafka 數(shù)據(jù)。

 

 

圖示為一個(gè)假設(shè)示例,Brooklin 被用來(lái)匯集兩個(gè)數(shù)據(jù)中心的 Kafka 數(shù)據(jù),從而可以輕松地從任何數(shù)據(jù)中心訪問(wèn)整個(gè)數(shù)據(jù)集。每個(gè)數(shù)據(jù)中心的 Brooklin 群集都可以處理多個(gè)來(lái)源和目的地

Brooklin 用于鏡像 Kafka 數(shù)據(jù)的方案已經(jīng)過(guò)大規(guī)模測(cè)試,它已完全取代了之前的 KMM,每天鏡像消息達(dá)數(shù)萬(wàn)億條。Brooklin 解決了使用 KMM 時(shí)的痛點(diǎn),無(wú)論是穩(wěn)定性和可操作性都有所提升; Brooklin 構(gòu)建 Kafka 鏡像解決方案,就可以很好地利用 Brooklin 的一些關(guān)鍵特性,下文將進(jìn)行更詳細(xì)的說(shuō)明。

多租戶

在 KMM 部署模型中,每個(gè) KMM 集群只能在兩個(gè) Kafka 群集之間鏡像數(shù)據(jù)。因此,KMM 用戶通常需要使用數(shù)十個(gè)甚至數(shù)百個(gè)單獨(dú)的 KMM 集群,這種方式非常難以管理。由于 Brooklin 同時(shí)可以處理多個(gè)獨(dú)立的數(shù)據(jù)管道,所以可以使用一個(gè) Brooklin 集群來(lái)同步多個(gè) Kafka 集群,從而降低了維護(hù)數(shù)百個(gè) KMM 集群的復(fù)雜性。

 

 

圖示為一個(gè)假設(shè)示例,使用 KMM 來(lái)匯集兩個(gè)數(shù)據(jù)中心的 Kafka 數(shù)據(jù)。相比之下,Brooklin 需要的 KMM 集群更少(一個(gè) Brooklin 對(duì)應(yīng)一個(gè)來(lái)源和目的地)

動(dòng)態(tài)配置和管理

有了 Brooklin 服務(wù),通過(guò) HTTP 調(diào)用 REST 端點(diǎn)即可輕松創(chuàng)建新數(shù)據(jù)管道(也稱為數(shù)據(jù)流)和修改現(xiàn)有管道。如果要鏡像 Kafka,無(wú)需做出更改或部署靜態(tài)配置即可輕松創(chuàng)建新的鏡像管道或修改現(xiàn)有管道的鏡像白名單。

雖然鏡像管道可以在同一個(gè)集群中共存,但 Brooklin 可以單獨(dú)控制和配置每個(gè)管道。也就是說(shuō),修改管道的鏡像白名單或向管道添加更多資源都不會(huì)影響到其他管道。此外,Brooklin 允許按需暫停和恢復(fù)單個(gè)管道,這在臨時(shí)操作或修改管道時(shí)非常有用。在進(jìn)行 Kafka 鏡像時(shí),Brooklin 支持暫;蚧謴(fù)整個(gè)管道、白名單中的單個(gè)主題,甚至單個(gè)主題分區(qū)。

問(wèn)題診斷

Brooklin 還公開(kāi)了一個(gè)診斷 REST 端點(diǎn),可以按需查詢數(shù)據(jù)流的狀態(tài)?梢酝ㄟ^(guò)該 API 輕松查詢某個(gè)管道的內(nèi)部狀態(tài),包括單個(gè)主題分區(qū)是否出現(xiàn)滯后或錯(cuò)誤。由于診斷端點(diǎn)匯集了整個(gè) Brooklin 集群的信息,因此可以無(wú)需掃描日志文件就可以快速診斷特定分區(qū)的問(wèn)題。

特殊功能

開(kāi)發(fā) Brooklin 的目的是為了取代 KMM,因此他們對(duì) Brooklin 的 Kafka 鏡像解決方案進(jìn)行了優(yōu)化,提高了穩(wěn)定性和可操作性。為此,他們針對(duì) Kafka 鏡像進(jìn)行了一些獨(dú)有的改進(jìn)。

他們努力實(shí)現(xiàn)更好的故障隔離,在鏡像一個(gè)特定分區(qū)或主題時(shí)出現(xiàn)的錯(cuò)誤不會(huì)影響到整個(gè)管道或集群。Brooklin 能夠在分區(qū)級(jí)別檢測(cè)出錯(cuò)誤,并自動(dòng)暫停這些有問(wèn)題的分區(qū)鏡像。過(guò)了一段時(shí)間(可配)之后,這些自動(dòng)暫停的分區(qū)可以自動(dòng)恢復(fù),不需要手動(dòng)干預(yù)。這種特性在臨時(shí)出現(xiàn)錯(cuò)誤時(shí)特別有用。與此同時(shí),其他分區(qū)和管道的處理不受影響。

為了改進(jìn)鏡像延遲和吞吐量,Brooklin 還可以在免沖刷(flushless)生產(chǎn)模式下運(yùn)行,在這個(gè)模式下,Kafka 的處理進(jìn)度可在分區(qū)級(jí)別進(jìn)行跟蹤。檢查點(diǎn)是在每個(gè)分區(qū)而不是管道級(jí)別完成的,所以 Brooklin 可以避免進(jìn)行 Kafka 生產(chǎn)者沖刷(這是一種阻塞的同步調(diào)用,通常會(huì)讓整個(gè)管道停頓幾分鐘)。

通過(guò)將 LinkedIn 的所有 KMM 遷移到 Brooklin,他們將鏡像集群的數(shù)量從數(shù)百個(gè)減少到大約 12 個(gè)。利用 Brooklin 進(jìn)行 Kafka 鏡像還可以加速迭代,因?yàn)樗麄冞在不斷添加新特性和改進(jìn)。

變更數(shù)據(jù)捕獲(CDC)

Brooklin 的第二個(gè)主要應(yīng)用場(chǎng)景是變更數(shù)據(jù)捕獲。這些應(yīng)用場(chǎng)景主要任務(wù)是以低延遲數(shù)據(jù)流的形式傳輸數(shù)據(jù)庫(kù)的更新。例如,LinkedIn 的大部分真實(shí)數(shù)據(jù)(例如作業(yè)、連接和配置文件信息)都保存在各種數(shù)據(jù)庫(kù)中。有一些應(yīng)用程序需要知道何時(shí)發(fā)布了新工作職位、建立新的專業(yè)聯(lián)系或更新成員個(gè)人資料。這些應(yīng)用程序不需要通過(guò)查詢?cè)诰數(shù)據(jù)庫(kù)來(lái)檢測(cè)這些變更,Brooklin 會(huì)通過(guò)近實(shí)時(shí)的方式傳輸這些數(shù)據(jù)庫(kù)更新。使用 Brooklin 進(jìn)行變更數(shù)據(jù)捕獲的最大優(yōu)勢(shì)之一是可以更好地實(shí)現(xiàn)應(yīng)用程序和在線數(shù)據(jù)存儲(chǔ)系統(tǒng)之間的資源隔離。應(yīng)用程序可以獨(dú)立于數(shù)據(jù)庫(kù)進(jìn)行擴(kuò)展,從而降低了拖垮數(shù)據(jù)庫(kù)的風(fēng)險(xiǎn)。LinkedIn 使用 Brooklin 構(gòu)建 Oracle、Espresso 和 MySQL 的變更數(shù)據(jù)捕獲解決方案 ; 此外,Brooklin 的可擴(kuò)展模型還有助于編寫(xiě)新的連接器,為數(shù)據(jù)庫(kù)源添加 CDC 支持。

 

 

變更數(shù)據(jù)捕獲可用于捕獲在線數(shù)據(jù)源的更新,并將其傳播到眾多應(yīng)用程序進(jìn)行近線處理。示例用例是一個(gè)通知服務(wù) / 應(yīng)用程序,用于監(jiān)聽(tīng)配置文件更新,以便向相關(guān)用戶發(fā)送通知

引導(dǎo)支持

有時(shí),在處理增量更新之前,應(yīng)用程序可能需要完整的數(shù)據(jù)快照。這在應(yīng)用程序第一次啟動(dòng)或者由于處理邏輯的變更需要重新處理整個(gè)數(shù)據(jù)集時(shí),可能會(huì)出現(xiàn)這種情況。 Brooklin 的可擴(kuò)展連接器模型可以支持這種用例。

事務(wù)支持

很多數(shù)據(jù)庫(kù)都支持事務(wù),對(duì)于這些數(shù)據(jù)源,Brooklin 連接器可以確保事務(wù)邊界。

更多信息

第一個(gè) Brooklin 發(fā)布版本引入了 Kafka 鏡像功能,可以使用項(xiàng)目提供的簡(jiǎn)單指令和腳本來(lái)測(cè)試。Brooklin 團(tuán)隊(duì)正在努力增加對(duì)更多數(shù)據(jù)源和目的地的支持,敬請(qǐng)期待!

下一步

自 2016 年 10 月以來(lái),Brooklin 已經(jīng)成功承擔(dān)了 LinkedIn 的工作負(fù)載,并取代 Databus(https://github.com/linkedin/databus/wiki)成為 Espresso 和 Oracle 的變更數(shù)據(jù)捕獲解決方案,以及在 Azure、AWS 和 LinkedIn 之間移動(dòng)數(shù)據(jù)的數(shù)據(jù)傳輸解決方案,每天鏡像數(shù)萬(wàn)億條來(lái)自 Kafka 集群的消息。

Brooklin 團(tuán)隊(duì)將繼續(xù)構(gòu)建連接器,以便支持其他數(shù)據(jù)源(即 MySQL、Cosmos DB、Azure SQL)和傳輸目的地(即 Azure Blob 存儲(chǔ)、Kinesis、Cosmos DB、Couchbase)。他們還計(jì)劃為 Brooklin 添加優(yōu)化功能,例如基于流量需求進(jìn)行自動(dòng)伸縮、在鏡像方案中跳過(guò)解壓縮和重新壓縮消息以提高吞吐量,以及額外的讀寫(xiě)優(yōu)化。

原文鏈接:

https://engineering.linkedin.com/blog/2019/brooklin-open-source

標(biāo)簽: 數(shù)據(jù)流 Kafka 

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:45個(gè)數(shù)字助你認(rèn)清當(dāng)前AI技術(shù)態(tài)勢(shì)

下一篇:數(shù)據(jù)科學(xué)家必看!處理小數(shù)據(jù)的7個(gè)技巧