Appearance
系统架构
Croupier 当前的目标架构已经从“多条回拨链路 + 历史 旧传输/gRPC 混合模型”收敛到“统一 session 传输”:
SDK <-> Agent:sdk-agent subprotocolAgent <-> Server:agent-server subprotocol- 两者共享同一套
shared session runtime
总体拓扑
核心结论
Agent <-> Server不再以REQ/REP作为目标主模型,而是轻量双向 session。Server -> Agent的调用应复用既有 session,不再依赖rpc_addr反向回拨。Agent本地监听只服务GameServer / SDK / 第三方应用。SDK <-> Agent与Agent <-> Server共享同一套 session 传输基座。
shared session runtime
这里的 shared session runtime 指共享的传输与会话基座,至少包括:
tcp- 可选
tls 4-byte frame length + 8-byte croupier header + protobuf body- 双向 request/response 复用
- request id 管理
- heartbeat
- reconnect
- drain
- backpressure
它不等于具体业务协议,只是通用运行时。
subprotocol 说明
这里的 subprotocol 不是“个性化配置”,而是“运行在同一套 session runtime 上的不同应用层子协议”。
当前有两套主要 subprotocol:
sdk-agent subprotocol- 首条消息是
ProviderConnectRequest - 默认不启用
tls - 面向 provider session
- 首条消息是
agent-server subprotocol- 首条消息是
AgentConnectRequest或其兼容注册消息 - 默认启用
tls - 面向 agent session
- 首条消息是
二者共享底层机制,但握手、注册内容和路由语义不同。
为什么不再以 历史消息模式 为中心
问题不在于 旧传输 没有长连接能力,而在于当前使用的 REQ/REP pattern 不适合:
- 在已有连接上由双方主动发新请求
- 多个并发 in-flight 请求复用
- session 级别的重连、背压、drain 和路由治理
因此当前架构收敛为“轻量 session 协议”,而不是继续围绕某个 历史消息模式 修补。
