第 23 章是全集里架构味最重的一章。它要回答的问题不再是「一局怎么打」,而是「两个物理隔离的区服怎么打」。答案是把系统切成三层逻辑加一层调度:本服层维护玩家数据并暴露跨服网关,调度层统一管理战区实例与匹配队列,战区层承载真实战斗,监控层负责幂等校验与结果回流。这一章把服务发现、消息队列、gRPC 联邦与最终一致性一次性串联起来。
本章定位
- 全集位置:第 23 章,属「分布式对战」层,是全集中唯一以「跨区」为核心命题的一章。
- 难度梯度:高阶。涉及服务发现、跨区通信、实例调度与结果回写四类工程难题。
- 前置章节:第 21 章异步远征(结算与对账)、第 20 章社交大厅(全局身份与调度基础)、第 10 章城格建造 mini-SLG(区服与养成数据)。
- 后续衔接:第 24 章动态赛事系统建立在跨服对战之上,把单场对战组织成多赛制锦标赛。
核心验证目标
- 三层逻辑加一层调度:本服层维护注册登录与角色数据,调度层维护战区实例与匹配队列,战区层承载战斗逻辑与结算,监控层提供日志、状态追踪与幂等校验。
- 跨区通信与联邦:每区部署一个 Cross-Gateway,通过服务网格或 gRPC 联邦互通,跨服调度中心可运行在独立集群。
- 跨区匹配与调度:统一匹配队列支持异地玩家配对,调度中心按负载把对局分配到合适的战斗区实例。
- 战斗实例生命周期:战斗实例以动态 Pod 分配方式运行,创建、承载对局、结算、回收形成完整闭环。
- 结果回流与一致性:战斗结果回流到各区数据库,通过结果提交与对账机制保证幂等与最终一致,避免重复发放奖励。
- 战斗日志与回放:跨服对局需留下可审计的战斗日志与回放数据,用于仲裁与荣誉结算。
技术栈建议
| 层次 | 推荐选型 | 说明 |
|---|---|---|
| 服务端 | Go、Java、Rust 或 TypeScript | 跨区网关与战斗区均可选多语言栈 |
| 协议 | WebSocket 加 RPC | 玩家侧 WebSocket,服务间 RPC 与 gRPC 网关 |
| 消息 | Redis Stream 或 Kafka | 事件广播与任务派发 |
| 调度 | 服务发现加动态分配 | 战斗实例按负载动态申请 Pod |
| 一致性 | 结果提交加对账 | 幂等回写与离线对账修复 |
本章文章
| 文章 | 核心内容 |
|---|---|
| 在线联机原型全集:第 23 章 跨服战系统 | 多区互联、全局身份映射、跨区匹配与调度、战斗实例生命周期、结果回流与最终一致性 |
与相邻章节的关系
- 上一章:第 22 章 公会建设 提供公会与战队数据,跨服战常以公会为参赛单位。
- 下一章:第 24 章 动态赛事系统 在跨服对战之上叠加赛程调度与积分排名。
- 基础设施依赖:第 20 章 社交大厅 的全局身份是本章跨区识别玩家的前提。