《基于 Flink CDC 和 OceanBase 的云上實時數倉探索_伍翀.pdf》由會員分享,可在線閱讀,更多相關《基于 Flink CDC 和 OceanBase 的云上實時數倉探索_伍翀.pdf(29頁珍藏版)》請在三個皮匠報告上搜索。
1、伍翀(云邪)阿里云 Flink SQL 負責人基于基于 FlinkFlink CDC CDC 和和 OceanBaseOceanBase的實時數倉探索的實時數倉探索Contents01Flink CDC 介紹02Flink CDC 核心技術03Flink CDC x OceanBase 構建實時數倉04未來規劃目 錄01Flink CDC 介紹Event-drivenApplicationsApache Flink 流批一體的流式計算引擎StreamingPilpelinesStream&BatchAnalyticsResources|Storage(K8s,Yarn,Mesos,)|(HDF
2、S,S3,NFS,)ApplicationEvent LogDatabase,File System,KV-Store(Real-time)EventsDatabase,File System,KV-StoreTransactionsLogsIOTClicksFlink CDC 介紹Change Data Capture(CDC)是一種用于捕獲數據庫中數據變更的技術Flink CDC整庫同步表結構變更同步分庫分表合并Streaming ETL全增量一體化元數據千表入倉無鎖讀取斷點續傳并發讀取TiDBPolarDBRDS MySQLHudiIcebergTiDBHologresStarRocks
3、傳統數據入倉架構 1.0DataX/Sqoop全量同步影響業務穩定性天級別產出性能瓶頸明顯傳統數據入倉架構 2.0DataX/Sqoop全量同步Canal增量同步定時合并(小時/天)不影響業務穩定性小時級別產出全量+增量割裂鏈路長,組件多Flink CDC 實時入倉架構全增量實時同步Flink CDC不影響業務穩定性秒級更新全量+增量一體化鏈路短,組件少傳統 ETL 數據分析鏈路DebeziumClickHouseIcebergHudiOceanBase采集(E)計算(T)傳輸(L)傳統 ETL 數據分析鏈路DebeziumClickHouseIcebergHudiOceanBase中間件集群
4、?消息隊列?數據一致性?基于 Flink CDC 的 ETL 數據分析鏈路ClickHouseIcebergHudiOceanBase采集+計算+傳輸(ETL)Flink CDC02Flink CDC 核心技術 無鎖算法:業務無影響,仍保證一致性 并行讀?。捍蠓嵘A繑祿雮}效率 斷點續傳:有效提升同步穩定性全局鎖單并發失敗重做無鎖算法并發讀取斷點續傳K1K2K3K4K5K7K8K4K6resume binlogFrom pos1Output Stream:無鎖一致性讀取K1K7K8K2K5K4K6BinlogK1K3K3K4K5ChunkWindowopen=pos0Windowopen=
5、pos1mergeTask1Task2Task3chunk1chunk2chunk3chunk1chunk2chunk3chunk1chunk2chunk3chunk1chunk2chunk3chunk1chunk2chunk3Task1Task2Task3全量階段增量階段全增量自動切換并行讀取無鎖一致性切換核心技術 全增量一體化讀取核心技術 動態表(Dynamic Table)動態表(Dynamic Table):數據會隨著時間變化的表StreamuserclicksMary1Bob1Mary2Llz1Bob23MaryDynamic TableuserclicksMary3Bob2Mary
6、1ApplyChangelog流與動態表的對偶性核心技術 連續查詢(Continuous Query)連續查詢(Continuous Query):持續運行的查詢StreamStream連續查詢連續查詢StreamStream連續查詢Stream核心技術 Changelog MechanismSourcewordHelloWorldWord CountWord countwordcntHello1World1Hello,1World,1cntfreq1Count Frequencywithout changelogSELECT word,COUNT(*)as cntFROM wordsGROU
7、P BY wordSELECT cnt,COUNT(cnt)as freqFROM word_countGROUP BY cnt2核心技術 Changelog MechanismSourcewordHelloWorldHelloWord CountWord countwordcntHello2World1Hello,1World,1Hello,2cntfreq1221Count Frequency應該是“1”without changelogSELECT word,COUNT(*)as cntFROM wordsGROUP BY wordSELECT cnt,COUNT(cnt)as freq
8、FROM word_countGROUP BY cnt核心技術 Changelog MechanismSourcewordHelloWorldWord CountWord countwordcntHello1World 1Hello,1World,1cntfreq1Count Frequencywith changelogSELECT word,COUNT(*)as cntFROM logsGROUP BY wordSELECT cnt,COUNT(cnt)as freqFROM word_countGROUP BY cntHelloWorldinsertinsertinsertinsert2
9、核心技術 Changelog MechanismChangelog 是保證 Streaming SQL 結果正確的關鍵機制優化器會自動判斷是否要輸出和處理 update_before,用戶無需關心SourcewordHelloWorldHelloWord CountWord countwordcntHello2World 1Hello,1Hello,1World,1cntfreq1121Count Frequencywith changelogSELECT word,COUNT(*)as cntFROM logsGROUP BY wordSELECT cnt,COUNT(cnt)as freq
10、FROM word_countGROUP BY cntHelloWorldHelloinsertinsertinsertinsertinsertupdate_beforeupdate_afterWorld,203Flink CDC x OceanBase 構建實時數倉傳統實時數倉構建方案:Streaming MQ數據源FlinkODSFlinkDWDFlinkDWSFlinkADSKV引擎Dash boards實時同步實時同步實時同步分析型數倉方案優勢:實踐豐富、層次分明、分工明確方案劣勢:數據冗余、鏈路復雜、排查困難現代實時數倉構建方案:Streaming OLAP數據源FlinkODSFl
11、inkFlinkDash boardsDWDDWSBinlogBinlog實時數倉Ad-hocqueries解決數據冗余:無需移動數據,數據復用,模型統一,架構簡化解決鏈路復雜:OceanBase 替代了之前的 Kafka、KV 服務、分析服務解決排查困難:OceanBase 每一層都可查、可更新、可修正現代實時數倉構建方案:Streaming OLAP數據源FlinkODSFlinkFlinkDash boardsDWDDWSBinlogBinlog實時數倉Ad-hocqueries關鍵能力OceanBase CDC 讀取OceanBase CDC 寫入 全量讀?。篛ceanBase 兼容
12、MySQL 協議,因此采用 JDBC 方式完成全量數據讀取 增量讀?。菏褂?oblogproxy 捕獲 binlog 數據,logproxy-client 訂閱 oblogproxy 獲取增量數據 全增量切換:由于 OceanBase 不支持表鎖,也不支持行級 binlog 位點,因此只支持 at-least-once讀取,但Flink 會自動去重,保證最終數據計算的不重不丟OceanBase CDC 讀取增量同步OceanBaseOceanBaseFlink CDC OceanBase Connectorobcdcoblogmsglogproxy-clientJDBC全量同步OceanBas
13、e 兼容 MySQL 協議,支持 MySQL 5.6/5.7 的絕大多數語法,因此在許多場景下可以將其視作MySQL 來使用,如作為 Flink 的目的端數據庫,可使用 flink-jdbc-connector 基于 MySQL 協議來寫入,支持插入、更新和刪除。OceanBase CDC 寫入Flinkflink-jdbc-connectorMySQL 協議案例:Flink x OceanBaseFlinkflink cdcflink jdbc04未來規劃未來規劃 Flink x OceanBase 的全面集成Flink全量讀取Binlog讀取全增量一體化讀取實時寫入與更新寬表MergeExactly-Once 讀取*DDL 變更同步*整庫同步*維表查詢*元數據查詢&更新*OceanBase 結果表OceanBase 維表OceanBase 源表OceanBase CatalogThank you!GitHub:/oceanbase/服務號:OceanBase數據庫星球論壇: