Architecture

Ordo 整体架构

Studio 是可视化工作台,Platform 是控制面,ordo-server 是执行引擎。三层通过 NATS JetStream 做规则同步,PostgreSQL 保存全部控制面状态。

系统层级概览

基于 compose.yml 的真实部署拓扑

UI
Studio
:3002 · Vue 3 · @xyflow
Flow EditorDecision TableTraceTemplates
Vite /api proxy
CP
ordo-platform
:3001 · Rust · Axum · SQLx
Org/RBACReleasesServer RegistryTemplates
BG
platform-worker
internal · Rust · Tokio
Release TasksRule SyncNotifications
PG
PostgreSQL
:5432 · ordo_platform DB
OrgsReleasesApprovalsSnapshots
MQ
NATS JetStream
:4222 · ordo.rules.*
RegistrationHeartbeatRule SyncEvents
/engine proxy · NATS rule sync
JIT
ordo-server
:8080 · Rust · Cranelift JIT · Axum + tonic
HTTPgRPCWASMCLI50-80ns JIT54k QPS

组件详解

ST
Studio
:3002
Vue 3 · @xyflow/react · Vite

可视化规则编辑器。拖拽式流程图、决策表编辑、模板实例化、执行追踪与测试。所有 API 请求通过 Vite proxy 转发到 ordo-platform。

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 开源。