CivGenesis
文档
Quickstart
设计
协议
SDK
Protobuf
观测
Jobs
IPC
Nacos
gRPC
Dispatcher
集成
GitHub
文档
Quickstart
设计
协议
SDK
Protobuf
观测
Jobs
IPC
Nacos
gRPC
Dispatcher
集成
GitHub
  • 指南

    • Quickstart(示例工程)
    • CivGenesis 设计(草案)
    • 协议与会话(草案)
    • Protobuf:消息定义与生成(Java / Unity / TypeScript)
    • 可观测性:Prometheus Metrics + OpenTelemetry Tracing
    • 后台任务(本地 / 分布式)
    • 客户端 SDK(Unity / Cocos / LayaAir)
    • Dispatcher 与注解路由(草案)
    • 进程间通信(IPC)与服务发现(草案)
    • Nacos 注册中心(默认实现)
    • gRPC(与 Node.js 战斗进程互通)
    • 时间轮定时系统(草案)
    • 配置项建议(草案)
    • 安全基线(草案)
    • 系统消息(protobuf)草案
    • 集成指南(不含业务逻辑)
    • 热更新(兼容 Arthas redefine)草案

安全基线(草案)

本项目偏游戏服务器 SDK/运行时,默认建议把安全策略作为“可配置且可强制”的基线能力。

1) 传输加密:优先 TLS(wss://)

最佳实践:

  • 生产环境优先使用 wss://(TLS)作为默认加密方案(证书校验、生态成熟、运维通用)。
  • 应用层加密(flags.ENCRYPT)作为可选能力,仅在确有需求时启用(例如某些渠道环境限制、或需要端到端额外保障)。

建议策略(可配置):

  • prod:requireTls=true(拒绝明文 ws://)
  • dev/local:可放开 ws:// 便于抓包与调试,但务必限制 IP/环境

2) 鉴权与会话

  • 鉴权 token 只在 Login/Resume 中携带,不建议每条业务消息都携带。
  • 同连接允许切号时,必须启用 sessionEpoch 护栏(防异步回调串号)。
  • 建议默认:同一 playerId 只允许一个活跃连接(新登录踢旧连接),避免多点登录带来的状态冲突。

踢人策略(最佳实践默认):

  • 默认:同 playerId 新登录 踢旧连接
  • 可配置:拒绝新登录(少见,仅在特殊安全策略或“同账号多端”玩法中使用)

3) 防重放与幂等

Req/Resp 重试的最佳实践:

  • 客户端重试必须复用同一个 seq
  • 服务端对每个 PlayerSession 启用 seq -> response 去重缓存(LRU/TTL)

对“高价值/有副作用”的业务请求(扣资源/发奖/交易):

  • 仍建议业务层引入幂等键(例如订单号/事务号),防止跨会话/跨服重复。

4) 限流与 DoS 防护

协议层必须具备硬限制(可配置):

  • 最大 frame bytes
  • 单帧最大 TLV 个数
  • 单个 TLV 的最大长度
  • 每连接每秒最大请求数(尤其是未登录阶段)
  • 每连接最大 in-flight 请求数(配合 ClientHelloResp.maxInFlightReq)

背压策略(最佳实践,默认):

  • 当触发背压(例如:连接的 in-flight 超限、或目标分片队列已满)时:
    • 拒绝当前请求并返回错误响应(flags.ERROR + Error(code=BACKPRESSURE|SERVER_BUSY, retryable=true))
    • 不建议默认断开连接(避免放大故障与用户体验抖动)

建议客户端行为:

  • 对 retryable=true 的背压错误做指数退避重试
  • 达到最大重试次数后提示“服务器繁忙”

in-flight 定义(用于背压):

  • 仅统计 REQ(seq>0) 且“尚未完成响应(RESP)”的请求数
  • 包含已 defer 的请求(即:handler 已返回但响应仍未完成)
  • 当服务端写出 RESP(成功或错误)后,从 in-flight 中移除

5) 敏感信息处理

  • token/credential 不应被写入 access log(或必须脱敏)
  • 若启用压缩:注意压缩侧信道风险(敏感字段可选择不压缩,或仅在 TLS 下压缩)
Edit this page
最近更新: 2025/12/31 16:07
Contributors: cuihairu
Prev
配置项建议(草案)
Next
系统消息(protobuf)草案