精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

得物自建DTS平臺的技術演進

開發 架構
將現有的DTS能力都遷移到Flink平臺上,保持統一的技術棧,能夠極大的降低維護成本。現有遺留的雙向同步、數據比對等能力需要做進一步的改造和遷移,符合整體技術收斂的趨勢。

前言

DTS是數據傳輸平臺(Data Transfer Platform的縮寫)

隨著得物App的用戶流量增長,業務選擇的數據庫越來越多樣化,異構數據源之間的數據同步需求也逐漸增多。為了控制成本并更好地支持業務發展,我們決定自建DTS平臺。本文主要從技術選型、能力支持與演化的角度出發,分享了在DTS平臺升級過程中獲得的經驗,并提供一些參考。

1技術選型

DTS的主要目標是支持不同類型的數據源之間的數據交互,包括關系型數據庫(RDBMS)、NoSQL數據庫、OLAP等,同時整合了數據庫配置管理、數據訂閱、數據同步、數據遷移、DRC雙活數據同步支持、數據巡檢、監控報警、統一權限等多個模塊,以構建安全、可擴展、高可用的數據架構平臺。

1.1 能力對比

圖片圖片

1.2 DTS 1.0 - 以 canal/otter/datax 作為執行引擎

圖片圖片

1.3 為什么要切換到Flink?

為了支持多種讀端數據源和寫端數據源,需要一個統一數據處理框架,以減少重復組件和提高開發效率。同時數據源類型和組件的維護難度與復雜度呈線性增長,現有的組件需要統一維護到一個項目中。

Canal和Otter等組件的社區活躍度低,很長時間沒有得到維護更新。因此,需要選擇一個新的、活躍的框架。此外,現有組件也無法有效支持全量+增量一體化的操作。

因此,使用一個統一的數據處理框架,能夠同時支持多種讀端數據源和寫端數據源,以及全量+增量一體化的功能,是必要的。這樣能夠降低組件的維護難度和復雜度,提高開發效率。

通過DTS 2.0,我們希望將canal/otter/datax演化為一個任務執行框架+管理平臺,能夠為后續大量數據源迭代提速。

1.4 DTS 2.0 以Flink作為執行引擎

現有的開發流程:

  • 統一的任務執行框架,集成flink并引入connectors根據配置組裝出具體的DTS任務
  • 維護并研發新的 connector

當我們需要支持新的數據源, 首先將數據源相關插件維護在connector中,接著在執行框架中引入需要的組件,其中存在大量的可復用的功能,這樣就做到了connector及功能組件復用的效果。

2DTS 現有能力

圖片圖片

3我們做了什么?

3.1 DTS Connectors框架 - 數據源支持提速

在Flink CDC基礎上實現的全量/增量任務同步框架,基本的架構如下

圖片圖片

其中Connector中分別實現了Flink提供的SourceFunction和SinkFunction函數,分別負責從讀端讀取數據,往寫端寫入數據,因此一個Connector可同時存在于上游或者下游。

任務的啟動流程:
  • 指定任務Json配置, 根據類型加載SourceFunction和SinkFunction構建通用能力函數并啟動

a. 任務的Main函數如下所示, 根據如下的Json文件加載到對應的Connector中的SourceFactory或者SinkFactory來構造對應的DataStream。

DataStream是Flink中提供的數據流操作類

public class Main {
    public static void main(String[] args) throws Exception {


        // 解析參數
        ParameterTool parameterTool = ParameterTool.fromArgs(args);
        String[] parsedArgs = parseArgs(parameterTool);


        Options options = new OptionParser(parsedArgs).getOptions();
        options.setJobName(options.getJobName());


        // 執行任務
        StreamExecutionEnvironment environment =
                EnvFactory.createStreamExecutionEnvironment(options);
        exeJob(environment, options);
    }

任務Json配置:

{
  "job":{
    "content":{
      "reader":{
        "name":"binlogreader",
        "parameter":{
          "accessKey":"",
          "binlogOssApiUrl":"",
          "delayBetweenRestartAttempts":2000,
          "fetchSize":1,
          "instanceId":"",
          "rdsPlatform":"",
          "restartAttempts":5,
          "secretKey":"",
          "serverTimezone":"",
          "splitSize":1024,
          "startupMode":"LATEST_OFFSET"
        }
      },
      "writer":{
        "name":"jdbcwriter",
        "parameter":{
          "batchSize":10000,
          "concurrentWrite":true,
          ],
          "dryRun":false,
          "dumpCommitData":false,
          "errorRecord":0,
          "flushIntervalMills":30000,
          "poolSize":10,
          "retries":3,
          "smallBatchSize":200
        }
      }
    },


  }
}

