通過乙個示例了解kafka connect聯結器

2021-09-29 18:59:22 字數 2035 閱讀 5086

在實際工作中使用 kafka ,有時候會有類似這樣的場景。我們需要把某些資料來源的資料匯入到 kafka,或者把 kafka 作為資料來源匯出資料。或者兩種場景的需求都要。

這算是一種 kafka 生產者,消費者模式的特殊使用場景。它主要服務於資料管道的場景,為此 kafka 在0.9版本開始增加了 connect 功能,這樣可以很方便使得 kafka 可以作為資料管道各個資料段的大型緩衝區,有效的解耦了管道兩端的生產者和消費者。

kafka connect包含兩個元件,source connector 和 sink connector。顧名思義,前者可以資料來源(比如資料庫,檔案系統)拉取資料塞入 kafka 的 topic中。而後者則從kafka消費資料到另乙個資料來源(比如elasticsearch,hadoop)。

聯結器和普通的生產者消費者模式有什麼區別呢?似乎兩種方式都可以達到目的。可能第一次接觸connect的人都會由此疑問。在《kafka權威指南》這本書裡,作者給出了建議:

如果你是開發人員,你會使用 kafka 客戶端將應用程式連線到

kafka ,井修改應用程式的**,將資料推送到 kafka 或者從 kafka 讀取資料。

如果要將 kafka 連線到資料儲存系統,可以使用 connect,因為這些系統不是你開發的,

構建資料管道 i 10s你無能或者也不想修改它們的**。 connect 可以用於從外部資料儲存系統讀取資料, 或

者將資料推送到外部儲存系統。如果資料儲存系統提供了相應的聯結器,那麼非開發人員

就可以通過配置聯結器的方式來使用 connect。

如果你要連線的資料儲存系統沒有相應的聯結器,那麼可以考慮使用客戶端 api 或

connect api 開發乙個應用程式。我們建議首選 connect,因為它提供了一些開箱即用的

特性,比如配置管理、偏移量儲存、井行處理、錯誤處理,而且支援多種資料型別和標準

的 rest 管理 api。開發乙個連線 kafka 和外部資料儲存系統的小應用程式看起來很簡單,

但其實還有很多細節需要處理,比如資料型別和配置選項,這些無疑加大了開發的複雜

性一一毛onnect 處理了大部分細節,讓你可以專注於資料的傳輸。

這個示例,我們用kafka自帶的聯結器進行演示,這樣我們就省去了使用 connect api 去開發乙個connect的麻煩。

首先啟動 zk+kafka 的環境,然後啟動connect程序,

./bin/connect-distributed.sh config/connect-distributed.properties
然後我們輸入下面的命令來確認下是否啟動成功。

接著我們啟動乙個檔案資料來源,

解釋下,

其實就是把 echo 的內容作為http post的資料傳送過去,-d @-表示從管道獲取資料。在這個資料中,我們指定了聯結器的名字load-kafka-config,聯結器的類名,使用的是自帶的filestream-source,需要讀取的資料來源的路徑,當然還有kafka的topic。

這條命令執行完後,檔案的內容就被傳送到kafka的topic上了,我們可以通過下面這個命令來檢視下,

我們用消費者控制台讀取了topic上的訊息。可以發現每乙個payload包含上面讀取的檔案的一行。

接著我們使用乙個自帶的聯結器把topic裡的資料讀出來,並且匯出到檔案中儲存(mydata.txt),儲存的檔案內容應該和前面讀取的那個配置檔案的內容是一樣的。

參考:《kafka權威指南》

通過乙個demo了解Redux

todolist小demo 效果展示 專案位址 回到頂部 單向 資料流 資料流是我們的行為與響應的抽象 使用資料流能幫我們明確了行為對應的響應,這和react的狀態可 的思想是不謀而合的。常見的資料流框架有flux reflux redux。相比其它資料流框架,redux輕量 壓縮後只有2k 而且在...

通過乙個demo了解Redux

todolist小demo 效果展示 專案位址 單向 資料流 資料流是我們的行為與響應的抽象 使用資料流能幫我們明確了行為對應的響應,這和react的狀態可 的思想是不謀而合的。常見的資料流框架有flux reflux redux。相比其它資料流框架,redux輕量 壓縮後只有2k 而且在乙個rea...

通過乙個demo了解Redux

todolist小demo 效果展示 專案位址 單向 資料流 資料流是我們的行為與響應的抽象 使用資料流能幫我們明確了行為對應的響應,這和react的狀態可 的思想是不謀而合的。常見的資料流框架有flux reflux redux。相比其它資料流框架,redux輕量 壓縮後只有2k 而且在乙個rea...