日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

当 TiDB 与 Flink 相结合:高效、易用的实时数仓

發布時間:2024/9/3 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 当 TiDB 与 Flink 相结合:高效、易用的实时数仓 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡介:利用實時數倉,企業可以實現實時 OLAP 分析、實時數據看板、實時業務監控、實時數據接口服務等用途。但想到實時數倉,很多人的第一印象就是架構復雜,難以操作與維護。而得益于新版 Flink 對 SQL 的支持,以及 TiDB HTAP 的特性,我們探索了一個高效、易用的 Flink+TiDB 實時數倉解決方案。

作者:齊智@TiDB

隨著互聯網飛速發展,企業業務種類會越來越多,業務數據量會越來越大,當發展到一定規模時,傳統的數據存儲結構逐漸無法滿足企業需求,實時數據倉庫就變成了一個必要的基礎服務。以維表 Join 為例,數據在業務數據源中以范式表的形式存儲,在分析時需要做大量的 Join 操作,降低性能。如果在數據清洗導入過程中就能流式的完成 Join,那么分析時就無需再次 Join,從而提升查詢性能。

利用實時數倉,企業可以實現實時 OLAP 分析、實時數據看板、實時業務監控、實時數據接口服務等用途。但想到實時數倉,很多人的第一印象就是架構復雜,難以操作與維護。而得益于新版 Flink 對 SQL 的支持,以及 TiDB HTAP 的特性,我們探索了一個高效、易用的 Flink+TiDB 實時數倉解決方案。

本文將首先介紹實時數倉的概念,然后介紹 Flink+TiDB 實時數倉的架構與優勢,接著給出一些已經在使用中的用戶場景,最后給出在 docker-compose 環境下的 Demo,用于讀者進行嘗試。

實時數倉的概念

數據倉庫的概念在 90 年代由 Bill Inmon 提出,是指一個面向主題的、集成的、相對穩定的、反映歷史變化的集合,用于支持管理決策。當時的數據倉庫通過消息隊列收集來自數據源的數據,通過每天或每周進行一次計算以供報表使用,也稱為離線數倉。


離線數倉架構

進入 21 世紀,隨著計算技術的發展、以及整體算力的提升,決策的主體逐漸從人工控制轉變為計算機算法,出現了實時推薦、實時監控分析等需求,對應的決策周期時間由天級逐步變為秒級,在這些場景下,實時數倉應運而生。

