控制面与 Agent 协同
Server 负责权限、审批、审计、配置和函数路由,Agent 通过统一 session 链路接入游戏服务与节点能力。
登录Croupier 是面向游戏运营与控制场景的 Server / Agent / SDK 平台,默认服务于单一游戏公司内部的多个游戏与多个环境。当前架构已经收敛到“统一 session 传输”方向:
Agent <-> Server:默认采用 TCP session,默认启用 TLSSDK <-> Agent:默认采用 TCP session,默认不启用 TLS,按需开启入口按受众分为两个独立的面,不要合并成一个「负载均衡层」:
dashboard nginx, 按请求分流 HTTP API / SSE 到 Server 的 :18780haproxy(:19090), 按 TCP 长连接打散到 Server 的 control listener;连接语义是「断线重连即漂移」, 与 HTTP 的按请求分流完全不同两个入口面互不共享:Web 面的 nginx 不碰 Agent 流量,Agent 面的 haproxy 不碰 HTTP。L4/L7 选型与 VRRP 消除 LB 单点的论证见 负载均衡。
Server 支持多实例高可用部署(
cluster.enabled):成员发现走共享存储(无 seed、无静态 peers),请求落到非 owner 实例时经实例互联转发(一跳限制 + epoch fencing)。单实例部署默认关闭集群,零开销。详见 Server 多实例高可用设计。
关键边界说明:
Server 不再依赖反向直连 Agent 暴露的 rpc_addrAgent 本地监听只服务 GameServer / SDK / 第三方应用Server -> Agent 的 Invoke / StartTask / CancelTask / Ops 都应复用既有 Agent-Server session权限判定基于 Casbin 的 RBAC/ABAC 混合模型,角色之外还能按属性放行或拦截。政策分两层:YAML 给默认值,数据库覆盖策略在线调整。操作按低/中/高/危险四级定风险,高危操作自动进审批流程,其中双人审批规则要求多人确认才放行。
game_idenv 表达 dev/test/staging/prod 等逻辑环境scope 表达业务归属,target 表达运行位置所有操作写审计日志,记录之间用哈希链关联,改一条就断链,事后能查出来。密码、token 等敏感字段在日志与响应里自动脱敏。
# 克隆仓库
git clone https://github.com/cuihairu/croupier.git
cd croupier
# 下载依赖
go mod download
# 构建服务
make build# 启动 Server
./bin/croupier-server --config configs/server.yaml
# 启动 Agent
./bin/croupier-agent --config configs/agent.yaml# 检查 Server 健康状态
curl http://localhost:18780/healthz
# 查看 API 文档
curl http://localhost:18780/api/v1/按使用路径组织:
| 路径 | 入口 | 说明 |
|---|---|---|
| 快速开始 | 指南 · 快速开始 | 安装、配置、Server + Agent 启动、最小闭环 |
| 页面产品 | 函数管理 · Page Studio · Resource Catalog | 注册函数 → 自动生成页面 → Proposal Inbox 发布 → Console 受控执行 |
| SDK | SDK 概览 | Provider / Invoker / 配置 / 能力矩阵,6 种语言 |
| API | API 参考 | REST 契约、鉴权、game/env scope、各资源 API |
| 运维 | 监控 · 数据分析 | 部署、监控、备份、分析、故障排除 |
| 开发 | 开发 · 架构 | 架构、代码规范、扩展策略、发布规则 |
历史设计与迁移文档归入 架构 - 提案与迁移(侧栏已折叠),不作为接入主路径。
Apache-2.0 License