天天看點

Yelp的資料管道開源了

在過去的幾個月裡,yelp一直在不斷地向大家分享着他們的資料管道的情況(文章清單見頁尾)。這是一套基于python的工具,可以實時地将資料流向需要它們的服務,并随之加以必要的資料處理。這一系列的文章講述了如何從mysql中将消息複制出來、如何跟蹤模式的變化及演進、并最終分享了如何把資料接入到redshift和salesforce等不同類型的目标存儲。

Yelp的資料管道開源了

幸好yelp非常慷慨,他們不隻是分享了自己的設計思路和經驗,更是趕在聖誕節之前向大家獻上了一份大禮,把主要子產品開源出來了!

在讀過了所有這些關于我們的資料管道的文章之後,可能你會覺得我們這些yelp的人不過是像一個孩子在向大家炫耀他的新玩具一樣,肯定會自己捂得嚴嚴的,不會和大家分享。但是和大多數有了新玩具又不會分享的孩子一樣,我們願意分享——是以我們最終決定要把我們的資料管道的主體部分開源出來,然後大家就可以開心地迎來新年假期了。

閑話少說,下面這些就是yelp為大家的假期準備的聖誕禮物:

mysql streamer會不斷地檢視mysql的binlog,得到最新的表變更操作。streamer負責捕獲mysql資料庫上的單條資料更改操作,并把它封裝成kafka消息,釋出到kafka的某個topic中。如果有必要,也會做模式轉換。

schematizer服務會跟蹤每一條消息所使用的模式資訊。在有新模式出現時,schematizer會處理注冊消息,并為下遊的表生成更改計劃。

data pipeline clientlib為生産和消費kafka消息提供了非常易用的接口。有了clientlib,就再也不必關心kafka的topic名字、加密或消費者程式的分區情況了。你可以站在表和資料庫的角度去考慮問題,不必關心其它細節。

data pipeline avro utility包提供了讀寫avro模式的python接口。它也可以為表的主鍵等模式資訊提供枚舉類,這一點yelp在實踐中發現非常有用。

yelp kafka庫擴充了kafka-python包,并提供了多重處理消費者組等新功能。這個庫可以幫助大家非常高效地與kafka進行互動。這個庫也讓使用者可以判斷出yelp内部的kafka跨區域部署情況。

Yelp的資料管道開源了

資料管道中不同組成部分的概覽圖。單個服務用方形表示,而共享包用圓角表示。

這些項目每個都有docker化的服務,你可以很容易地把它們用到你的架構中。我們希望對于每個用python建構實時流處理程式的開發者來說,它們都能有用。

有了之前的文章介紹,現在又有了開源的代碼,相信有許多資料處理工程師的聖誕假期都會過得無比充實了。

本文作者:佚名

來源:51cto