企業級雲資料庫最佳實踐

京東科技開發者發表於2020-05-06

企業級雲資料庫最佳實踐

雲資料庫 PostgreSQL 是京東智聯雲基於開源的 PostgreSQL構建的一款功能強大的企業級關係型資料庫管理系統。加州大學計算機系開發的PostgreSQL,有“世界上可獲得的最先進的開源資料庫”之稱,在DB-Engines關係型資料庫中排名第四,以其穩定性、資料型別多樣性(JSON、IP資料和幾何資料等)、對地理資訊引擎的完整支援等特性,逐漸成為企業級資料庫首選。

雲資料庫PostgreSQL作為一款功能強大的企業級關係型資料庫管理系統,能夠提供豐富的產品相關生態,還可為使用者提供資料訂閱服務。使用者能夠根據自身業務需求自由消費增量資料,適用於快取更新策略、業務非同步解耦、異構資料來源的資料實時同步和複雜ETL的資料實時同步等多個業務場景。

京東智聯雲“雲資料庫 PostgreSQL”基於Debezium服務,能夠實現雲資料庫PostgreSQL-雲Kafka增量訊息訂閱服務,使用者無需部署服務,直接連線客戶端即可自定義消費程式進行Kafka資料消費,並且可以隨時停止消費。並且在重新啟動客戶端時,消費的資料會從中斷的位置繼續恢復。

看到這裡,你可能會有所疑惑,雲資料庫PostgreSQL是京東智聯雲基於開源的 PostgreSQL構建的一款功能強大的企業級關係型資料庫管理系統,但是 Debezium服務是什麼呢?Debezium服務和雲資料庫PostgreSQL準實時資料同步原理又是怎樣的呢?本文將對如何以雲資料庫PostgreSQL作為資料來源來實現其功能進行介紹。

Debezium服務介紹

Debezium是一組開源的分散式服務,主要用途是捕獲資料庫中的更改(change data capture,CDC),從而幫助應用程式對資料庫的更改進行識別及響應。Debezium服務提供低延遲的針對CDC(change data capture)資料同步分散式平臺,啟動並指向資料庫之後,可以準實時的獲取資料庫行級別的變更事件。同時,Debezium是構建在kafka之上的,與kafka深度耦合,可以基於kafka Connector來使用。因此能夠透過Kafka和Kafka Connect來實現自己的永續性、可靠性和容錯性。目前,Debezium服務支援的資料庫有MySQL、PostgreSQL、SQL server、Oracle、Mongodb。

基於Debezium的CDC管道架構

企業級雲資料庫最佳實踐

眾所周知,在業務系統中,會涉及到多個資料來源的資料流轉,例如線上系統的資料流轉到分析系統、流計算系統、搜尋引擎、快取系統、事件處理系統等等。那麼,實時的資料流轉能力是至關重要的。為了實現這一目的,CDC系統由此出現。

CDC系統用於捕獲上游資料的實時變化(已提交的資料),寫入訊息佇列(例如Kafka)並持久化。對於下游系統,可以透過Spark Streaming消費訊息佇列的資料結合業務邏輯做一些ETL資料處理,或者基於HBase Connector將資料轉儲到HBase,從而實現實時的資料流轉。

我們在物流的業務實踐中,由於資料爆發性增長,從而進行了資料庫拆分、分庫分表。但是在拆分之後,我們又遇到了新的挑戰: 如何解決分庫分表之後資料集中的檢索問題呢?此時,Debezium服務應運而生。透過Debezium實時資料管道,將一千多張資料表準實時地同步到Kafka Topic下,再由業務端消費Topic訊息攝取資料到ElasticSearch進行檢索,便可以完成地址搜尋應用場景的構建。

雲資料庫PostgreSQL增量訊息同步原理

Logical Decoding

解析WAL成為邏輯資料的過程被稱為Logical Decoding,是從PostgreSQL 9.4開始引入的特性。Logical Decoding是把WAL日誌解析成邏輯日誌的過程,將使用者定閱的資料變化(即對某些表的insert/update/delete操作來帶的資料變化)輸出成特定的資料格式,Debezium支援Logical Decoding plugin有decoderbufs、wal2json、pgoutput(PostgreSQL 10以上版本)。

複製槽

複製槽(replication slots)是實現同步需求的重要部分,建立一個slot後,能夠儲存邏輯或物理流複製的基礎資訊,類似MySQL的位點資訊。這樣,Debezium透過PostgreSQL JDBC連線到PostgreSQL資料來源,然後基於邏輯流複製協議,即可從replication slots獲取狀態資訊,同步資料變更。

基於Debezium Connector攝入資料到其他資料來源

Debezium Connector可以將資料庫執行DML操作所產生的資料變更事件,以特定的資料格式(JSON/Avro)寫入到Kafka對應的Topic下。那麼對於同步的目的端來說,只要能夠實現從Kafka消費的Connector,再加上一些和源資料對應的格式轉換邏輯,就能夠將資料同步,並持久化到不同的資料來源,例如ElasticSearch、HBase等。

企業級雲資料庫最佳實踐

Kafka Connector部署模式分為兩種,一種是 Standalone模式,一種是 Distribution模式。一般在生產模式下建議使用Distribution模式。在叢集模式下,可以擴充套件、容錯,一旦某個節點的task任務出現異常,其他正常的節點能夠及時接管出現異常的task任務。

具體該如何將PostgreSQL同步資料到ElasticSearch並在Distribution模式下進行集中管理部署,請見下方的示意圖。

企業級雲資料庫最佳實踐

Debezium功能特性:

  • 快照支援:可選不同的模式,一個初始資料庫當前狀態的快照可以支援全量資料的同步。這樣能夠避免由於已經執行了一段時間的資料庫中有些事務日誌已經被丟棄,導致這部分的資料無法同步到Kafka上的情況發生。
  • 過濾器:可以透過白名單/黑名單過濾器對捕獲的模式、表和列集進行配置。
  • 遮蔽:能夠遮蔽特定列中的值,例如敏感資料。
  • 監視:大多數Connector都可以使用JMX進行監視,透過Prometheus和Grafana可以有效監控Debezium Connector的執行。
  • 不同的即時訊息轉換:例如用於訊息路由、提取新記錄狀態。
透過上述內容,想必大家能夠對Debezium服務和雲資料庫PostgreSQL準實時資料同步原理有了進一步的理解。目前,京東智聯云云資料庫 PostgreSQL已上線,雲資料庫 PostgreSQL 是京東智聯雲資料庫團隊歷時 1 年多精心研發的產品,該產品凝聚了京東智聯雲資料庫團隊多年來的 PostgreSQL 使用經驗,能夠提供一個穩定、可靠的資料儲存服務。
雲資料庫 PostgreSQL 易於部署、管理和擴充套件,預設支援主從熱備架構,提供資料備份、故障恢復、監控等全套解決方案,徹底解決資料庫運維的煩惱。同時,京東智聯雲“雲資料庫 PostgreSQL”透過使用網路隔離、白名單限制外網訪問等方式,為資料庫服務提供了高階別的安全性需求,幫助使用者省去絕大部分複雜而繁瑣的管理工作,從而使使用者能夠更專注於業務流程的開發與建設。

點選 閱讀 快來立即體驗 [雲資料庫 PostgreSQL]吧!

企業級雲資料庫最佳實踐

企業級雲資料庫最佳實踐


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69912185/viewspace-2690217/,如需轉載,請註明出處,否則將追究法律責任。

相關文章