企业级 Flink SQL/JAR 流批一体数据资产开发运维平台
RayFlow 是一个面向流处理与流式数据湖的统一开发与任务管理平台,提供 Apache Flink 作业全生命周期编排、Apache Fluss 极速实时流通道以及 Apache Paimon 冰川数据湖的集中式管理入口,全面释放流湖仓一体化数据潜能。
English | 简体中文
如果这个项目对你有帮助,请点击右上角 ⭐ Star 支持一下,这是对开发者最大的鼓励!
- 💻 流计算开发设计器:
- 基于 Flink SQL 的语法编辑器,支持实时语法提示与高亮,支持一键 SQL 格式化。
- 纯图标(Icon-only)精致交互工具栏,浅色高对比,集成保存、格式化、查询预览(
Eye图标)、运行等核心指令。 - 代码编辑器(CodeMirror)左侧行号与背景进行亮色强力定制,视觉层级高清晰。
- ⚙️ 极简面板折叠与双向对齐交互:
- 统一了左侧栏(目录树/变量)、右侧栏(配置面板)和底部栏(结果/输出)的折叠收纳与展开逻辑:点击已高亮的 Tab 一键折叠收缩;点击未激活 Tab 切换并自动重拉展开。
- 彻底移除了作业树、变量、配置以及底部面板右上角等所有多余零散的面板边缘折叠/收回开关,保持界面的极简干净。
- 🛡️ 运维大看板 (Ops Control) 与刷新同步:
- 运维大表格支持实时状态轮询更新,每 3 秒自动拉取,状态与 Flink Job ID 瞬时自动更新,无需手动刷新。
- 在启动、取消、保存、删除、移动等所有变更成功后,强制同时触发 jobs 目录树与 opsJobs 大表格刷新。
- 单作业操作 Loading 反馈与行操作锁定:执行启动、停止、保存点、删除操作时,对应的操作按钮会转化为旋转
Loader2动画;在操作期间,该作业行的所有其他操作按钮会被自动disabled锁定,彻底防并发误触。
- 🌐 本域 Nginx 统一反向代理访问 Flink UI:
- 支持不带 hosts 配置、通过平台本域路径
/flink-ui/代理跨网络访问 Flink Web UI。 - 支持 301 自动补齐斜杠重定向(防止静态资源相对路径加载时丢失端口号),以及利用 Referer 头部动态拦截转发
/jobs、/applications接口,解决网络阻隔的同时防范主站路由污染。
- 支持不带 hosts 配置、通过平台本域路径
- 自适应 Flink 2.x 新路由:
- 智能对接 Flink 2.3.0 最新路由规范。处于运行态(
RUNNING)的作业自动路由至/#/job/running/详情;处于完成态(FINISHED等)的作业自动路由至/#/job/completed/详情。
- 智能对接 Flink 2.3.0 最新路由规范。处于运行态(
- 🌊 Fluss & Paimon 湖仓集成:
- Fluss Topic 集中式管控,支持快速查看 Topic 列表、创建时间、Schema 元数据信息以及流数据分区情况。
- 支持 Paimon 冰川数据湖 Catalog 统一挂载,通过树形节点探索数据湖分区、物理 Schema 及表元数据,打通流计算与流式数据湖的查看壁垒。
- ✅ 开箱即用:
make dev-init+make dev-up一键在本地拉起全栈开发环境(包含 Admin 前端、Website 官网、Docs 文档站、Nginx 反代、Spring Boot 后端、Postgres 数据库和 Redis 缓存共 6 大核心容器)。 - ✅ 本域 Flink UI 统一网关代理: 彻底破除本地容器环境网络阻隔,无需配置任何本地 hosts,本域端口无缝透传并智能适配 Flink 2.x 最新的运行态/完成态路由结构。
- ✅ 类型安全: 前后端全流程类型强绑定,前端通过 Orval 与自定义 Fetch 拦截器自动生成强类型 API SDK,网络故障具备被动式报错能力,质量极佳。
- ✅ 现代企业友好型 UI: 前端管理后台完全重塑为 Next.js 16 App Router + TailwindCSS 架构,配备精致的 Sonner 弹窗提示与全局异常隔离边界(Error Boundary),代码编辑器行号采用高对比亮色定制覆盖。
- ✅ 物理级隔离与脱水: 支持
make sync-ce与make publish-ce-github开源同步引擎,在ee(企业版)分支下开发,一键完成私有脚本脱水过滤并发布至 GitHub 开源版。
流计算开发编辑器 |
多作业运维大看板 |
Fluss Topic 元数据管控 |
Paimon Catalog 数据湖探索 |
- 📝 SQL 可视化编排: 基于 Flink SQL 的语法编辑器,支持实时语法提示与高亮,支持一键 SQL 格式化。
- 📊 独立工具栏: 纯图标(Icon-only)精致交互按钮,浅色高对比,集成保存、格式化、查询预览(
Eye图标)、运行等核心指令。 - 🔒 变量管理: 侧边栏独立的变量管理面板,使用
${var_name}机制实现 SQL 占位与热加载替换,防范硬编码风险。 - 🗂️ 层级目录结构: 支持拖拽排序及层级维护,目录树与运维列表状态全自动实时刷新同步。
- 📊 实时状态轮询: 后台定时器每 3 秒自动轮询,大表格状态与 Flink Job ID 瞬时自动更新呈现,无需手动刷新。
- 🛠️ 物理 Savepoint 机制: 快照状态一键创建、物理备份路径追踪与记录、一键实现流计算作业状态回滚与灾备。
- 🌐 动态本域代理: 通过 Nginx 网关本域代理跳转任意 Flink 集群 UI 页面,免配置 hosts,自适应 Flink 2.x 路由规范。
- 🌊 Fluss 流通道: Fluss Topic 物理分区、Schema 结构、数据表结构的一键挂载与速览。
- ❄️ Paimon 冰川湖: Paimon Catalog 层级节点可视化,提供流湖数据离线沉降与批流一体探索的统一数据入口。
- 核心框架: Java 17 + Spring Boot 3.3
- 数据映射: MyBatis-Plus
- 缓存与数据库: PostgreSQL 16 + Redis 7
- 实时湖仓: Apache Fluss 0.6 + Apache Paimon 0.9
- 打包编译: Maven 3.9
- 流计算引擎: Apache Flink 2.3+
- 框架: Next.js 16 (App Router 模式)
- 语言: React 19 + TypeScript 5.9+
- 状态管理: Zustand (声明式状态机)
- 数据交互: React Query 5 + Axios + Orval SDK 自动生成
- 视觉层: Tailwind CSS 3 / Vanilla CSS + Sonner Toaster (精致弹窗)
- 包管理: pnpm 10
- 代码编辑器: CodeMirror 6
- Markdown 渲染: md-editor-rt
- 拖拽排序: @dnd-kit/core + @dnd-kit/sortable
RayFlow/
├── backend/ # 🛡️ Java 后端 Maven 多模块工作区
│ ├── rayflow-server/ # 主服务进程 (Spring Boot Controller & Service)
│ ├── rayflow-common/ # 工具类与公共模型定义
│ └── rayflow-flink-core/ # Flink REST API 通信与核心客户端集成
│
├── frontend/
│ ├── admin/ # 🎯 后台管理控制台 (Next.js 16, 端口: 8001)
│ ├── docs/ # 📚 文档站点 (VitePress, 端口: 8003)
│ └── website/ # 🌐 官方展示推广网站 (Next.js 16, 端口: 8004)
│
├── deploy/ # 🚀 生产环境部署配置 (Dockerfile / Docker Compose / Nginx)
├── scripts/ # 🛠️ 系统维护脚本 (Orval 生成 / sync-ce 同步工具)
├── docker-compose.dev.yml # 开发环境一键全栈拓扑
└── Makefile # 项目管理与启动脚本 (自动化工具箱)
| 目录 | 说明 | 技术栈 |
|---|---|---|
backend/ |
后端主业务服务 | Spring Boot 3.3 + MyBatis-Plus + Postgres |
frontend/admin/ |
后台管理控制台 | Next.js 16 + shadcn/ui + TailwindCSS |
frontend/docs/ |
文档中心 | VitePress + Markdown |
frontend/website/ |
官网推广首页 | Next.js 16 + Outfit 现代排版 |
- Docker >= 20.10
- Docker Compose >= 2.0
- Make (系统自带或通过包管理器安装)
git clone https://github.com/bulolo/RayFlow.git
cd RayFlow# 1. 初始化本地环境配置 (只需运行一次)
make dev-init
# 2. 修改配置: 编辑 backend/.env 填入数据库密码及集群端口
# 3. 一键编译并前台拉起全栈服务
make dev-upWarning
关于 make dev-init: 它会从模板重新拷贝覆盖 backend/.env,如果您之前配置过,后续启动请直接使用 make dev-up。
服务启动完毕后,可在本地浏览器访问以下入口:
- 🎯 Admin 控制台: http://localhost:8080 (通过 Nginx 映射,用户名:
admin/ 密码:admin123) - 📚 Docs 文档站: http://localhost:8003
- 🌐 Website 官网: http://localhost:8004
- 🚀 后端 API (直连): http://localhost:3000
- 🐘 PostgreSQL: localhost:5433
根目录提供的 Makefile 封装了开发与同步的常用命令,将复杂的容器维护命令封装为简单的单行指令。
| 命令 | 执行动作说明 |
|---|---|
make dev-init |
配置初始化:自动检测并生成 backend/.env 本地开发配置文件。 |
make dev-up |
启动开发全栈:前台一键构建并启动 Postgres、Redis、Backend、Admin、Docs、Nginx、Flink,聚合输出日志。 |
make dev-down |
停止服务:停止开发容器,保留数据卷,下一次启动时数据库数据不丢失。 |
make dev-clean |
深度重置开发环境:停止容器并彻底删除所有数据卷( |
make build-admin |
编译前端:触发 Next.js 的生产编译与打包检查,验证代码的类型安全。 |
make build-docs |
构建文档站:本地构建 VitePress 静态文档资源。 |
make run-docs |
运行文档站:本地启动 VitePress 开发服务。 |
make sync-ce |
开源脱水过滤:(仅限 ee 分支) 自动物理清除私有脚本与 EE 标记,生成开源 ce 分支代码。 |
make publish-ce-github |
同步推送:拉取最新 ce 分支代码,比对 Commit 差异并推送到 GitHub 开源官方库。 |
Q: 启动后报错 "failed to fetch oauth token: EOF" 或下载 Docker 镜像失败?
A: 这是由于本地 Docker 无法直接连通上游 Hub服务导致。请尝试在 Docker Desktop 中配置国内镜像加速器,或配置系统网络代理。
Q: Nginx 启动失败,报错 "resolver directive is not allowed here"?
A: 请确保 Nginx 配置文件 deploy/nginx/default.conf 中,resolver 声明在了顶级 server 作用域内,而没有被错误地写入 if 块中。
Q: 点击 Flink Job ID 后打不开 Flink UI 页面?
A:
- 检查当前 Flink 任务的状态(若尚未生成 Job ID,则为不可点击状态)。
- 前端跳转会自动路由到
/flink-ui/{host}/{port}/本域子路径。请确保在本地开发环境启动时,您已在终端中通过下述命令重启过一次 Nginx 服务:docker compose -f docker-compose.dev.yml restart nginx
本项目采用 RayFlow 开源许可证 (基于 Apache 2.0 改进)。在保留开源灵活性的同时,我们增加了必要的条款以保护项目品牌和商业权益。
- 个人/企业内部使用:完全免费,无需额外授权。
- 所有场景必须保留品牌:无论何种用途,均严禁移除或修改 UI、控制台及 API 响应头中的 "RayFlow" 标识或版权声明。
- 严禁未经授权的 SaaS 服务:未经 RayFlow 官方书面授权,禁止利用本项目源码提供营利性的多租户 SaaS 服务(如:提供在线 Flink 任务托管、流湖仓一体订阅平台等)。
我们希望将核心技术贡献给开源社区,同时防止“去品牌化”的商业剽窃行为。如需商业授权或有合作意向,请联系官方通道。
详见 LICENSE 获取完整文本。
我们参考了 Dify.ai 的授权模式,旨在提供比 AGPL-3.0 更灵活的企业友好性,同时通过限制多租户 SaaS 服务来确保项目的核心资产和品牌得到保护。
💬 问题反馈: GitHub Issues | 📧 商务合作: support@bulolo.cn (Bulolo 团队)
⭐ 如果这个项目对您有帮助,请给我们一个 Star!
Made with ❤️ by RayFlow Dev Team



