FlexOps是一个基于Golang + ANTLR4的灵活运营平台,支持模块化编排、自定义DSL和分布式事务。
- 模块化管理: 支持HTTP API模块的注册、上下架、版本管理
- DSL驱动: 基于ANTLR4的自定义DSL,支持条件判断和用户自定义函数(UDF)
- 流程编排: 可视化流程设计,支持串并行执行、条件分支、循环等
- 分布式事务: 自研TCC(Try-Confirm-Cancel)事务框架,保证最终一致性
- 高性能: 多层缓存、并行调度、连接池优化
- 高可用: 熔断降级、超时重试、服务发现
- 后端: Golang 1.25.0
- DSL引擎: ANTLR4
- 数据库: MySQL + Redis + ETCD
- 消息队列: RabbitMQ
- 可观测性: OpenTelemetry
- 前端: Vue 3 + Element Plus
前端层 (Vue3 + Element Plus)
↓
API网关层 (路由、认证、限流、追踪)
↓
应用服务层 (Admin、Runtime、Scheduler、TCC Coordinator)
↓
基础设施层 (ETCD、RabbitMQ、OpenTelemetry)
↓
数据层 (MySQL、Redis、业务模块)
- Go 1.25.0+
- MySQL 8.0+
- Redis 6.0+
- ETCD 3.5+
- ANTLR4 (用于生成DSL解析器)
# 克隆项目
git clone https://github.com/wwnj/flexops.git
cd flexops
# 下载依赖
go mod download
# 生成ANTLR4代码(需先安装antlr4)
make generate-antlr
# 构建所有服务
make build# 初始化数据库
mysql -u root -p < migrations/001_initial_schema.up.sql
# 运行各个服务
make run-admin # 管理服务
make run-runtime # 执行服务
make run-scheduler # 调度服务
make run-tcc # TCC协调器
make run-gateway # API网关flexops/
├── cmd/ # 服务入口
├── internal/ # 私有代码
├── pkg/ # 公共库
│ ├── workflow/ # 流程编排
│ ├── dsl/ # DSL引擎
│ ├── module/ # 模块管理
│ ├── tcc/ # TCC事务
│ └── caller/ # 模块调用
├── api/ # API定义
├── web/ # 前端
├── migrations/ # 数据库迁移
└── scripts/ # 构建脚本
- 项目基础设施搭建
- 核心数据结构定义
- DSL语法定义(ANTLR4)
- 数据库Schema设计
- DSL解析引擎实现
- 模块注册中心实现
- 流程编排引擎实现
- TCC事务协调器实现
- 前端管理界面
详细计划请查看 Plan.md
欢迎提交Issue和Pull Request!
MIT License