Skip to content

bulolo/RayFlow

Repository files navigation

🐟 RayFlow

企业级 Flink SQL/JAR 流批一体数据资产开发运维平台

RayFlow 是一个面向流处理与流式数据湖的统一开发与任务管理平台,提供 Apache Flink 作业全生命周期编排、Apache Fluss 极速实时流通道以及 Apache Paimon 冰川数据湖的集中式管理入口,全面释放流湖仓一体化数据潜能。

Spring Boot Next.js TypeScript PostgreSQL Redis Flink

English | 简体中文

官网首页 | 演示站点 | 文档中心

Star

如果这个项目对你有帮助,请点击右上角 ⭐ Star 支持一下,这是对开发者最大的鼓励!


🚀 最近更新

2026-07-01 🌟 初始版本发布 (v0.0.1)

  • 💻 流计算开发设计器
    • 基于 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 接口,解决网络阻隔的同时防范主站路由污染。
  • 自适应 Flink 2.x 新路由
    • 智能对接 Flink 2.3.0 最新路由规范。处于运行态(RUNNING)的作业自动路由至 /#/job/running/ 详情;处于完成态(FINISHED 等)的作业自动路由至 /#/job/completed/ 详情。
  • 🌊 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-cemake publish-ce-github 开源同步引擎,在 ee(企业版)分支下开发,一键完成私有脚本脱水过滤并发布至 GitHub 开源版。

📸 应用截图

🎯 管理控制台

流计算开发编辑器

流计算开发编辑器
独立的浅色高级操作工具栏、CodeMirror 6 亮色行号与变量抽屉

多作业运维大看板

多作业运维大看板
全状态大表格,单作业操作 Loading 反馈与并发锁定防护

Fluss Topic 元数据管控

Fluss Topic 元数据管控
秒级海量实时流事件 Topic 状态列表与元数据详情

Paimon Catalog 数据湖探索

Paimon Catalog 数据湖探索
冰川湖仓 Catalog 层级节点树与物理元数据深度探索


✨ 核心特性

🎯 开发设计器 (SQL/JAR 开发)

  • 📝 SQL 可视化编排: 基于 Flink SQL 的语法编辑器,支持实时语法提示与高亮,支持一键 SQL 格式化。
  • 📊 独立工具栏: 纯图标(Icon-only)精致交互按钮,浅色高对比,集成保存、格式化、查询预览(Eye图标)、运行等核心指令。
  • 🔒 变量管理: 侧边栏独立的变量管理面板,使用 ${var_name} 机制实现 SQL 占位与热加载替换,防范硬编码风险。
  • 🗂️ 层级目录结构: 支持拖拽排序及层级维护,目录树与运维列表状态全自动实时刷新同步。

⚙️ 运维大看板 (Ops Control)

  • 📊 实时状态轮询: 后台定时器每 3 秒自动轮询,大表格状态与 Flink Job ID 瞬时自动更新呈现,无需手动刷新。
  • 🛠️ 物理 Savepoint 机制: 快照状态一键创建、物理备份路径追踪与记录、一键实现流计算作业状态回滚与灾备。
  • 🌐 动态本域代理: 通过 Nginx 网关本域代理跳转任意 Flink 集群 UI 页面,免配置 hosts,自适应 Flink 2.x 路由规范。

🌊 湖仓一体管理 (Lakehouse)

  • 🌊 Fluss 流通道: Fluss Topic 物理分区、Schema 结构、数据表结构的一键挂载与速览。
  • ❄️ Paimon 冰川湖: Paimon Catalog 层级节点可视化,提供流湖数据离线沉降与批流一体探索的统一数据入口。

🏗️ 技术架构

后端技术栈 (Backend)

  • 核心框架: 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+

前端技术栈 (Frontend)

  • 框架: 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 (系统自带或通过包管理器安装)

⚡ 快速开始 (3 分钟)

1. 下载项目

git clone https://github.com/bulolo/RayFlow.git
cd RayFlow

2. 启动开发环境

# 1. 初始化本地环境配置 (只需运行一次)
make dev-init

# 2. 修改配置: 编辑 backend/.env 填入数据库密码及集群端口
# 3. 一键编译并前台拉起全栈服务
make dev-up

Warning

关于 make dev-init: 它会从模板重新拷贝覆盖 backend/.env,如果您之前配置过,后续启动请直接使用 make dev-up

服务启动完毕后,可在本地浏览器访问以下入口:


🏗️ 项目管理 (Makefile)

根目录提供的 Makefile 封装了开发与同步的常用命令,将复杂的容器维护命令封装为简单的单行指令。

核心命令

命令 执行动作说明
make dev-init 配置初始化:自动检测并生成 backend/.env 本地开发配置文件。
make dev-up 启动开发全栈:前台一键构建并启动 Postgres、Redis、Backend、Admin、Docs、Nginx、Flink,聚合输出日志。
make dev-down 停止服务:停止开发容器,保留数据卷,下一次启动时数据库数据不丢失。
make dev-clean 深度重置开发环境:停止容器并彻底删除所有数据卷⚠️ Postgres 库数据将清空丢失,危险操作)。
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 开源官方库。

❓ 常见问题 (FAQ)

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

📄 许可证与商业用途 (License & Commercial Use)

本项目采用 RayFlow 开源许可证 (基于 Apache 2.0 改进)。在保留开源灵活性的同时,我们增加了必要的条款以保护项目品牌和商业权益。

📌 核心准则

  1. 个人/企业内部使用:完全免费,无需额外授权。
  2. 所有场景必须保留品牌:无论何种用途,均严禁移除或修改 UI、控制台及 API 响应头中的 "RayFlow" 标识或版权声明。
  3. 严禁未经授权的 SaaS 服务:未经 RayFlow 官方书面授权,禁止利用本项目源码提供营利性的多租户 SaaS 服务(如:提供在线 Flink 任务托管、流湖仓一体订阅平台等)。

⚠️ 为什么有此限制?

我们希望将核心技术贡献给开源社区,同时防止“去品牌化”的商业剽窃行为。如需商业授权或有合作意向,请联系官方通道。

详见 LICENSE 获取完整文本。

🤔 为什么选择此许可证?

我们参考了 Dify.ai 的授权模式,旨在提供比 AGPL-3.0 更灵活的企业友好性,同时通过限制多租户 SaaS 服务来确保项目的核心资产和品牌得到保护。


📮 联系方式

💬 问题反馈: GitHub Issues   |   📧 商务合作: support@bulolo.cn (Bulolo 团队)


⭐ 如果这个项目对您有帮助,请给我们一个 Star!

Made with ❤️ by RayFlow Dev Team

About

An enterprise-grade stream-lakehouse developer & orchestrator platform for Apache Flink (SQL/JAR), Apache Fluss, and Apache Paimon.企业级 Flink (SQL/JAR) 流批一体开发运维平台,集成 Fluss 实时流通道与 Paimon 冰川数据湖集中式编排管理。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors