Skip to content

wwnj/flexops

Repository files navigation

FlexOps - 灵活运营平台

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!

License

MIT License

About

flexops is a flexiable operation platform

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors