最近學習了解到一種輕量化,維護門檻較低的流批一體化的架構方式,雖然目前還是不太成熟,自己也在探索學習中。
dolphinscheduler+dinky+starrocks+flink+zookeper
后面我會逐步發一下這個整體架構的特點,以及各個組件作用,和目前存在的問題,dinky目前剛開源很多功能目前還不夠成熟。我會在進行批處理腳本開發和流處理腳本開發中,starrocks sql和flinksql在方言上存在差異,架構可行性,代碼維護問題兼容性問題等逐一討論
DolphinScheduler+Dinky+StarRocks+Flink+Zookeeper流批一體架構解析
一、流批一體架構核心特點
-
統一計算引擎與開發范式
- 以Flink為核心,實現流處理(Stream Processing)與批處理(Batch Processing)的統一編程模型,避免流批分離帶來的技術棧割裂。
- 批處理可視為流處理的特殊情況(有限數據流),支持同一套API(如DataStream/DataSet)開發,降低學習成本與維護復雜度。而且是完全開源免費的,部署操作較為簡單,后期維護成本大大降低
-
分層調度與任務協同
- DolphinScheduler負責離線批任務的調度與依賴管理,Flink處理實時流計算,兩者通過dinky進行集成統一管理發布上線。
- 支持定時觸發(批處理)與事件觸發(流處理)的雙模式調度,滿足T+1報表與實時監控的混合需求。
-
高性能存儲與查詢閉環
- StarRocks作為分析型數據庫,同時支持流計算結果的實時寫入與批處理數據的高效查詢,形成“計算-存儲-查詢”閉環。
- 利用StarRocks的MPP架構與向量化計算,實現亞秒級實時查詢與大規模歷史數據聚合分析。
-
低代碼開發與運維提效
- Dinky提供Flink作業的可視化開發、調試與運維平臺,支持SQL/Java/Python代碼生成,降低Flink開發門檻。
- 集成監控告警與資源管理功能,實現流批任務的統一運維。
-
分布式系統穩定性保障
- Zookeeper為Flink、StarRocks等組件提供分布式協調服務,確保集群節點選舉、配置一致性與故障恢復。
- 架構支持彈性擴縮容,應對流量波動與數據量增長。
二、各組件核心作用詳解
組件 | 定位 | 核心功能與在架構中的角色 |
---|---|---|
Flink | 流批一體計算引擎 |
|
DolphinScheduler | 分布式任務調度系統 |
|
StarRocks | 實時分析型數據庫(MPP數據庫) |
|
Dinky | Flink可視化開發與運維平臺 |
|
Zookeeper | 分布式協調服務中間件 |
|
三、架構協同流程示例
-
數據接入與處理
- 實時數據(如Kafka消息)通過Flink流計算處理,清洗后寫入StarRocks;
- 離線數據(如Hive表)通過DolphinScheduler調度Flink批作業處理,結果同步至StarRocks。
-
任務調度與協同
- 周期性批任務(如每日報表)由DolphinScheduler定時觸發,調用Flink批作業處理歷史數據;
- 實時監控任務由Flink持續運行,Dinky負責作業參數動態調整(如并行度)。
-
查詢與可視化
- 業務系統通過StarRocks SQL接口查詢流批數據融合結果;
- Dinky或第三方BI工具(如Superset)對接StarRocks,生成實時儀表盤與離線報表。