<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Flink CDC 2.4 正式發(fā)布,新增 Vitess 數(shù)據(jù)源,更多連接器支持增量快...

          共 9467字,需瀏覽 19分鐘

           ·

          2023-07-01 06:13

          01

          Flink CDC 簡介


          Flink CDC ? [1] ?是基于數(shù)據(jù)庫的日志 CDC 技術(shù),實現(xiàn)了全增量一體化讀取的數(shù)據(jù)集成框架。配合 Flink 優(yōu)秀的管道能力和豐富的上下游生態(tài),F(xiàn)link CDC 可以高效實現(xiàn)海量數(shù)據(jù)的實時集成。


          4c813539504758c37d0cb133f5a8d8d2.webp


          作為新一代的實時數(shù)據(jù)集成框架,F(xiàn)link CDC 具有全增量一體化、無鎖讀取、并行讀取、表結(jié)構(gòu)變更自動同步、分布式架構(gòu)等技術(shù)優(yōu)勢,同時社區(qū)提供了完善的中英文文檔支持 ? [2] 。在 Flink CDC 開源的三年時間里,社區(qū)發(fā)展迅速,目前 Flink CDC 社區(qū)已有 91 位貢獻者,7 位 Maintainer 成員,社區(qū)釘釘群(群號: 33121212) 超過 8900 人


          02

          Flink CDC 2.4 概覽


          在社區(qū)用戶和開發(fā)者們的共同努力下, Flink CDC 2.4 在端午假期后正式發(fā)布了:

          https://github.com/ververica/flink-cdc-connectors/releases/tag/release-2.4.0


          812fc751b09d0202269b19bd322b9d74.webp


          2.4 版本共有 32 位社區(qū)貢獻者參與貢獻,計解決 141 個 issue,合并了 86 個PR,貢獻了 96 個 commits。從代碼分布上看,MySQL CDC, MongoDB CDC, PostgreSQL CDC,增量快照框架(flink-cdc-base)模塊以及文檔模塊均為用戶帶來了很多特性和改進。


          本文通過下圖帶你 10 分鐘快速了解 Flink CDC 2.4 版本的重大改進和核心特性。


          408d8d6b94be338d42680ef93e0c776c.webp


          • 新增 Vitess CDC 連接器,支持 Vitess 增量數(shù)據(jù)同步。

          • PostgreSQL CDC,SQL Server CDC 兩大連接器均接入了增量快照框架,從而提供了無鎖讀取,并發(fā)讀取和斷點續(xù)傳的能力。

          • 2.4 版本升級 Debezium 的依賴版本到 1.9.7.Final,引入了 Debezium 新版本的功能,優(yōu)化和修復(fù),比如:修復(fù)部分 DDL 無法解析的問題,修復(fù)解析 MySQL JSON 函數(shù)問題,Oracle 事件增加 scn 信息等。

          • 增量快照框架在 2.4 版本增加了自動關(guān)閉全量階段結(jié)束后的空閑 Reader 功能,該功能非常實用,可以在生產(chǎn)環(huán)境節(jié)省資源。

          • MySQL CDC 連接器在 2.4 版本支持讀取無主鍵表,同時支持新增表時原有實時同步鏈路不斷流。

          • 社區(qū) 2.4 版本兼容 Flink 1.13 ~ 1.17 五個 Flink 版本。CDC 的 SQL Connector 可以跑在不同的 Flink 集群上而無需任何修改,實現(xiàn)跨版本兼容。如果是 Datastream 作業(yè),則需要根據(jù)不同的 Flink 版本引入不同版本的 flink-shaded-guava 依賴,DataStream 用戶可以參考 SQL Connector 的打包方式管理正確的依賴。

          • MongoDB CDC 支持指定時間戳消費數(shù)據(jù),支持 mongodb + srv 連接協(xié)議,并修復(fù)了若干問題,如:無法解析帶連字符的庫名,'poll.await.time.ms' 配置未生效,解析 DDL出現(xiàn)空指針等。

          • OceanBase CDC 連接器支持 JDBC 參數(shù)設(shè)置,支持指定 Oracle 驅(qū)動,完善對 Oracle 數(shù)據(jù)類型的支持。


          03

          詳解核心特性和重要改進


          3.1 深入解讀


          Flink CDC 2.4 版本帶來了很多重要的改進和特性,本文挑選最重要的五個進行進一步解讀。


          9cbdbde39b4b8d42b15d5d20a594f317.webp


          • 新增 Vitess CDC 連接器

          Vitess ? [3] ?是一個用于部署,擴展和管理大型 MySQL 實例集群的數(shù)據(jù)庫解決方案。Vitess 的 VStream 是一個變更事件訂閱服務(wù),它能夠提供與來自 Vitess 集群底層 MySQL 分片的二進制日志相同的信息。下游可以訂閱一個 keyspace 的多個分片,很方便的實現(xiàn) Vitess 的下游 CDC 處理工具。Vitess CDC 連接器利用 VStream 獲取數(shù)據(jù)變更消息并發(fā)送,目前只支持讀取增量階段的變更同步,相當(dāng)于僅支持 latest 的啟動模式。

          Vitess CDC 連接器的支持背后還有個小故事,該 Connector 是來自 Vinted 的 Simonas Gelazevicius 開發(fā),秉持 upstream first 的開源貢獻精神,這位貢獻者從 2.0 版本就請求社區(qū)合并。但是這個數(shù)據(jù)源國內(nèi)用戶非常少,各個Maintainer 都不熟悉其技術(shù)細節(jié),所以一直沒能合并到社區(qū)主干分支。Simonas Gelazevicius 在 Flink CDC 社區(qū)每發(fā)布一個版本后都會主動 rebase PR, 這股堅持打動了社區(qū)全體 Maintainer 成員,社區(qū) Maintainer 任慶盛和方盛凱主動學(xué)習(xí) Vitess 相關(guān)技術(shù),幫助 review 并改進 PR。最終該連接器由貢獻者Simonas Gelazevicius, Gintarasm ,方盛凱和任慶盛共同完成。


          • PostgreSQL CDC 和 SQL Server CDC連接器接入增量快照框架

          2.4 版本中,PostgreSQL CDC 連接器和 SQL Server CDC 連接器都對接到了 Flink CDC 增量快照框架上,實現(xiàn)了增量快照算法,從而提供無鎖讀取,并行讀取和斷點續(xù)傳的功能。


          fff297c5e6d620f32ed9b4a803541704.webp


          • PostgreSQL CDC 連接器支持增量快照原理

          PostgreSQL CDC 連接器需要結(jié)合 logical decoding?[4]?功能讀取 PostgreSQL 事務(wù)日志中的變更數(shù)據(jù),這需要啟動一個在整個集群中唯一的 Replication Slot,并在 output plugin?[5]?的幫助下處理這些變更,通過記錄讀取到的 WAL 位點來實現(xiàn)增量階段的切換和故障恢復(fù)。

          增量快照框架除了在增量階段需要讀取變更數(shù)據(jù),在全量階段對每個 SnapshotSplit 也需要啟動 Backfill Task 同步做快照時發(fā)生的變更。為了避免 Replication Slot 出現(xiàn)沖突,PostgreSQL CDC 連接器采用以下方法建立 Slot。首先 ‘slot.name’ 配置項為必填,需要用戶指定,這里指定的 slot name 會用在增量階段啟動的 Slot,并且這個 Slot 在作業(yè)啟動時就會創(chuàng)建,在作業(yè)停止后也不會刪除,以此來保證增量階段讀到啟動后完整的變更數(shù)據(jù),并可以從 Checkpoint 重啟。對于全量階段每個 Backfill Task 的 Slot,會使用“slotname_subTaskId”的命名風(fēng)格,為了避免沖突和浪費 Slot 資源,這些 Slot 將會在全量讀取停止后刪除。


          • SQL Server CDC連接器支持增量快照原理

          SQL Server CDC 連接器通過變更數(shù)據(jù)捕獲功能 ? [6] ?讀取指定數(shù)據(jù)庫和表的變更數(shù)據(jù),并存到專門建立的 change table 中。這需要對指定的數(shù)據(jù)庫和表開啟 CDC 功能,來獲取行級別的變更。通過記錄數(shù)據(jù)庫日志的 LSN (Log Sequence Number),來實現(xiàn)增量階段的切換和故障恢復(fù)。

          至此,F(xiàn)link CDC 支持增量快照算法的數(shù)據(jù)源不斷擴大,在接下來的版本中,社區(qū)也在規(guī)劃讓更多的連接器對接到增量快照框架上。


          • 增量快照框架支持自動釋放資源

          Flink CDC 的增量快照框架有兩個主要階段:全量階段和增量階段。這兩個階段的并行度并不相同,全量階段支持多并行度,加快大量數(shù)據(jù)的同步過程,增量階段讀取變更日志,需要使用單并發(fā)保證事件的順序和正確性。在全量階段讀取結(jié)束后,由于增量階段只需要一個并發(fā),會出現(xiàn)大量的空閑 Reader,比較浪費資源。2.4 版本使用增量快照連接器時,支持配置打開自動關(guān)閉空閑 Reader 的功能來關(guān)閉這些空閑 Reader。由于這個功能依賴于 Flink 1.14 之后支持的 Checkpoint on finished Task 特性,所以只支持在 Flink 1.14 或更新的 Flink 版本上使用。


          • MySQL CDC 連接器功能更新

          作為社區(qū)最受用戶關(guān)注的 MySQL CDC 連接器,2.4 版本中社區(qū)引入了一些高級特性,具體包括:

          ????1.?支持無主鍵表

          ??? MySQL CDC 連接器 2.4 版本支持使用無主鍵表,相比于有有主鍵的 MySQL 表,無主鍵表存在一些使用上需要額外注意的事項。無主鍵表使用時需要通過 ‘scan.incremental.snapshot.chunk.key-column’ 配置指定一列作為分片列,用于將表分為多個分片進行同步,建議選擇有索引的列作為分片列,使用無索引的列將會導(dǎo)致全量階段多并發(fā)同步時使用表鎖。其次,選擇的分片列需要保證不存在數(shù)據(jù)的更新操作(比如從 1 更新到 2),如果存在更新操作,則只能保證 At-Least-Once 語義。

          ????2. 支持新增表實時不斷流

          ??? MySQL CDC 之前在處理新增表時,原有的實時同步鏈路會發(fā)生斷流現(xiàn)象,需要等待新增加表的全量讀取結(jié)束后,才會繼續(xù)進行同步,會對延遲敏感的用戶造成較大影響。例如,新增加的表歷史數(shù)據(jù)比較多,完成新增表的全量同步需要花費 30 分鐘,那么對于已經(jīng)處于增量階段的表,將需要等待 30 分鐘后才可以繼續(xù)同步屬于該表的增量數(shù)據(jù)。2.4 版本對新增表的處理邏輯進行進一步優(yōu)化,確保新增加的表的全量階段不會影響已有的實時同步鏈路,極大地提升了用戶體驗。

          ????3. 問題修復(fù)

          ??? 2.4 版本中,MySQL CDC 連接器對社區(qū)用戶反饋的使用問題進行了修復(fù),如指定 Binlog 位點消費無法從 savepoint 啟動,數(shù)據(jù)庫存在特殊字符無法處理,大小寫敏感導(dǎo)致的分片錯誤問題等。


          3.2 其他改進


          • Debezium 版本依賴升級到 1.9.7.Final 版本,引入對應(yīng) Debezium 版本的新功能和修復(fù)。

          • Flink CDC 2.4 版本兼容了 Flink 1.13 ~ 1.17 五個大版本,極大地降低用戶 Connector 的升級和運維成本。

          • OceanBase CDC 連接器支持 JDBC 參數(shù)設(shè)置,支持指定驅(qū)動,完善對 Oracle 數(shù)據(jù)類型的支持,同時修復(fù)了異常重連總是失敗等問題。

          • MongoDB CDC 支持指定時間戳消費數(shù)據(jù),支持 mongodb + srv 連接協(xié)議,并修復(fù)如無法解析帶連字符的庫名,'poll.await.time.ms' 配置未生效,解析 DDL 出現(xiàn)空指針等問題。

          • Oracle CDC 修復(fù)了全量階段存在的數(shù)據(jù)正確性問題。

          • 所有 CDC 連接器支持打印配置信息,便于排查問題。


          04

          未來規(guī)劃


          Flink CDC 開源社區(qū)的發(fā)展,得益于全體貢獻者的無私貢獻和 Maintainer 成員出色的社區(qū)工作,更離不開廣大 Flink CDC 用戶群體的積極使用和反饋報錯。Flink CDC 社區(qū)將會堅持做好開源社區(qū)的建設(shè), 當(dāng)前社區(qū)正在規(guī)劃 2.5 版本 [7], 歡迎貢獻者和用戶積極反饋,在接下來的版本,社區(qū)主要方向會圍繞下述四個方面展開:


          • 豐富數(shù)據(jù)源

          支持更多的數(shù)據(jù)源,并推動增量快照框架在各個 CDC 連接器的使用,讓更多的數(shù)據(jù)源支持無鎖讀取、并發(fā)讀取、斷點續(xù)傳等特性。


          • 優(yōu)化增量快照框架

          對增量快照框架接入中遇到的問題進行優(yōu)化,各個 CDC 連接器在增量快照框架可重用的代碼進行提取整理。


          • 完善限流與監(jiān)控

          提供限流功能,以降低全量階段對數(shù)據(jù)庫產(chǎn)生的查詢壓力。提供更豐富的監(jiān)控指標,可以獲取到任務(wù)進度相關(guān)指標監(jiān)控任務(wù)狀態(tài)。


          • 更豐富的使用方式

          支持 At least once 語義,支持 Snapshot only 的啟動模式等,可以為使用者提供更多的場景應(yīng)用。


          • 收斂支持的 Flink 版本

          隨著 Flink 版本逐漸增多,CDC 為兼容多個Flink版本的維護壓力也逐漸增加。參考目前 Flink 連接器的規(guī)則 [8],在后續(xù)版本中,CDC 連接器將會考慮僅支持 Flink 最新的 3-4 個版本。


          致謝


          感謝社區(qū)的 Maintainer 成員阮航, 徐榜江,孫家寶,龔中強,任慶盛為該版本所做的社區(qū)和發(fā)版工作。感謝所有為該版本做出突出貢獻的 Tigran Manasyan,川粉,Xiao Meng,Yaroslav Tkachenko, Simonas Gelazevicius, gintarasm 等 32 位社區(qū)貢獻者。


          貢獻者列表 (按字母排序)

          Hang Ruan,He Wang,JasonLee,Jiabao Sun,Jingsong Lee,Xiao Meng,Leonard Xu,Qingsheng Ren,Robert Metzger,Sergey Nuyanzin,Simonas Gelazevicius,Yaroslav Tkachenko,Tigran Manasyan,Tyrantlucifer,ZhongLinLeo,bb chen,ehui,emhui,gintarasm,gongzhongqiang,liangyaohui97,lin.zl,molsionmo,skylines,tison,wallkop,wangxiaojing,wuzhenhua,xixingya,zhaomin,zhuyuan03,含風(fēng)


          附錄


          [1] https://github.com/ververica/flink-cdc-connectors

          [2] https://ververica.github.io/flink-cdc-connectors

          [3] https://vitess.io/

          [4] https://www.postgresql.org/docs/current/logicaldecoding-explanation.html

          [5] https://www.postgresql.org/docs/current/logicaldecoding-output-plugin.html

          [6] https://learn.microsoft.com/en-us/sql/relational-databases/track-changes/about-change-data-capture-sql-server?view=sql-server-2017

          [7] https://github.com/ververica/flink-cdc-connectors/issues/2239

          [8]? https://cwiki.apache.org/confluence/display/FLINK/Externalized+Connector+development#ExternalizedConnectordevelopment-Flinkcompatibility


          數(shù)據(jù)倉庫系列文章(持續(xù)更新)

          1. 數(shù)倉架構(gòu)發(fā)展史
          2. 數(shù)倉建模方法論
          3. 數(shù)倉建模分層理論
          4. 數(shù)倉建模—寬表的設(shè)計
          5. 數(shù)倉建?!笜梭w系
          6. 數(shù)據(jù)倉庫之拉鏈表
          7. 數(shù)倉—數(shù)據(jù)集成
          8. 數(shù)倉—數(shù)據(jù)集市
          9. 數(shù)倉—商業(yè)智能系統(tǒng)
          10. 數(shù)倉—埋點設(shè)計與管理
          11. 數(shù)倉—ID Mapping
          12. 數(shù)倉—OneID

          關(guān)注我,不迷路

          瀏覽 39
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本激情视频网站免费 | AV日韩免费电影 | 香蕉趴趴网 | 国产三级片网站在线观看 | 日本中文字幕手机在线 |