當前的實時數倉主要有三種架構:Lambda架構、Kappa 架構以及實時 OLAP 變體架構:

  • Lambda 架構是指在離線數倉的基礎上疊加了實時數倉部分,使用流式引擎處理實時性較高的數據,最后將離線和在線的結果統一供應用使用。
  • 實時數倉的 Lambda 架構

  • Kappa 架構則移除了離線數倉部分,全部使用實時數據生產。這種架構統一了計算引擎,降低了開發成本。
  • 實時數倉的 Kappa 架構

  • 隨著實時 OLAP 技術的提升,一個新的實時架構被提出,暫時被稱為“實時 OLAP 變體”。簡單來說,就是將一部分計算壓力從流式計算引擎轉嫁到實時 OLAP 分析引擎上,以此進行更加靈活的實時數倉計算。
  • 總結一下,對于實時數倉,Lambda 架構需要維護流批兩套引擎,開發成本相較其它兩者更高。相比于 Kappa 架構,實時 OLAP 變體架構可以執行更加靈活的計算,但需要依賴額外的實時 OLAP 算力資源。接下來我們將介紹的 Flink + TiDB 實時數倉方案,就屬于實時 OLAP 變體架構。

    關于實時數倉及這些架構更加詳細的對比說明,有興趣的讀者可以參考 Flink 中文社區的這篇文章:基于 Flink 的典型 ETL 場景實現方案。

    Flink+ TiDB 實時數倉

    Flink 是一個低延遲、高吞吐、流批統一的大數據計算引擎,被普遍用于高實時性場景下的實時計算,具有支持 exactly-once 等重要特性。

    在集成了 TiFlash 之后,TiDB 已經成為了真正的 HTAP(在線事務處理 OLTP + 在線分析處理 OLAP)數據庫。換句話說,在實時數倉架構中,TiDB 既可以作為數據源的業務數據庫,進行業務查詢的處理;又可以作為實時 OLAP 引擎,進行分析型場景的計算。

    結合了 Flink 與 TiDB 兩者的特性,Flink+ TiDB 的方案的優勢也體現了出來:首先是速度有保障,兩者都可以通過水平擴展節點來增加算力;其次,學習和配置成本相對較低,因為 TiDB 兼容 MySQL 5.7 協議,而最新版本的 Flink 也可以完全通過 Flink SQL 和強大的連接器(connector)來編寫提交任務,節省了用戶的學習成本。

    對于 Flink + TiDB 實時數倉,下面是幾種常用的搭建原型,可以用來滿足不同的需求,也可以在實際使用中自行擴展。

    以 MySQL 作為數據源

    通過使用 Ververica 官方提供的 flink-connector-mysql-cdc,Flink 可以既作為采集層采集 MySQL 的 binlog 生成動態表,也作為流計算層實現流式計算,如流式 Join、預聚合等。最后,Flink 通過 JDBC 連接器將計算完成的數據寫入 TiDB 中。

    以 MySQL 作為數據源的簡便架構

    這個架構的優點是非常簡潔方便,在 MySQL 和 TiDB 都準備好對應數據庫和表的情況下,可以通過只編寫 Flink SQL 來完成任務的注冊與提交。讀者可以在本文末尾的【在docker-compose 中進行嘗試】一節中嘗試此架構。

    以 Kafka 對接 Flink

    如果數據已經從其它途徑存放到了Kafka 中,可以方便地通過 Flink Kafka Connector 使 Flink 從 Kafka 中獲得數據。

    在這里需要提一下的是,如果想要將 MySQL 或其它數據源的變更日志存放在 Kafka 中后續供 Flink 處理,那么推薦使用 Canal 或 Debezium 采集數據源變更日志,因為 Flink 1.11 原生支持解析這兩種工具格式的 changelog,無需再額外實現解析器。

    以 MySQL 作為數據源,經過 Kafka 的架構示例

    以 TiDB 作為數據源

    TiCDC 是一款通過拉取 TiKV 變更日志實現的 TiDB 增量數據同步工具,可以利用其將 TiDB 的變更數據輸出到消息隊列中,再由 Flink 提取。

    以 TiDB 作為數據源,通過 TiCDC 將 TiDB 的增量變化輸出到 Flink 中

    在 4.0.7 版本,可以通過 TiCDC Open Protocol來完成與 Flink 的對接。在之后的版本,TiCDC 將支持直接輸出為 canal-json 形式,以供 Flink 使用。

    案例與實踐

    上個部分介紹了一些基礎的架構,實踐中的探索往往更加復雜和有趣,這一部分將介紹一些具有代表性和啟發性的用戶案例。

    小紅書

    小紅書是年輕人的生活方式平臺,用戶可以通過短視頻、圖文等形式記錄生活點滴,分享生活方式,并基于興趣形成互動。截至到 2019 年 10 月,小紅書月活躍用戶數已經過億,并持續快速增長。

    在小紅書的業務架構中,Flink 的數據來源和數據匯總處都是 TiDB,以達到類似于“物化視圖”的效果:

  • 左上角的線上業務表執行正常的 OLTP 任務。
  • 下方的 TiCDC 集群抽取 TiDB 的實時變更數據,以 changelog 形式傳遞到 Kafka 中。
  • Flink 讀取 Kafka 中的 changelog,進行計算,如拼好寬表或聚合表。
  • Flink 將結果寫回到 TiDB 的寬表中,用于后續分析使用。

  • 小紅書 Flink TiDB 集群架構

    整個過程形成了 TiDB 的閉環,將后續分析任務的 Join 工作轉移到了 Flink 上,并通過流式計算來緩解壓力。目前這套方案已經支持起了小紅書的內容審核、筆記標簽推薦、增長審計等業務,經歷了大吞吐量的線上業務考驗且持續運行穩定。

    貝殼金服

    貝殼金服持續多年深耕居住場景,積累了豐富的中國房產大數據。貝殼金服以金融科技為驅動,利用 AI 算法高效應用多維海量數據以提升產品體驗,為用戶提供豐富、定制化的金融服務。

    在貝殼數據組的數據服務中,Flink 實時計算用于典型的維表 Join:

  • 首先,使用 Syncer (MySQL 到 TiDB 的一個輕量級同步工具)采集業務數據源上的維表數據同步到 TiDB 中。
  • 然后,業務數據源上的流表數據則通過 Canal 采集 binlog 存入 kafka 消息隊列中。
  • Flink 讀取 Kafka 中流表的變更日志,嘗試進行流式 Join,每當需要維表中的數據時,就去 TiDB 中查找。
  • 最后,Flink 將拼合而成的寬表寫入到 TiDB 中,用于數據分析服務。
  • 貝殼金服數據分析平臺架構

    利用以上的結構,可以將數據服務中的主表進行實時 Join 落地,然后服務方只需要查詢單表。這套系統在貝殼金服已經深入各個核心業務系統,跨系統的數據獲取統一走數據組的數據服務,省去了業務系統開發 API 和內存聚合數據代碼的開發工作。

    智慧芽

    PatSnap(智慧芽)是一款全球專利檢索數據庫,整合了 1790 年至今的全球 116 個國家地區 1.3 億專利數據和 1.7 億化學結構數據。可檢索、瀏覽、翻譯專利,生成 Insights 專利分析報告,用于專利價值分析、引用分析、法律搜索,查看 3D 專利地圖。

    智慧芽使用 Flink + TiDB 替換了原有的 Segment + Redshift 架構。

    原有的 Segment + Redshift 架構,僅構建出了 ODS 層,數據寫入的規則和 schema 不受控制。且需要針對 ODS 編寫復雜的 ETL 來按照業務需求進行各類指標的計算來完成上層需求。Redshift 中落庫數據量大,計算慢(T+1 時效),并影響對外服務性能。

    替換為基于 Kinesis +Flink + TiDB 構建的實時數倉架構后,不再需要構建 ODS 層。Flink 作為前置計算單元,直接從業務出發構建出 Flink Job ETL,完全控制了落庫規則并自定義 schema;即僅把業務關注的指標進行清洗并寫入 TiDB 來進行后續的分析查詢,寫入數據量大大減少。按用戶/租戶、地區、業務動作等關注的指標,結合分鐘、小時、天等不同粒度的時間窗口等,在 TiDB 上構建出 DWD/DWS/ADS 層,直接服務業務上的統計、清單等需求,上層應用可直接使用構建好的數據,且獲得了秒級的實時能力。

    智慧芽數據分析平臺架構

    用戶體驗:在使用了新架構后,入庫數據量、入庫規則和計算復雜度都大大下降,數據在 Flink Job 中已經按照業務需求處理完成并寫入 TiDB,不再需要基于 Redshift 的 全量 ODS 層進行 T+1 ETL。基于 TiDB 構建的實時數倉,通過合理的數據分層,架構上獲得了極大的精簡,開發維護也變得更加簡單;在數據查詢、更新、寫入性能上都獲得大幅度提升;在滿足不同的adhoc 分析需求時,不再需要等待類似 Redshift 預編譯的過程;擴容方便簡單易于開發。

    目前這套架構正在上線,在智慧芽內部用來進行用戶行為分析和追蹤,并匯總出公司運營大盤、用戶行為分析、租戶行為分析等功能。

    網易互娛

    網易 2001 年正式成立在線游戲事業部,經過近 20 年的發展,已躋身全球七大游戲公司之一。在 App Annie 發布的“2020 年度全球發行商 52 強”榜單中,網易位列第二。

    網易互娛數據計費組平臺架構

    在網易互娛計費組的應用架構中,一方面使用 Flink 完成業務數據源到 TiDB 的實時寫入;另一方面,以 TiDB 作為分析數據源,在后續的 Flink 集群中進行實時流計算,生成分析報表。此外,網易互娛現在內部開發了 Flink 作業管理平臺,用于管理作業的整個生命周期。

    知乎

    知乎是中文互聯網綜合性內容平臺,以“讓每個人高效獲得可信賴的解答”為品牌使命和北極星。截至 2019 年 1 月,知乎已擁有超過 2.2 億用戶,共產出 1.3 億個回答。

    知乎作為 PingCAP 的合作伙伴,同時也是 Flink 的深度用戶,在自己的實踐過程中開發了一套 TiDB 與 Flink 交互工具并貢獻給了開源社區:pingcap-incubator/TiBigData,主要包括了如下功能:

  • TiDB 作為 Flink Source Connector,用于批式同步數據。
  • TiDB 作為 Flink Sink Connector,基于 JDBC 實現。
  • Flink TiDB Catalog,可以在 Flink SQL 中直接使用 TiDB 的表,無需再次創建。
  • 在 docker-compose 中進行嘗試

    為了方便讀者更好的理解,我們在 https://github.com/LittleFall/flink-tidb-rdw 中提供了一個基于 docker-compose 的 MySQL-Flink-TiDB 測試環境,供大家測試使用。

    Flink TiDB 實時數倉 Slides 中提供了該場景下一個簡單的教程,包括概念解釋、代碼示例、簡單原理以及一些注意事項,其中示例包括:

  • Flink SQL 簡單嘗試
  • 利用 Flink 進行從 MySQL 到 TiDB 的數據導入
  • 雙流 Join
  • 維表 Join
  • 在啟動 docker-compose 后,可以通過 Flink SQL Client 來編寫并提交 Flink 任務,并通過 localhost:8081 來觀察任務執行情況。

    如果大家對 Flink+TiDB 實時數倉方案有興趣、疑惑,或者在探索實踐過程中積累了想要分享的經驗,歡迎到 TiDB 社區(如 AskTUG)、Flink 社區(如 Flink 中文郵件)或通過我的郵件(qizhi@pingcap.com)進行探討。

    參考閱讀

    Flink 中文社區關于實時數倉概念及流上 Join 的討論:

    基于 Flink 的典型 ETL 場景實現方案
    [小紅書使用 TiDB 的實踐分享](How We Use a Scale-Out HTAP Database for Real-TimeAnalytics and Complex Queries
    https://en.pingcap.com/case-studies/how-we-use-a-scale-out-htap-database-for-real-time-analytics-and-complex-queries)
    [TiDB的 HTAP 架構以及在數據平臺上的應用](How We Build an HTAP Database That Simplifies Your DataPlatform
    https://dzone.com/articles/how-we-build-an-htap-database-that-simplifies-your)
    [TiDB 原理論文](TiDB:A Raft-based HTAP Database
    http://www.vldb.org/pvldb/vol13/p3072-huang.pdf
    )
    [FlinkSQL CDC 上線!我們總結了 13 條生產實踐經驗](https://zhuanlan.zhihu.com/p/243187428
    )

    更多 Flink 技術交流可加入 Apache Flink 社區釘釘交流群:

    原文鏈接:https://developer.aliyun.com/article/776726?

    版權聲明:本文內容由阿里云實名注冊用戶自發貢獻,版權歸原作者所有,阿里云開發者社區不擁有其著作權,亦不承擔相應法律責任。具體規則請查看《阿里云開發者社區用戶服務協議》和《阿里云開發者社區知識產權保護指引》。如果您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將立刻刪除涉嫌侵權內容。

    總結

    以上是生活随笔為你收集整理的当 TiDB 与 Flink 相结合:高效、易用的实时数仓的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产亚洲精久久久久久无码苍井空 | 大色综合 | 超碰黑丝 | 小镇姑娘国语版在线观看免费 | 成人av在线网址 | 欧美在线一级视频 | 亚洲午夜免费视频 | 亚洲日本久久久 | 中国黄色片子 | 九九热免费在线视频 | 真人bbbbbbbbb毛片 | 日韩一区二 | 色草在线| 亚洲日本视频在线观看 | 欧州一区二区 | 国产免费一级视频 | 91精品啪 | 久久国产色 | 97国产成人无码精品久久久 | 曰批又黄又爽免费视频 | 国产日韩欧美在线播放 | 欧美天天性 | 国产乱妇无码大片在线观看 | 自拍偷拍国产视频 | 日本大乳美女 | 亚洲福利久久 | 伊人日韩 | 国产视频一区二区在线播放 | 国产夫妻久久 | 中文字幕校园春色 | av黄在线观看 | 日批大全 | 视频一区国产精品 | 国产一区二区麻豆 | 老熟妇仑乱视频一区二区 | 91av短视频| 成人v精品蜜桃久一区 | 精品欧美色视频网站在线观看 | av拍拍拍 | 久久成人福利视频 | 九九热精品在线视频 | 中文字幕av无码一区二区三区 | 美女干b视频 | 丝袜诱惑av| 成年人免费观看视频网站 | 欧美三级午夜理伦三级老人 | 99r精品视频 | 国产精品第一国产精品 | 国产精品三级视频 | 亚洲国产欧美在线观看 | a极毛片 | 欧美成人性色 | 欧美视频精品 | 91桃色网站 | 久久综合九色 | wwwxxxx在线观看 | 免费黄色片网站 | 久久av资源网 | 老司机免费精品视频 | 亚洲精品传媒 | 亚洲欧美乱综合图片区小说区 | 在线观看 亚洲 | 激情婷婷 | 不卡av影院| 久久久久区| 高清二区 | av午夜激情 | 国产视频一区二区视频 | 午夜精品久久久久久久蜜桃 | 久久国精品 | 天堂在线免费观看视频 | 奶罩不戴乳罩邻居hd播放 | 在线观看国产一级片 | 高清在线一区二区三区 | 中文字幕日韩在线播放 | 99精品在线免费视频 | 欧美亚洲韩国 | 中文字幕第23页 | 麻豆久久久9性大片 | 国产精品成人va在线观看 | 草久网 | 狠狠干影视 | 亚洲国产精品无码观看久久 | 日日摸日日操 | 嫩草视频在线 | xxxx日本少妇| 国产欧美日韩综合精品一区二区三区 | 91蜜桃臀久久一区二区 | 12av在线| 国产精品国产三级国产a | 中日韩一级片 | 日本黄色中文字幕 | 国产人妻一区二区三区四区五区六 | 色爽爽一区二区三区 | 91丝袜国产在线观看 | 男人看的网站 | 黑人巨大精品人妻一区二区 | 日韩精品免费一区二区三区 | 男人的天堂免费 |