大数据轻量化流批一体架构探索实践(一)
最近学习了解到一种轻量化,维护门槛较低的流批一体化的架构方式,虽然目前还是不太成熟,自己也在探索学习中。
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,生成实时仪表盘与离线报表。