Hi,我是 ChunJun,一個有趣好用的開源專案。
今天我們正式開通了自己的公眾號!歡迎大家關注~
數字經濟時代,各行各業數字化轉型大趨勢下,資料要素成為關鍵。海量多源異構資料匯聚,使得資料同步面臨同步速率受限、穩定性差、維護成本高等挑戰。
批流一體的資料整合框架 ChunJun,沉澱了團隊六年來在資料同步和整合方面的實踐經驗,秉承易用、穩定、高效的目標,滿足更多使用者對新型資料整合管理需求的響應。
ChunJun 是什麼
ChunJun 是易用、穩定、高效的批流一體的資料整合框架。
主要應用於大資料開發平臺的資料同步 / 資料整合模組,通常採用將底層高效的同步外掛和介面化的配置方式相結合的方式,使大資料開發人員可簡潔、快速的完成資料同步任務開發,實現將業務資料庫的資料同步至大資料儲存平臺,從而進行資料建模開發,以及資料開發完成後,將大資料處理好的結果,資料同步至業務的應用資料庫,供企業資料業務使用。
核心特性
・基於 json、sql 構建任務
・支援多種異構資料來源之間資料傳輸
・支援斷點續傳、增量同步
・支援任務髒資料儲存管理
・支援 Schema 同步
・支援 RDBS 資料來源實時採集
開源地址
https://gitee.com/dtstack_dev_0/chunjun
ChunJun 的故事
專案最早啟動的初衷是為袋鼠雲的核心業務一站式大資料開發治理平臺 - 數棧 DTinsight,打造一款具有 “袋鼠特色 “的核心計算引擎,承載實時平臺、離線平臺、資料資產平臺等多個應用的底層資料同步及計算任務。
2016 年,數棧技術團隊初步研發完成了這款基於 Flink 的分散式離線 / 實時資料同步外掛 ——FlinkX,它可以實現多種異構資料來源高效的資料同步,支援雙向讀寫和多種異構資料來源。有它助力,袋鼠雲在批流一體的研究實踐以更迅猛的勢頭往前挺進。
此後,FlinkX 在業務場景中投入實際應用,得到了超過預期的效果,團隊持續投入研發力量,在髒資料、分散式、整庫同步、連線數控制等方面逐漸完善。成為支援數棧實現異構資料來源之間高速穩定資料同步的核心計算引擎。
2018 年 4 月,秉承著開源共享理念的數棧技術團隊在 github 上開源了 FlinkX,吸引了大量的開發者們一起技術交流和合作共建,FlinkX 得到了更好的發展。
2022 年 4 月,在 FlinkX 進行初版開源的整整四年後,FlinkX 已經從當初的一個小專案,成長為擁有 3200+star,1400+fork 的開源專案。技術團隊決定對 FlinkX 進行整體升級,並更名為 ChunJun,希望為大家真正提供一個穩定、高效、易用的批流一體的資料整合框架。
ChunJun 的技術
ChunJun 既可以採集靜態的資料,比如 MySQL,HDFS 等,也可以採集實時變化的資料,比如 binlog,Kafka 等。同時 ChunJun 也是一個支援原生 FlinkSql 所有語法和特性的計算框架。
主要架構
ChunJun 基於 Flink 並採用外掛式架構,將源資料庫抽象成 Reader 外掛,將目的資料庫抽象成 Writer 外掛。
核心能力
● 多源異構資料匯聚
作為一個開放式系統,使用者可以根據需要,開發新的外掛,接入新的資料庫型別,也可以使用內建的資料庫外掛。目前相容 30 + 異構資料來源的資料讀寫與 SQL 計算。
● 斷點續傳
針對網路波動等異常情況,導致資料同步失敗的任務,在下一次任務時自動從上一次失敗的資料點進行資料同步,避免全部重跑。
● 資料還原
除了 DML 操作以外,一些源端資料庫的 DDL 操作也能做到同步,最大程度保證源端資料庫和目標端資料庫的資料統一和結構統一,做到資料還原。
● 髒資料管理
資料傳輸過程中,因資料質量或主鍵約束等其他因素導致資料無法同步到目標資料庫,針對這些髒資料進行統計和管理,便於後續進行髒資料分析。
● 速率控制
資料同步過程中,資料傳輸效率是關鍵,ChunJun 針對各種場景,有的放矢地控制速率,最大程度保證資料同步的正常進行。
ChunJun 的優勢
簡單易用
● 實現 “開箱即用”
支援 Docker 一鍵部署,支援多種任務執行模式。
- 本地 local 模式,適用於調研、測試階段使用;
- Flink 叢集 standalone 模式;
- Yarn 排程 session 模式及 per-job 模式,常用於生產環境;
- K8S 環境 application 模式及 session 模式。
● 豐富任務型別
支援 json 同步任務,以及 sql 計算任務,使用者可以根據自己的需要,考慮是使用配置更加靈活的 json 同步任務,還是計算更加強大的 sql 計算任務。
● 多種外掛種類
ChunJun 上下游外掛多達 40 種,如常見的 mysql、binlog、logminer 等,大部分外掛都支援 source/reader、sink/writer 及維表功能。
開放相容
● 信創相容
實現國產信創環境全面適配,包括伺服器、晶片、系統、資料庫等,並且支援在海豚排程、太阿排程、dlinky 等常用平臺上使用。
● 成熟穩定
開源開放,基於 gitHub 社群不斷進行最佳化迭代,在上百家客戶生產環境上穩定執行,並且有專門的團隊維護。
功能強大
● 支援增量同步
對於某些業務庫的表,表中的資料基本只有插入操作,隨著業務的執行,表中的資料會越來越大。如果每次都整表同步的話,消耗的時間及資源也會越來越多,因此需要一個增量同步的功能,每次只同步增加部分的資料,對於已經同步過的資料則不再進行重複的同步工作。
增量同步是針對於兩個及以上數量的同步任務來說的,對於初次執行增量同步的某張表而言,該次同步實質上是整表同步,不同的是在任務執行結束後會記錄增量欄位的結束值 (endLocation) 並將其上傳至 prometheus 供後續使用。
在構建下次增量任務時獲取該 endLocation 並作為上述過濾條件的引數值 (startLocation)。在任務解析到增量任務配置時,會根據 startLocation 的有無自動構建過濾條件,並將其拼接至 where 條件中,最終構建出一條如:select id, name, age from test where id > 100 的 SQL,從而達到增量讀取的目的。
● 支援斷點續傳
對於某些業務庫的表,其資料量可能非常大,同步可能耗時非常久。如果在同步過程中由於某些原因導致任務失敗,從頭再來的話成本非常大,因此需要一個斷點續傳的功能從任務失敗的地方繼續。
斷點續傳的本質是透過 Flink 的 checkpoint 機制實現的,在每次 checkpoint 時,reader 外掛會儲存當前讀取到的欄位的值,writer 外掛則會在儲存 writer 中的指標及其他資訊,然後將 writer 中的事務提交。
● 支援同步 DDL 資料
在客戶真實場景中,對於 DDL 資料目前無法處理的情況,ChunJun 藉助外部資料來源,監聽並捕獲 DDL 變更資料,根據任務配置,對下游採用手動變更或自動變更。
● 支援髒資料收集系統外掛化
面對不同的業務場景,可以配置不同的髒資料配置,靈活處理,例如:是否將髒資料落盤處理;是否在日誌中列印髒資料資訊;髒資料最大條數限制;髒資料儲存到不同型別的資料來源等。
● 支援指標系統外掛化
與髒資料外掛化類似,指標系統在設計上也採用了外掛化設計,使用者根據自己的業務場景,可靈活配置指標系統。
ChunJun 的未來規劃
後續我們將定期對 ChunJun 進行迭代,釋出最新版本。近期的規劃如下:
・完善專案 E2E 測試及外掛單測,為專案提供強有力的穩定性保證;
・加強資料還原,聯同資料湖打造批流一體數倉全鏈路;
・增加服務能力,打造最全面的資料整合框架;
・框架整體最佳化,為使用者提供最快、最絲滑的體驗。
寫在最後
為了滿足各類業務需求,如何選擇正確的資料整合工具,從而對各類資料加以歸納,是許多企業面臨的問題。ChunJun 相繼在各型別企業中進行落地應用,經過在豐富核心業務場景中的實踐和打磨,能夠支援不同型別的資料整合和同步任務,其強大的功能保障著客戶業務資料的一致性。
ChunJun 專案技術團隊非常期待得到每一個人的反饋,能夠和其他優秀開發者共同合作,進一步推動資料整合 / 同步的技術發展。
最後,如果您對 ChunJun 或資料整合等領域有興趣,都可以參與到我們的建設中來,一起交流,一起進步,為 ChunJun 變得更好貢獻一點你的程式碼和意見,這將是我們,同時也是 ChunJun 莫大的榮幸。
ChunJun 粉絲福利
為了慶祝 ChunJun 公眾號的開通,我們準備了一些小禮物回饋給一直支援我們的社群同學們。
參與方式:
關注公眾號 “ChunJun”,回覆 “抽獎”,點選抽獎連結,答對問題的同學即可參與活動。
開獎時間:
2022 年 8 月 19 日 12:00
活動獎品:
小米牙刷 * 10
注意事項:
1. 每位使用者(同一地址或手機號)只能參與一次; 2. 獎品將於 3 個工作日內發出,請耐心等待,注意查收,因快遞郵寄原因,本次活動僅限中國大陸使用者參與; 3. 活動解釋權歸 “ChunJun” 所有。