乳尖春药H糙汉共妻,国产成人无码精品亚洲,少妇肉欲系列1000篇,免费永久看黄神器

公司新聞

實時監視同步數據庫變更,這個框架真是神器

作者:admin 日期:2023-09-06 瀏覽:

實時監視同步數據庫變更,這個框架真是神器

  我們數據庫中的數據一直在變化,有時候我們希望能監聽數據庫數據的變化并根據變化做出一些反應,比如更新對應變化數據的緩存、增量同步到其它數據源、對數據進行檢測和審計等等。而這種技術就叫變更數據捕獲(Change Data Capture)。對于這種技術我們可能知道一個國內比較知名的框架Canal,非常好用!但是Canal有一個局限性就是只能用于Mysql的變更數據捕獲。今天來介紹另一種更加強大的分布式CDC框架Debezium。

  提起Debezium這個框架,相信大多數普通開發者都比較陌生,但是提及它所屬的公司大家一定不會陌生。紅帽公司

  沒錯就是開源界最成功的紅帽公司。Debezium是為捕獲數據更改的流式處理框架,開源免費。Debezium近乎實時地監控數據庫行級別(row-level)的數據變更,并針對變更可以做出反應。而且只有已提交的變更才是可見的,所以不用擔心事務問題或者更改被回滾的問題。Debezium為所有的數據庫更改事件提供了一個統一的模型,所以不用擔心每種數據庫系統的復雜性。Debezium提供了對MongoDB、MySQL、PostgreSQL、SQL Server、Oracle、DB2等數據庫的支持。

  另外借助于Kafka Connector可以開發出一個基于事件流的變更捕獲平臺,具有高容錯率和極強的擴展性。Debezium Kafka 架構

  如圖所示,部署了用于 MySQL 和 PostgresSQL 的 Debezium Kafka連接器以捕獲對這兩種類型數據庫的更改事件,然后將這些更改通過下游的Kafka Connector將記錄傳輸到其他系統或者數據庫(例如 Elasticsearch、數據倉庫、分析系統)或緩存。

  另一種玩法就是將Debezium內置到應用程序中,來做一個類似消息總線的設施,將數據變更事件傳遞給訂閱的下游系統中。Debezium內置服務器架構

  Debezium對數據的完整性和可用性也是做了不少的工作。Debezium用持久化的、有副本備份的日志來記錄數據庫數據變化的歷史,因此,你的應用可以隨時停止再重啟,而不會錯過它停止運行時發生的事件,保證了所有的事件都能被正確地、完全地處理掉。?

  稍后我會演示一個Spring Boot集成Debezium的數據捕獲系統。

  理論介紹并不能讓你直觀感受到Debezium的能力,所以接下來我將使用嵌入式Debezium引擎來演示一下。流程圖

  如上圖所示,當我們變更MySQL數據庫中的某行數據時,通過Debezium實時監聽到binlog日志的變化觸發捕獲變更事件,然后獲取到變更事件模型,并做出響應(消費)。接下來我們來搭建環境。

  為了方便這里使用MySQL的Docker容器,對應的腳本為:

  上面的腳本運行了一個用戶名為、密碼為并且將數據掛載到本地路徑的MySQL容器,同時開啟了binlog日志,并設置為,這些信息后面配置會用。?

  請注意如果不使用用戶的話,需要保證用戶具有, , , , 五種權限。

  Spring Boot的應用中加入下列依賴:

  ?

  目前最新的版本號為1.5.2.Final。

  然后聲明需要的配置:

  配置分為兩部分:一部分是Debezium Engine的配置屬性,參見Debezium Engine配置[1]。一部分是Mysql Connector的配置屬性,參見Mysql Connector配置[2]。

  應用程序需要為運行的Mysql Connector啟動一個Debezium引擎,這個引擎會以異步線程的形式運行,它包裝了整個Mysql Connector連接器的生命周期。聲明一個引擎需要以下幾步:聲明收到數據變更捕獲信息的格式,提供了、、、、等格式。加載上面定義的配置。聲明消費數據更改事件的函數方法。

  聲明的偽代碼:

  方法為:

  引擎的啟動和關閉正好契合Spring Bean的生命周期:

  啟動該Spring Boot項目,你可以采用各種手段往數據庫增刪改數據,觀察會有類似下面的打印:

  說明Debezium監聽到了數據庫的變更。你可以想想這種技術在哪些場景有用武之地。好了今天的分享就到這里,感謝大家的支持,我是:碼農小胖哥。原創不易,請多多關注、點贊、轉發、再看。?

  文中的源代碼可通過關注:碼農小胖哥 回復獲取。[1]

  Debezium Engine配置: https://debezium.io/documentation/reference/1.5/development/engine.html#engine-properties[2]

  Mysql Connector配置: https://debezium.io/documentation/reference/1.5/connectors/mysql.html#mysql-connector-properties

  初創公司真的適合用微服務嗎?

  2021-06-02

  Spring Security 實戰干貨:如何獲取當前用戶信息

  2021-05-31

  電話咨詢

<abbr id="ehohq"><form id="ehohq"><small id="ehohq"></small></form></abbr>
  • <menu id="ehohq"><dl id="ehohq"></dl></menu>

    1. <bdo id="ehohq"><span id="ehohq"></span></bdo>
        主站蜘蛛池模板: 微山县| 乐至县| 青州市| 颍上县| 奉新县| 江口县| 阿勒泰市| 和硕县| 江口县| 湖口县| 师宗县| 惠来县| 神农架林区| 湛江市| 志丹县| 江山市| 郑州市| 阳朔县| 麻城市| 五河县| 合山市| 霞浦县| 高阳县| 南澳县| 巩留县| 河池市| 铜川市| 余江县| 淳化县| 肥东县| 湟源县| 丹阳市| 观塘区| 嫩江县| 小金县| 阳西县| 修水县| 鹰潭市| 蛟河市| 红河县| 翁源县|