b. 我們提供了兩個抽象工廠類,SourceFactory, SinkFactory, 其中的createSource, createSink便是子工廠需要實現的方法,不同的數據源實現不同。

public abstract class SourceFactory<T> {
    public abstract DataStream<T> createSource();
}
public abstract class SinkFactory<T> {
    public abstract void createSink(DataStream<T> rowData) throws Exception;
}

c. 接下來,我們只需要實現對應的子工廠方法就可以了

public class BinlogSourceFactory extends AbstractJdbcSourceFactory {
    @Override
    public DataStream<TableRowData> createSource() {


        List<String> tables = this.binlogSourceConf.getConnection().getTable();
        Set<String> databaseList = new HashSet<>(2);


        // 使用對應的Connector構建DataStream
    }
}

d. 通用能力函數:RateLimitFunction, BinlogPositionFunction 其中分別實現了對應的任務能力,例如限流,任務位點保存等。

public class RateLimiterMapFunction<T> extends RichMapFunction<T, T> {




    private transient FlinkConnectorRateLimiter rateLimiter;




    @Override
    public T map(T value) throws Exception {
        if (rateLimiterEnabled) {
            rateLimiter.acquire(1);
        }
        return value;
    }

當任務所需的函數都創建完成后,任務就真正開始運行了。

收益:

使用一套封裝完善且易擴展的框架能夠提高開發效率并降低后續代碼的維護成本。相比于DTS1.0、Canal和Otter等項目,該項目的維護成本大大降低,同時提供了更好的擴展性,使得我們能夠在短期內支持PostgreSQL、MongoDB、Hbase、StarRocks等不同的數據源。

3.2 RDS日志獲取

DTS通過提供增量和全量同步能力為業務提供數據同步功能,但在增量訂閱/同步任務執行過程中,可能會遇到一些異常情況。其中,以下三種情況需要特別處理:

  • Binlog可用性

云廠商的數據庫實例本地binlog有效期8小時,過期部分進行OSS備份。MySQL業務高峰期或者DDL變產生大量的binlog,  DTS任務嘗試獲取過期數據失敗,任務因此中斷。因此,DTS支持了本地binlog+OSS備份binlog的獲取及切換,保障日志可用性。

  • 數據庫實例主從切換

RDS經常會發生主備節點切換,在切換的過程中要保證數據不丟。由于切換前后兩個數據庫實例 Binlog 文件一般都是不一致的,此時任務位點記錄方式是 BinlogPosition 模式,則在切換之后任務需要自動進行 Binlog 對齊操作,進而保證數據的完整性。將新數據實例上的位點查詢時間戳提前1-2分鐘即可。

