Piper-AI 是一个基于责任链模式的分布式流程调度系统,采用微服务架构设计,支持任务编排、动态调度和分布式执行。系统基于 Spring Boot 3.x 构建,使用 Dubbo 3.x 作为 RPC 框架,ZooKeeper 作为服务注册中心。
graph TD
DAG[新DAG注册] --> DagBrain[DagBrain\n流程状态大脑]
DagBrain --> |观察者模式| Trigger[Trigger 触发器]
Trigger --> DynamicScheduler[DynamicScheduler 动态路由调度器]
DynamicScheduler --> |流程节点| ProcessScheduler[ProcessScheduler 流程节点调度器]
DynamicScheduler --> |任务节点| TaskScheduler[TaskScheduler 任务节点调度器]
ProcessScheduler --> ProcessFactory[ProcessFactory 流程实例工厂]
ProcessFactory --> ProcessInstance[ProcessInstance 流程处理节点]
TaskScheduler --> EventDrive[EventDrive 驱动引擎]
EventDrive --> |异步/同步|TaskHandlerInstance[TaskHandlerInstance 任务处理节点]
classDef brain fill:#9C27B0,color:white
classDef trigger fill:#E91E63,color:white
classDef chain fill:#009688,color:white
class DagBrain brain
class Trigger trigger
class ChainHandler chain
piper-ai-api: API 接口定义模块piper-ai-app: 应用服务模块piper-ai-domain: 领域模型模块piper-ai-infrastructure: 基础设施模块piper-ai-trigger: 触发器模块piper-ai-types: 类型定义模块piper-ai-engine: 调度引擎模块
- 后端框架: Spring Boot 3.2.3
- RPC 框架: Dubbo 3.2.17
- 服务发现: ZooKeeper 3.8.3
- 数据库: MySQL 8.0.30
- 构建工具: Maven
- 开发语言: Java 17
- 容器化: Docker & Docker Compose
-
分布式任务调度
- 基于责任链模式的任务调度流程
- 支持动态任务分配和负载均衡
- 分布式任务执行和状态管理
-
任务流程编排
- 基于 DAG 的任务编排
- 支持任务依赖关系管理
- 支持动态任务调度
-
高可用设计
- 服务注册与发现
- 负载均衡
- 故障转移
- JDK 17+
- Maven 3.8+
- Docker 20.10.0+
- Docker Compose 2.0.0+
- MySQL 8.0+
- ZooKeeper 3.8+
- 克隆代码库
git clone [your-repository-url]
cd Piper-AI- 安装依赖
mvn clean install- 启动服务
mvn spring-boot:run详细部署说明请参考 DEPLOY.md
spring:
application:
name: piper-ai-worker
datasource:
url: jdbc:mysql://localhost:3306/piper_ai
username: root
password: root
zookeeper:
connect-string: localhost:2181
session-timeout-ms: 60000
connection-timeout-ms: 15000
base-path: /piper-ai
dubbo:
application:
name: piper-ai
registry:
address: zookeeper://localhost:2181
protocol:
name: dubbo
port: 20880-
任务定义
- 实现 Task 接口
- 定义任务处理逻辑
- 配置任务依赖关系
-
流程编排
- 创建 DAG 图
- 定义节点关系
- 配置节点属性
-
任务执行
- 提交任务流程
- 监控执行状态
- 处理执行结果
- 服务健康检查
- 日志管理
- 性能监控
- 告警机制
欢迎提交 Issue 和 Pull Request 来帮助改进项目。在提交代码前,请确保:
- 代码符合项目编码规范
- 添加必要的单元测试
- 更新相关文档
- 提交信息清晰明确
MIT License