Debezium — 它抓得住資料的改變

現代很多應用(application)都很複雜,通常是資料庫裡的資料有變動,就需要觸發一連串的相依動作,光舉一個登入為例,就可能需要 1 更新資料庫, 2 寫日誌(log), 3 送 tracking events, 4 送數據到 data dashboard 等等,越龐大的系統就越多事情要做。

通常規模小的系統不外乎是通通寫在 API 裡,全部做完也不會花太多時間,但缺點就是程式碼全部擠在一起,複雜性上升,易維護性下降。

old-way-api.png

要解決這個問題,可以把每個功能都切開,變成多個 workers, 持續偵測資料庫裡的資料是否有變化,偵測到變化之後就執行自己應該執行的工作,如此一來 API 就可以專注在維護資料的更新邏輯,剩下的部分就交給 workers 各自處理,也不怕影響 API 穩定性。

debezium-arch.png

p.s. 也有人用它來造 data pipeline, 每個 worker 負責各自的數據處理

持續偵測資料庫裡的資料變化這件事,現在也不需要自己造輪子了,可以交給 Debezium 。

Debezium 支援 MySQL, PostgreSQL, MongoDB, DB2, SQL Server 等資料庫,而它其實就是架構在 Apache Kafka 之上的應用,基本上不用太擔心效能與穩定性問題,開發者可以更專注在業務邏輯的開發上。

目前 Reddit, Shopify, Tokopedia, Ubisoft, Vimeo 等公司都有用到 Debezium, 如果有興趣的話可以玩看看, Debezium 有將 tutorial 包裝成 Docker, 可以輕鬆架好環境進行學習。

Debezium

追蹤新知

看完這篇文章了嗎?還意猶未盡的話,追蹤粉絲專頁吧!

我們每天至少分享 1 篇文章/新聞或者實用的軟體/工具,讓你輕鬆增廣見聞提升專業能力!如果你喜歡我們的文章,或是想了解更多特定主題的教學,歡迎到我們的粉絲專頁按讚、留言讓我們知道。你的鼓勵,是我們的原力!

贊助我們的創作

看完這篇文章了嗎? 休息一下,喝杯咖啡吧!

如果你覺得 MyApollo 有讓你獲得實用的資訊,希望能看到更多的技術分享,邀請你贊助我們一杯咖啡,讓我們有更多的動力與精力繼續提供高品質的文章,感謝你的支持!