  • 讀實例訂閱支持

DTS任務binlog dump連接數過多造成主庫壓力及影響DDL變更,因此需要支持讀庫訂閱。云廠商的讀庫不提供備份,在讀庫日志過期時需要切換到主庫進行讀取。

3.3 全量增量一體化功能

圖片圖片

全量增量一體化是指先同步存量數據,待存量結束之后再開始同步增量數據。其中也加入了增量階段的OSS備份日志獲取。但存量階段依然存在一些問題,需要進一步改造優化。

全量模式下新增表先進行存量數據同步再進行增量數據同步,該任務中已存在的表會因此導致數據延遲。待新增表數據同步完成,任務延遲則會恢復正常。

3.4 數據源接入- starrocks, postgres等

支持從mysql同步到starrocks和postgres, 在任務執行框架的基礎上,只需要開發starrocks-connector, postgres connector支持對應的數據源即可。其中的其他能力,像多表同步、分庫分表等場景都可以達到復用的效果。

3.5 JBDC寫入改造

腳本擴展和動態表名路由:

圖片圖片

數據合并和多線程寫入:

圖片圖片

3.6 監控告警

DTS任務需要采集flink任務指標,主要包括任務延遲、各個算子階段的寫入速率,算子被壓及使用率等。其中 任務延遲需要接入告警服務,于是我們選擇了引入redis來緩存任務的延遲時間,再上報到告警服務來完成飛書的消息和電話告警。

4最佳實踐

4.1 0000-00-00 00:00:00時間戳的問題

MySQL的時間戳允許為0000-00-00 00:00:00, 在Flink任務中通常會被轉換為null, 導致寫入下游數據源失敗, 因此需要做特殊標記對于不同的數據源做不同的轉化保證寫入的正切行。

4.2 Flink CDC任務serverId唯一性

Flink CDC source 會偽裝成 MySQL slave節點,為了保證數據的準確性,每個slave必須擁有唯一的serverId來標記該slave的唯一性。因此在flink cdc的任務中我們為每一個任務分配了一個唯一的serverId區間(范圍區間是為了支持多并行度)。

4.3 Flink任務數據序列化瓶頸

在flink任務中使用DataStreamAPI并使用比較復雜的數據結構進行傳輸時,算子之間的序列化成本較高,兩個方向,一是建立更為高效的數據結構進行傳輸,二是開啟flink對象復用,并盡可能減少不同并行度之間的數據傳輸。

5未來演進

DTS作為一個數據同步平臺主要功能是盡可能提供高效的數據源同步功能,助力于多變的業務場景。

5.1 基于Flink SQL的ETL任務管理

流式數據處理除了現有的DataStream API還存在SQL的形式,SQL作為一種通用的語言,對于數據相關的業務同學極大的降低了學習成本。而通過Flink SQL可以做到的ETL流式數據加工也能解決一些復雜業務場景的處理邏輯,將業務邏輯轉化為DAG的流式處理圖,通過拖拽的方式也能方便使用,FLINK SQL的演進方向能夠和現有的Flink DataStream API互補。

應用場景:ETL強大的流式數據轉換處理能力大幅提升數據集成效率,也能建實時報表體系,提高分析效率,同時也可以應用于一些實時大屏的場景。

5.2 統一技術棧

將現有的DTS能力都遷移到Flink平臺上,保持統一的技術棧,能夠極大的降低維護成本。現有遺留的雙向同步、數據比對等能力需要做進一步的改造和遷移,符合整體技術收斂的趨勢。

6總結

本文主要分享了以下幾個方面:Flink相比現有的技術棧帶來的收益,切換到Flink以后的迭代方向及架構功能上的變更、帶來新的問題如何解決,以及未來的一些迭代方向,希望能讓大家有所收獲。

責任編輯:武曉燕 來源: 得物技術
相關推薦

2025-11-20 01:22:00

2025-09-04 01:21:00

2025-04-22 00:00:55

2023-01-11 18:34:22

推薦精排模型

2019-11-19 11:51:54

固件更新物聯網物聯網平臺

2019-05-23 08:29:42

物聯網平臺物聯網IOT

2024-11-12 14:19:53

2014-02-27 14:14:20

第三技術平臺梭子魚

2015-11-03 09:35:42

物聯網核心技術

2023-05-15 18:33:09

得物前端巡檢

2023-11-29 18:41:35

模型數據

2022-10-20 14:35:48

用戶畫像離線

2025-03-20 10:47:15

2023-12-06 11:28:48

工業物聯網IIoT

2023-02-01 18:33:44

得物商家客服

2022-12-09 18:58:10

2023-02-06 18:35:05

架構探測技術

2023-12-27 18:46:05

云原生容器技術

2024-12-03 11:59:53

2019-01-23 07:41:27

私有云企業虛擬化
點贊
收藏

51CTO技術棧公眾號

成人高清在线| 国产午夜视频在线| 亚洲精品无码久久久久| 自拍偷拍亚洲| 91色在线porny| 奇米四色中文综合久久| www.黄色在线| 色老头在线一区二区三区| 久久久五月婷婷| 成人福利视频网| 国产无遮挡又黄又爽在线观看| 九一国产精品| 日韩三级在线免费观看| 国产男女无遮挡| 成人影院www在线观看| 91视频xxxx| 91免费视频国产| 国产一级片毛片| 精品资源在线| 欧美日韩午夜精品| www黄色日本| 嫩草在线视频| 99精品国产99久久久久久白柏| 国产精品久久久久久久久久三级 | 视频这里只有精品| 极品尤物一区| 欧美一级夜夜爽| 99久久久无码国产精品性色戒| 亚州av在线播放| 国产真实乱偷精品视频免| 51久久精品夜色国产麻豆| 三级在线观看免费大全| 国产欧美日韩精品一区二区免费| 日韩精品一区二区三区在线观看| 天天操天天爱天天爽| 中国色在线日|韩| 亚洲欧美国产三级| 亚洲va韩国va欧美va精四季| 天天操天天干天天插| 国产乱人伦偷精品视频免下载| 国产成人精品一区二区在线| 成年免费在线观看| 亚洲视屏一区| 欧美精品免费在线| 黄色录像一级片| 成久久久网站| 伊人青青综合网站| 三级一区二区三区| 日韩不卡视频在线观看| 午夜精品视频一区| 99久久久精品视频| 成人午夜在线影视| 亚洲免费观看在线观看| 在线观看福利一区| 免费在线观看av网站| 国产精品久久久久久亚洲伦 | 国产精品成人av在线| wwwxxx亚洲| 亚洲精品免费观看| 午夜美女久久久久爽久久| 国产一级视频在线观看| 国产一区二区三区四区老人| 欧美xxxx做受欧美| 中文字幕电影av| 一区二区三区四区在线观看国产日韩 | 国产综合色产在线精品| 91亚洲国产精品| 国产视频第一页| 国产乱人伦精品一区二区在线观看| 国产美女搞久久| 波多野结衣激情视频| 欧美二区视频| 久久天天躁狠狠躁夜夜av| 91高清免费观看| 国产综合亚洲精品一区二| 久久久久免费视频| 欧美亚韩一区二区三区| 噜噜噜躁狠狠躁狠狠精品视频| 国产91精品久久久| 亚洲午夜无码久久久久| 九九视频精品免费| 成人欧美一区二区三区黑人免费| 看黄色一级大片| 美腿丝袜一区二区三区| 92国产精品久久久久首页 | 亚洲欧美日本国产有色| 国产在线观看91| 91蝌蚪国产九色| 日韩电影大全在线观看| 日本www在线| 亚洲综合免费观看高清完整版在线 | 亚洲第一区第二区第三区| 亚洲一区二区三区中文字幕在线观看| 亚洲黄色在线看| 阿v天堂2014| 欧美精品色网| 日韩av123| 国产黄色大片网站| wwwwxxxxx欧美| 日本特级黄色大片| 小早川怜子影音先锋在线观看| 欧美午夜寂寞影院| 日韩精品一区二区三区色欲av| 三级成人在线| 日韩精品一区二区三区老鸭窝| 国产精品无码在线| 久久影院100000精品| 久久久久久久国产精品| 中文字幕第31页| 成人黄色网址在线观看| 亚洲欧洲另类精品久久综合| 欧洲成人综合网| 欧洲国产伦久久久久久久| a在线视频观看| 亚洲午夜剧场| 亚洲免费视频观看| 欧美高清视频一区二区三区| 久久综合狠狠| 国产精品久久久久久久久婷婷| 福利视频在线导航| 精品人伦一区二区三区蜜桃免费| 水蜜桃色314在线观看| 成人在线视频免费看| 亚洲激情国产精品| 极品颜值美女露脸啪啪| 日日夜夜免费精品视频| 国产乱码精品一区二区三区日韩精品 | 亚洲精品中文字幕女同| 九九热国产在线| 久久99久久99精品免视看婷婷| 久久久久久久久一区| 黄色成人在线网| 在线成人av影院| 少妇精品无码一区二区免费视频| 在线观看亚洲| 成人18视频| 中文字幕有码在线视频| 欧美日韩一区二区三区视频 | 亚洲欧洲99久久| 国产熟人av一二三区| 欧美日韩一区二区三区在线电影 | 亚洲欧美韩国| 亚洲第一二三四五区| 久久精品www| 国产乱码字幕精品高清av | 久久精品无码一区| 西西人体一区二区| 久久99精品久久久久久三级| 超碰97免费在线| 欧美mv日韩mv国产网站app| 久久r这里只有精品| 国产一区二三区好的| 超碰在线免费观看97| 久久伊人久久| 色中色综合影院手机版在线观看| 国产丰满美女做爰| 亚洲综合在线视频| 精品久久久久久无码人妻| 欧美精品97| 国产精华一区| 国产精品蜜芽在线观看| 日韩电影第一页| 久久青青草原亚洲av无码麻豆| 日韩av一区二区在线影视| 欧美性大战久久久久| 国产成人无吗| 日韩欧美专区在线| 国产精品第72页| 99热这里都是精品| 偷拍盗摄高潮叫床对白清晰| 亚洲伊人精品酒店| 欧美人在线视频| 免费看黄网站在线观看| 福利视频导航一区| 妺妺窝人体色WWW精品| 免费成人在线网站| 最新av在线免费观看| 粉嫩久久久久久久极品| 欧美性资源免费| 国产在线自天天| 欧美丰满嫩嫩电影| 国产亚洲精品久久久久久打不开| av电影在线观看一区| 天堂在线资源视频| 综合精品久久| 久久久水蜜桃| 精品久久在线| 国内伊人久久久久久网站视频| 三级无遮挡在线观看| 一区二区三区欧美日| 精品伦一区二区三区| 香蕉久久夜色精品国产| 一本一本a久久| 国产精品传媒| 国产精品日韩专区| 国产乱码在线| 中文字幕av日韩| 人人妻人人澡人人爽久久av| 欧美日韩一级视频| 日本一区二区三区四区五区| 中文字幕av一区二区三区高| 亚洲av无码久久精品色欲| 午夜在线精品| www.欧美黄色| 水蜜桃久久夜色精品一区| 国产日韩欧美综合精品| 久久91视频| 91爱爱小视频k| 成人在线免费看片| 国产一区二区美女视频| 丰满人妻一区二区三区免费| 欧美午夜免费电影| 久久不卡免费视频| 亚洲激情av在线| av免费播放网站| 91在线精品一区二区三区| 91福利免费观看| 日本美女一区二区| 99精品人妻少妇一区二区| 91成人超碰| 午夜精品一区二区在线观看的| 福利电影一区| 97欧洲一区二区精品免费| 国产精品99精品一区二区三区∴| 91av中文字幕| 国产精品原创| 国模视频一区二区| 久操视频在线播放| 中文字幕av一区中文字幕天堂| 午夜一区在线观看| 欧美精品一区二区三区高清aⅴ | 黄色片网站免费| 99在线热播精品免费| 深夜视频在线观看| 国产激情一区二区三区| caoporm在线视频| 麻豆91精品视频| 国产人妻人伦精品| 欧美黄色网视频| 国产精品久久久久久免费观看| 亚洲男人在线| 成人福利在线观看| 婷婷激情成人| 成人网欧美在线视频| 欧美视频免费看| 国产欧美日韩免费| 国外成人福利视频| 国产女同一区二区| 久久av影院| 国产在线观看精品| 成人亚洲精品| 97在线资源站| 福利在线一区| 久久久久久久久久久久久久一区| 久久夜色电影| 欧美高清视频一区二区三区在线观看| 国产主播性色av福利精品一区| 超碰97网站| 欧美日韩一区二区三区四区不卡 | 伊人成人免费视频| 中文一区二区| 男人靠女人免费视频网站| 亚洲自啪免费| 国产精品第12页| 免费观看久久久4p| 午夜精品久久久久久久99热影院| 理论片日本一区| 91视频福利网| 成人免费av网站| 9.1成人看片| 国产欧美日韩不卡| 在线免费看av网站| 亚洲成人av在线电影| 亚洲 欧美 日韩 在线| 欧美日韩精品欧美日韩精品| 99久久久久久久| 精品美女被调教视频大全网站| 无码国产伦一区二区三区视频| 精品一区二区亚洲| 免费在线看黄网站| 91av在线精品| 欧美电影在线观看网站| 99久久一区三区四区免费| 日韩欧美ww| 综合色婷婷一区二区亚洲欧美国产| 在线精品视频在线观看高清| 人妻少妇精品久久| 日韩电影在线一区| 亚洲精品成人无码毛片| 91蜜桃在线免费视频| 国产在线免费av| 亚洲福利视频导航| 波多野结衣视频在线看| 日韩一区二区三区电影在线观看 | 日b视频免费观看| 免费在线播放第一区高清av| 可以看污的网站| www.亚洲人| 日本不卡一区视频| 亚洲国产精品人人做人人爽| 中文字幕第31页| 亚洲国产精品va| 黄色免费在线观看| 欧亚精品中文字幕| 视频一区国产| 亚洲精品tv久久久久久久久| 亚洲激情影院| 污污的视频免费| 91麻豆免费在线观看| 中文字幕在线有码| 欧美午夜精品一区二区蜜桃| 秋霞av鲁丝片一区二区| 久久国产一区二区三区| 2020日本在线视频中文字幕| 国产精品久久久久久久一区探花 | 亚洲精品狠狠操| 亚洲欧美成人影院| 欧美成人性生活| 91国内外精品自在线播放| 久久精品aaaaaa毛片| 亚洲有吗中文字幕| 国产高潮免费视频| 91看片淫黄大片一级在线观看| 欧美成人综合色| 欧美一区二区性放荡片| aiai在线| 国产精品成人一区二区三区吃奶| 国产 日韩 欧美 综合 一区| 在线电影看在线一区二区三区| 日韩精品91亚洲二区在线观看 | av在线亚洲色图| 视色,视色影院,视色影库,视色网| 日韩不卡在线观看日韩不卡视频| 中文在线一区二区三区| 亚洲国产欧美一区二区三区丁香婷| 一级片免费网站| 日韩中文字幕av| 欧美暴力调教| 日韩高清dvd| 日韩中文字幕麻豆| 制服 丝袜 综合 日韩 欧美| 欧美日韩亚洲91| 婷婷五月综合激情| 91精品国产777在线观看| 成人另类视频| 国产精品专区在线| 91小视频免费看| 制服.丝袜.亚洲.中文.综合懂色| 精品国产电影一区二区 | 欧美中文字幕在线| 欧美日韩一区二区三区四区不卡 | 日本在线视频不卡| 日韩电影免费在线| 精品手机在线视频| 91精品欧美久久久久久动漫| 黄色动漫在线| 91九色露脸| 亚洲午夜激情在线| 亚洲天堂2024| 婷婷综合另类小说色区| 亚欧在线观看视频| 国产精品高清在线| 久久国产综合| 日本一二三区在线| 亚洲高清视频中文字幕| 五月天婷婷在线观看| 国产aⅴ夜夜欢一区二区三区 | 一区二区在线视频| 久久国产三级| 国产日韩欧美大片| 成人高清视频在线观看| 国产美女激情视频| 亚洲色图偷窥自拍| 婷婷久久免费视频| 精品一二三四五区| 久久久综合视频| 九九热最新视频| 欧美另类第一页| 四虎影视精品| 亚洲小视频网站| 亚洲一区视频在线| 激情小视频在线观看| 成人天堂噜噜噜| 亚洲一区二区免费看| 人妻互换一区二区激情偷拍| 欧美大胆人体bbbb| a日韩av网址| 国产精品亚洲天堂| 97久久精品人人做人人爽| 中文字幕人妻互换av久久| 欧美精品一本久久男人的天堂| 清纯唯美亚洲经典中文字幕| av丝袜天堂网| 亚洲韩国一区二区三区| 成人高清网站| 国产精品久久久久久久免费大片| 男女视频一区二区| 国产无精乱码一区二区三区| 在线午夜精品自拍| 美女一区二区在线观看|