CroupierCroupier
指南
架构
API 参考
  • C++ SDK
  • Go SDK
  • Java SDK
  • JavaScript SDK
  • Python SDK
分析
GitHub
指南
架构
API 参考
  • C++ SDK
  • Go SDK
  • Java SDK
  • JavaScript SDK
  • Python SDK
分析
GitHub
  • 系统架构

    • 架构概览
    • 分层设计
    • 数据流

系统架构

Croupier 采用三层分布式架构,实现权限控制、函数路由和 UI 展示的完全分离。

架构图

分层说明

1. 展示层

职责: 用户界面、操作可视化、进度展示

组件:

  • Dashboard: Web 管理界面,基于 React + Ant Design
  • 未来: 移动端支持

特性:

  • X-Render 驱动的表单自动生成
  • 实时日志流式展示
  • 审批流程可视化
  • 响应式设计

2. 控制层

职责: 权限控制、函数路由、审计记录

组件:

  • HTTP API: RESTful 接口 (8080)
  • Control Service: Agent 注册与连接管理
  • Function Service: 函数调用路由
  • RBAC/ABAC: 权限控制引擎
  • 审计日志: 操作记录与追溯
  • 审批工作流: 高风险操作审批

特性:

  • 负载均衡 (轮询/一致性哈希/最少连接)
  • 幂等性保证
  • 双人强制规则
  • 敏感字段脱敏

3. 接入层

职责: 公网接入、隧道转发

组件:

  • Edge Proxy: DMZ 部署的边缘代理

特性:

  • 双向隧道支持
  • 连接复用
  • 流量转发

4. 代理层

职责: 游戏内网代理、函数注册、调用转发

组件:

  • Agent: 部署在游戏内网的代理进程

特性:

  • 出站 mTLS 连接
  • 本地 gRPC 监听 (19090)
  • 函数自动注册
  • 异步作业执行
  • 作业取消与进度流

5. 游戏服务层

职责: 业务逻辑实现

组件:

  • Game Server: 游戏服务器进程
  • SDK: 多语言客户端 SDK

特性:

  • 函数实现与注册
  • 类型安全的 API
  • 热重载支持

核心设计模式

1. 协议优先开发

所有 API 通过 Protocol Buffers 定义:

// proto/croupier/control/v1/service.proto
service ControlService {
  rpc RegisterAgent(RegisterAgentRequest) returns (RegisterAgentResponse);
  rpc Heartbeat(HeartbeatRequest) returns (HeartbeatResponse);
}

// proto/croupier/function/v1/service.proto
service FunctionService {
  rpc InvokeFunction(InvokeFunctionRequest) returns (InvokeFunctionResponse);
  rpc StreamJobEvents(StreamJobEventsRequest) returns (stream JobEvent);
}

2. 描述符驱动 UI

基于 JSON Schema 自动生成 UI:

{
  "id": "player.ban",
  "params": {
    "type": "object",
    "properties": {
      "player_id": {"type": "string"},
      "duration": {"type": "integer", "minimum": 1}
    }
  },
  "ui": {
    "risk_warning": "高风险操作,需要审批"
  }
}

3. 作业模型

异步执行长时间任务:

message JobEvent {
  string job_id = 1;
  EventType type = 2;  // START, PROGRESS, DONE, ERROR
  string message = 3;
  double progress = 4;
}

安全架构

通信安全

连接协议安全方式
Dashboard → ServerHTTPSTLS
Server → AgentgRPCmTLS
Server → EdgegRPCmTLS
Edge → AgentgRPCmTLS
Agent → Game ServergRPC可选 mTLS

权限模型

用户 (User)
  ↓ 拥有
角色 (Role)
  ↓ 分配
权限 (Permission)
  ↓ 保护
函数 (Function)
  ↓ 关联
实体 (Entity)

审计日志

所有操作记录包含:

  • 操作时间
  • 操作用户
  • 目标游戏/环境
  • 函数与参数
  • 审批信息
  • 执行结果
  • 哈希防篡改

可观测性

指标 (Metrics)

  • Prometheus 格式输出
  • /metrics 端点
  • 按函数/游戏统计

日志 (Logging)

  • 结构化日志 (JSON)
  • 日志级别可配置
  • 支持文件轮转

追踪 (Tracing)

  • OpenTelemetry 集成
  • Jaeger 导出
  • 分布式调用链

部署架构

单机房部署

┌─────────────────────────────────────────┐
│           数据中心                       │
│  ┌─────────────────────────────────┐   │
│  │  管理网段 (内网)                │   │
│  │  Server + Dashboard            │   │
│  │         │                       │   │
│  │    Agent (游戏服务器旁)         │   │
│  └─────────────────────────────────┘   │
│  ┌─────────────────────────────────┐   │
│  │  DMZ 网段                        │   │
│  │  Edge (可选)                    │   │
│  └─────────────────────────────────┘   │
└─────────────────────────────────────────┘

多机房部署

┌──────────────┐       ┌──────────────┐
│  机房 A       │       │  机房 B       │
│  Server      │◄─────►│  Server      │
│  │           │       │  │           │
│  Agent       │       │  Agent       │
│  │           │       │  │           │
│  Game Server │       │  Game Server │
└──────────────┘       └──────────────┘
       │                       │
       └───────────┬───────────┘
                   │
              ┌─────────┐
              │  Edge   │
              │  (DMZ)  │
              └─────────┘

相关文档

  • 分层设计
  • 组件说明
  • 数据流
  • 设计模式
在 GitHub 上编辑此页
最后更新: 2026/1/8 05:17
Next
分层设计