Apache InLong(應龍)是一個一站式的海量資料整合平臺,提供自動、安全、可靠和高效能的資料傳輸能力,同時支援批和流,方便業務構建基於流式的資料分析、建模和應用。InLong 支援巨量資料領域的採集、匯聚、快取和分揀功能,使用者只需要簡單的設定就可以把資料從資料來源匯入到實時計算引擎或者落地到離線儲存。
1 Apache InLong(incubating) 簡介
Apache InLong(應龍)是騰訊捐獻給 Apache 社群的一站式海量資料整合框架,提供自動、安全、可靠和高效能的資料傳輸能力,方便業務構建基於流式的資料分析、建模和應用。InLong 專案原名 TubeMQ ,專注於高效能、低成本的訊息佇列服務。為了進一步釋放 TubeMQ 周邊的生態能力,我們將專案升級為 InLong,專注打造一站式海量資料整合框架。
Apache InLong 以騰訊內部使用的 TDBank 為原型,依託萬億級別的資料接入和處理能力,整合了資料採集、匯聚、儲存、分揀資料處理全流程,擁有簡單易用、靈活擴充套件、穩定可靠等特性。
Apache InLong 服務於資料採集到落地的整個生命週期,按資料的不同階段提供不同的處理模組,主要包括:
- inlong-agent,資料採集 Agent,支援從指定目錄或檔案讀取常規紀錄檔、逐條上報。後續也將擴充套件 DB 採集、HTTP 上報等能力。
- inlong-dataproxy,一個基於 Flume-ng 的 Proxy 元件,支援資料傳送阻塞和落盤重發,擁有將接收到的資料轉發到不同 MQ(訊息佇列)的能力。
- inlong-tubemq,騰訊自研的訊息佇列服務,專注於巨量資料場景下海量資料的高效能儲存和傳輸,在海量實踐和低成本方面有著良好的核心優勢。
- inlong-sort,對從不同的 MQ 消費到的資料進行 ETL 處理,然後匯聚並寫入 Hive、ClickHouse、HBase、Iceberg 等儲存系統。
- inlong-manager,提供完整的資料服務管控能力,包括後設資料、任務流、許可權,OpenAPI 等。
- inlong-audit,提供獨立於資料流向、覆蓋全流程的審計的資料審計服務。
- inlong-dashboard,用於管理資料接入的前端頁面,簡化整個 InLong 管控平臺的使用。
1.0 版本之前(包括 0.9.0 到 0.12.0),InLong 專注於打通基礎鏈路和建設配套能力上。
基礎鏈路方面,完成了基於 TubeMQ 和 Apache Pulsar 兩個訊息佇列的資料鏈路,分別滿足低成本高效能、高一致性高效能的使用場景。
配套能力建設方面,完成了各個模組部署步驟的簡化,同時增加單機、Docker Compose 和 Kubernetes 部署;完成了各個模組指標體現建設,豐富了各維度監控指標;完成了全鏈路資料審計能力,讓資料「位置」清晰可查。
在後續的版本中,InLong 將首先提供外掛化的支援,方便快速擴充套件新的採集、入庫流向;增加資料流管理,包括心跳狀態、資料流啟停等;同時強化全鏈路穩定性、效能,增加批次資料採集能力和多叢集管理能力。
2 Apache InLong (incubating) 1.0.0 版本主要特性
剛剛釋出的 1.0.0-incubating 主要包括以下內容:
該版本關閉了約 124+ 個 issue,包含 8 個重大 feature 和 36 個 improvements。
- InLong Sort 支援單租戶分揀
在 1.0.0 版本中,Sort 增加了單租戶級別的分揀能力,可支援一條採集流啟動一個 Flink 任務,為後續資料流狀態管理提供了基礎。
- InLong Sort 支援 Flink 1.13.5 版本
社群的同學之前就提過升級 Flink 版本,以支援在 InLong 中使用 FLink SQL。1.0.0 版本中,Sort 完成了對 Flink 1.13.5 的升級,方便 Sort 擴充套件新的 Sink 以及對接公有云場景。
- InLong Sort 支援 Standalone 模式
Sort 可以對 MQ 中的資料進行 ETL 處理,初期 Sort 只有 Flink 版本,雖然能使用到 Flink 強大的實時處理能力,但卻增加了 InLong 專案對部署環境的要求,使用者必須要有 Flink 叢集才能執行 InLong。
1.0.0 版本開始,InLong 引入了 Sort Standalone 模組,支援非 Flink 場景下的資料分揀。
- 全流程審計資料的埋點和展示
上一個版本,InLong 引入了資料審計模組,但未完成資料的埋點和展示,審計服務不能完全使用。
1.0.0 版本中,InLong Audit 不僅優化了審計 API 和容災的場景,還完成了全元件的埋點和資料展示,實現了審計模組部署即可用。
- 支援通過認證存取 Apache Pulsar
在之前的版本中,InLong 支援了基於 Apache Pulsar 資料鏈路。在實際場景中,Pulsar 叢集都帶有認證,在 1.0.0 版本中,實現存取帶有認證的 Apache Pulsar 叢集。
- DataProxy 支援 HTTP/UDP 協定
為了方便使用者直接使用 DataProxy SDK 擴充套件 InLong 採集端的能力,1.0.0 版本在原有 TCP 協定的基礎上,我們開放了 DataProxy HTTP/UDP 協定的支援。
- Agent DB 採集支援 SQL 採集
DB 採集是資料整合領域很常見的使用場景,InLong 開始補齊這塊能力,實現對主流關係型資料庫,增量/全量不同場景的支援。
1.0.0 版本優先實現了通過 SQL 採集 MySQL 的資料,在後續的版本中完成對其它資料庫以及 Binlog 的採集。
- 其他特性及問題修復
相關內容請參考版本發版說明(文末標註),其中詳細列出了本次版本的特性、提升 和 Bug 修復,以及具體的貢獻者。
3 Apache InLong (incubating) 後續規劃
後續版本,我們會進一步強化 InLong 的基礎能力建設,同時擴充套件更多的資料來源端和目標端,覆蓋更多的使用場景,主要包括:
- 外掛化能力
- 新增 Iceberg、ClickHouse 、Kafka 流向
- 新增關聯式資料庫 Binlog 採集、Kafka 採集
4 Apache InLong(incubating) 貢獻者招募
Apache InLong(incubating) 當前共有 84 名 Contributor,仍處在專案孵化的初期,還有很多待辦事項,包括:Feature 開發、社群運營,檔案翻譯等,期待更多開源愛好者加入 InLong,一起將 InLong 打造成 Apache 頂級專案。
以下為 InLong 專案的時間線:
- 2021年12月22日,釋出 0.12.0 版本
- 2021年11月5日,釋出 0.11.0 版本
- 2021年9月3日,釋出 0.10.0 版本
- 2021年7月12日,發起更名後第一個版本 0.9.0 投票
- 2021年4月11日,完成社群改名,改為 Apache InLong
- 2021年2月11日,發起社群改名變更申請
- 2020年12月20日,進行專案改名討論和投票
- 2020年5月30日,按照 Apache 社群規範釋出第一個社群版本
- 2019年11月3日,進入 Apache 社群孵化
- 2019年9月12日,TubeMQ 對外開源並捐獻給 Apache 社群
- Apache InLong 專案官方網站:https://inlong.apache.org
- Apache InLong GitHub 地址:https://github.com/apache/incubator-inlong
- Apache InLong 版本釋出歷史:https://github.com/apache/incubatorinlong/blob/master/CHANGES.md