可视化规则编辑器。拖拽式流程图、决策表编辑、模板实例化、执行追踪与测试。所有 API 请求通过 Vite proxy 转发到 ordo-platform。
Architecture
Ordo 整体架构
Studio 是可视化工作台,Platform 是控制面,ordo-server 是执行引擎。三层通过 NATS JetStream 做规则同步,PostgreSQL 保存全部控制面状态。
系统层级概览
基于 compose.yml 的真实部署拓扑
Client
UI
Studio
:3002 · Vue 3 · @xyflow
Flow EditorDecision TableTraceTemplates
Vite /api proxy
Control Plane
CP
ordo-platform
:3001 · Rust · Axum · SQLx
Org/RBACReleasesServer RegistryTemplates
BG
platform-worker
internal · Rust · Tokio
Release TasksRule SyncNotifications
Infra
PG
PostgreSQL
:5432 · ordo_platform DB
OrgsReleasesApprovalsSnapshots
MQ
NATS JetStream
:4222 · ordo.rules.*
RegistrationHeartbeatRule SyncEvents
/engine proxy · NATS rule sync
Engine
JIT
ordo-server
:8080 · Rust · Cranelift JIT · Axum + tonic
HTTPgRPCWASMCLI50-80ns JIT54k QPS
组件详解
ST
Studio
:3002
Vue 3 · @xyflow/react · Vite
Flow 编辑器(xyflow)决策表编辑器执行 Trace 调试模板市场版本历史
OR
ordo-platform
:3001
Rust · Axum · SQLx · NATS
控制面。管理组织、项目、成员、RBAC、模板、Fact Catalog、契约、发布单与 Server 注册表。通过 NATS 订阅 Server 心跳,维护实时注册表。
Org / Project / RBACFact Catalog & ContractsRelease CenterServer RegistryGitHub OAuth
PL
platform-worker
internal
Rust · Tokio · NATS
后台异步工作进程。处理发布执行任务、规则同步调度、通知推送等耗时操作,与主进程共享数据库但独立运行。
发布任务执行规则同步调度实例状态轮询通知推送
OR
ordo-server
:8080
Rust · Axum · Cranelift JIT · gRPC
规则执行引擎。支持 HTTP / gRPC / WASM / CLI 四种接入方式。JIT 编译(Cranelift)执行延迟 50-80 ns,解释器 1.63 µs,HTTP 单线程 54k QPS。启动后自动向 Platform 注册并通过 NATS 持续发送心跳。
Cranelift JIT 编译器HTTP + gRPC + WASM多租户隔离WAL 崩溃恢复NATS 热重载
NA
NATS JetStream
:4222
NATS 2.10 · JetStream
控制面消息总线。承载 Server 注册(ordo.rules.*)、心跳、规则内容同步事件。Platform 和 ordo-server 均订阅此总线,实现解耦的节点发现与规则推送。
节点注册与心跳规则内容同步控制事件广播JetStream 持久化
PO
PostgreSQL
:5432
PostgreSQL 16 · SQLx migrations
控制面唯一持久化存储(ordo_platform 数据库)。保存组织、项目、角色、Fact、契约、发布单、审批记录、Server 元数据与规则快照。
组织 / 项目 / 角色发布单与审批记录Server 元数据规则版本快照自动迁移 (sqlx)
Flow
请求执行路径
Studio → Platform → ordo-server 的完整请求链路
flowchart LR
classDef studio fill:#fdf3ea,stroke:#D4874D,color:#2D2A26
classDef platform fill:#f5f0eb,stroke:#7C6B5A,color:#2D2A26
classDef engine fill:#ecf5f1,stroke:#4A9E6B,color:#2D2A26
classDef infra fill:#f0ebe3,stroke:#9C9590,color:#2D2A26
Studio["Studio :3002\n(Vue 3 + xyflow)"]:::studio
Platform["ordo-platform :3001\n(Rust · Axum)"]:::platform
Worker["platform-worker\n(Rust · Tokio)"]:::platform
Server["ordo-server :8080\n(Rust · Cranelift JIT)"]:::engine
NATS[("NATS JetStream\n:4222")]:::infra
PG[("PostgreSQL\nordo_platform")]:::infra
Client(["Client\nHTTP / gRPC / WASM"]):::infra
Studio -->|"Vite /api proxy"| Platform
Platform -->|"/engine proxy"| Server
Server -->|"register + heartbeat"| Platform
Platform <-->|"ordo.rules.*\nrule sync / events"| NATS
Server <-->|"subscribe rule updates"| NATS
Platform --> PG
Worker --> PG
Worker <-->|"consume tasks"| NATS
Client -->|"execute rules"| Server
Release
发布与审批路径
规则发布不是单次按钮,而是一个完整的治理流程
sequenceDiagram
actor U as 用户 (Studio)
participant P as ordo-platform
participant W as platform-worker
participant N as NATS JetStream
participant S as ordo-server
U->>P: 创建发布单 (POST /releases)
P->>P: 校验规则版本 + 创建审批流
P-->>U: 待审批状态
U->>P: 审批通过 (PATCH /releases/:id/approve)
P->>W: 入队执行任务
W->>N: 发布规则同步事件 (ordo.rules.sync)
N->>S: 推送规则更新
S->>S: 热加载新规则版本
S->>P: 上报实例状态 + 心跳
P-->>U: 发布完成
掌控你的决策逻辑。
不要让业务规则散落在代码库和电子表格里。Ordo 让团队在同一个地方编写、测试、治理它们。已在 GitHub 开源。