8月27日,ChunJun社區與OceanBase社區聯合組織的開源線下Meetup成功舉辦,會上重磅發佈了「OceanBase&ChunJun:構建一體化數據集成方案」。 這是OceanBase&ChunJun聯合解決方案的首次發佈,將針對分庫分表的實時數據集成、跨集群/租戶的數據集成、不同數據源 ...
8月27日,ChunJun社區與OceanBase社區聯合組織的開源線下Meetup成功舉辦,會上重磅發佈了「OceanBase&ChunJun:構建一體化數據集成方案」。
這是OceanBase&ChunJun聯合解決方案的首次發佈,將針對分庫分表的實時數據集成、跨集群/租戶的數據集成、不同數據源的實時數據集成、日誌類型數據的全增量一體化處理等諸多場景,提供高可靠數據集成解決方案。
下麵為大家帶來具體介紹,歡迎分享給更多的開發者和愛好者共同學習、探討。
課件獲取:
關註公眾號“ChunJun”,後臺私信“Meetup”獲得分享課件
視頻回看:
https://www.bilibili.com/video/BV1mG41137ZV?spm_id_from=333.999.0.0
ChunJun&OceanBase是什麼
ChunJun:一款穩定、高效、易用的數據集成框架
ChunJun 是一款高效、穩定、易用的數據集成框架,目前基於Apache Flink 實時計算引擎實現批流一體的數據讀取和寫入。
ChunJun的核心能力
• 多數據源:目前已支持30+數據源,涵蓋了各類資料庫、文件系統等
•靈活的任務運行模式:支持開箱即用的local模式運行,也支持flink standalone、yarn、k8s等模式;支持Taier、DolphinScheduler、Dlinky等大數據調度平臺
• 數據還原:支持 DML 和 DDL 同步,可以最大程度保證源端和目標端的數據和結構統一
• 斷點續傳:依托Flink的Checkpoint機制,可以從失敗的位點重試
• 速率控制:支持多種分片方式,用戶可根據自身業務調整分片邏輯;支持調整讀取和寫入的併發度,控制每秒讀取的數據量
• 臟數據管理:支持多種方式存儲臟數據,控制臟數據生命周期,並提供統計數據
OceanBase:企業級開源分散式 HTAP資料庫
企業級開源分散式 HTAP(Hybrid Transaction/Analytical Processing)資料庫,具有原生分散式架構,支持金融級高可用、透明水平擴展、分散式事務、多租戶和語法相容等企業級特性。
OceanBase的核心能力
• 高可用:基於 Paxos 協議,強一致性;少數副本故障,數據不丟,服務不停;RPO=0; RTO<30s
•高擴展:線上進行水平擴、縮容;自動實現負載均衡
• 低成本:不依賴高端硬體,降低成本;極致的壓縮比,節省成本
• HTAP:一套計算引擎同時支持混合負載;一套資料庫,讀寫分離
• 高相容:相容 MySQL 協議與語法;降低業務改造遷移成本
• 多租戶:一套環境獨立運行多套業務;保證租戶數據安全
ChunJun OceanBase Connector 實現
OceanBase CDC
OceanBase作為分散式資料庫,日誌信息分佈在集群當中不同的機器上,需要有一個工具把這些日誌信息進行彙總,拿到正確、完整的日誌信息。
OceanBase社區版利用CDC 組件架構進行這項工作,它主要是通過oblogproxy來提供日誌拉取的服務,如果想集成OceanBase增量數據的處理,可以在自己的業務應用中去集成oblogclient來進行處理,目前已對接了ChunJun、Flink CDC、Cloud Canal等數據集成框架。
OceanBase 社區版 CDC 組件架構
ChunJun Connectors 的工作模式
ChunJun中的讀取和寫入主要是通過Connector中的一些結構和模塊來實現的,包含RDB、CDC 、NoSQL、MQ、File 等。
• RDB Connectors:基於 JDBC Connector,通過輪詢支持了源表包含自增列且增量數據只有 insert 操作時的全增量一體化讀取及寫入。
• CDC Connectors:基於資料庫的Binlog 或 Redolog,實現增量數據的讀取。
Flink 流數據與動態表
ChunJun上的這些數據最終會在Flink進行處理,在Flink當中通過定義動態表的結構,可以將流數據在執行SQL前先轉換為可以操作的表,然後通過連續查詢來獲取一個不斷更新的執行結果。
下圖就是數據從數據流轉成動態表,在流數據上定義一張標,通過執行連續查詢來獲取不斷更新的結果。
ChunJun OceanBase Connector 的實現
在ChunJun中主要是通過Chunjun Core模塊來滿足將數據讀取到Flink及從Flink中寫出去,其中DynamicTableSourceFactory及DynamicTableSinkFactory支持SQL類型的任務,SourceFactory及SinkFactory用來支持Json類型的任務。
如下圖所示,ChunJun OceanBase Connector 的實現主要通過兩種方式:一種是從Chunjun Core到JDBC Connector再到OceanBase Connector;另外一種是從Chunjun Core直接到OceanBase CDC Connector。
ChunJun & OceanBase 應用
場景1:針對分庫分表的實時數據集成
使用 Oceanbase CDC Connector,庫表名利用Fnmatch通配,實現分庫分表數據源的實時數據集成。這個場景可以做增量同步,也可以做單數據流的ETL操作。
場景2:跨集群/租戶的數據集成
目前,不同租戶的數據在一個連接當中獲取不到,如果想對OB當中不同租戶的數據做一個統一處理,需通過多個資料庫的連接來實現分別讀取,這時可以利用ChunJun中與OceanBase相關的connector,讀取不同集群、租戶數據到 Flink。
場景3:不同數據源的實時數據集成
可以對不同種類數據源進行數據匯聚,使用不同類型資料庫的 connector,讀取不同數據源的數據到 Flink。
場景4:日誌類型數據的全增量一體化處理
對於只有 insert 增量變動的數據源,基於自增列進行全增量一體化的處理。
ChunJun&OceanBase未來展望
● 提高代碼質量
· 增加測試 case,覆蓋所有的啟動方式和常見的業務場景
· 完全適配 MySQL 5.1.4x 和 8.0 驅動
● 20+種豐富的任務類型
· 增加非 transformer 模式 sync 任務的支持
· 增加 OceanBase 企業版 Oracle 模式的支持
● 提高方案可靠性
· 增加數據讀取的事務性支持
· 簡化 oblogproxy 的部署,支持 Docker 部署
· 增加詳細的使用文檔
袋鼠雲開源框架釘釘技術交流qun(30537511),歡迎對大數據開源項目有興趣的同學加入交流最新技術信息,開源項目庫地址:https://github.com/DTStack/Taier