这是《MMO 服务器开发》卷四《工程化与运营》的目录。前三卷把 aegis 从一台机器上的网络内核,做成了能单服可玩、又能跨服集群的服务端;这一卷回答的是最后一问:做出来之后,怎么把它交付出去、并且长期运营好。
目录
本页是《工程化与运营》的全书入口,按顺序列出全部 30 篇,点击标题直达正文。也可以从各节末尾的「阅读导航」按顺序通读,或先看下面三条学习路径与验收清单。
这一卷要解决什么
前几卷证明了「能做出来」,这一卷要证明「能交付、能运营」。落到工程上,是四件事:
- 能量出来——承载数字不是「在线人数」,而是连接数、消息吞吐、P99 延迟、内存与 GC、跨服往返这些可以复现的硬指标。压测要有口径、要有平台、要有容量模型。
- 能看清——线上出问题时,日志、指标、链路三件套要能把「谁、什么时候、对谁、做了什么、结果如何」还原出来,而不是靠猜。
- 能安全变更——配置热更、灰度发布、优雅停服、回滚,这些是长线运营里最高频、也最容易出事故的动作,必须有边界、有护栏、有审计。
- 能兜住——备份能恢复、多活能切换、事故能复盘、数据能修复。运营的底线不是「不出事」,而是「出了事能收得住」。
这一卷的每一节都尽量给能真跑的产物:压测器、指标打点、配置推送、GM 命令、备份恢复、切换演练,全部在本机跑过。
这一卷写给谁
本卷面向已经把服务端做出来、准备上线或已经上线的人。
四类读者,四种收获
| 你是 | 你会拿到 |
|---|
| 准备上线的技术负责人 | 一套可执行的上线检查清单,与一份跨栈选型判断标准 |
| 负责容量的后端工程师 | 机器人压测平台 + 容量模型,能把「能扛多少人」算成数字 |
| 值班 / SRE | 日志、指标、链路、告警、演练与复盘的一整套落地做法 |
| 运营与客服支持 | GM 后台的权限、审计、补偿、数据修复流程 |
这一卷与前几卷的关系
| 卷 | 回答的问题 | 本卷如何承接 |
|---|
| 卷一《网络与并发内核》 | 网络与并发怎么从零造 | 压测器直接复用卷一的帧格式与机器人客户端 |
| 卷二《单服架构与玩法系统》 | 玩法系统怎么装进去 | 综合项目把卷二玩法装配成可交付形态 |
| 卷三《分布式与跨服》 | 规模怎么做上去 | 部署、发布、容灾都建立在卷三的集群拓扑之上 |
| 卷四《工程化与运营》 | 怎么交付并长期运营 | 本卷 |
可运行性口径
本卷大量依赖真实中间件与真实进程。所有中间件都以独立容器在本机运行,端口与用户自己的实例完全错开。
| 服务 | 本机地址 | 用途 |
|---|
| Redis 7 | 127.0.0.1:26379 | 缓存、计数、限流 |
| Postgres 17 | 127.0.0.1:25432 | 落库、对账、备份恢复 |
| etcd 3.6.4 | http://127.0.0.1:32379 | 配置中心、租约 |
| NATS 2 | nats://127.0.0.1:34222 | 事件与埋点管道 |
| Consul 1.20 | http://127.0.0.1:38500 | 服务注册与健康检查 |
| 层级 | 内容 | 验收手段 |
|---|
| L1 | 纯逻辑(容量模型、漏斗计算、权限判定) | go test |
| L2 | 真起进程 / 真连中间件 | 自写 harness,真跑 |
| L2J | Java 对照(Go GC vs JVM GC) | Docker 拉 JDK 21 真跑 |
| L3 | 静态清单(K8s / 云组件) | 仅语法与 schema 校验,本机不部署 |
| L4 | 不可复现(公网、真机、真 DDoS、真云控制台) | 正文显式标注 |
| B | 基准(连接数、QPS、P99、内存与 GC) | 产出数字,软告警不硬失败 |
三条阅读路径
路径 A:准备上线(按顺序通读)
从第 1 章压测与容量开始,把承载数字算出来;再读第 2 章性能调优,确认帧预算达标;接着第 3 章可观测性、第 4 章部署与发布、第 5 章配置与热更,把「怎么安全上线」走完;最后用第 9 章综合项目与第 10 章收官收口。
路径 B:已经在线,先补观测与容灾
如果你已经在运营,优先读第 3 章(日志、指标、链路)、第 8 章(备份、多活、演练)、第 7 章(GM 与数据修复)。这三章是「出事时能不能收住」的直接答案。
路径 C:只想知道 Go 与 Java 怎么选
直接读第 2 章 2.2(Go GC vs JVM GC 本机实测)与第 10 章 10.1(跨栈对照矩阵与选型标准),再回看卷一 2.3 与 4.2 的两处双栈对照,就能拿到完整判断。
全书章节索引
第一部分:压测与容量(第 1 章)
第二部分:性能调优(第 2 章)
第三部分:可观测性(第 3 章)
第四部分:部署与发布(第 4 章)
第五部分:配置中心与热更新(第 5 章)
第六部分:数据分析与埋点(第 6 章)
第七部分:GM 后台与运营控制台(第 7 章)
第八部分:容灾与演练(第 8 章)
第九部分:综合项目(第 9 章)
第十部分:收官(第 10 章)
《晨曦大陆》上线验收清单
下面这十步是本卷反复用到的验收动作,第 9 章会把它们串成一份清单:
| 步骤 | 动作 | 通过判据 |
|---|
| 1 | 起全部节点与中间件 | 健康检查全绿 |
| 2 | 机器人压测 | 达到目标连接数与吞吐,P99 在预算内 |
| 3 | 指标打点核对 | /metrics 能拉到关键指标 |
| 4 | 灰度发布 | 新版本流量按比例生效 |
| 5 | 配置热更 | 不重启即生效,可回滚 |
| 6 | 优雅停服 | 连接被排空,数据已落库 |
| 7 | 备份与恢复 | 从备份能恢复到一致状态 |
| 8 | 故障切换 | 主节点宕机后能自动接管 |
| 9 | 演练复盘 | 有记录、有改进项 |
| 10 | 上线清单 | 逐条打勾,无遗留 |
每一节长什么样
每节都遵循同一结构:先是导入段落说明本节要解决什么问题,然后三到四个小节展开,其中至少有一个能真跑的代码块(L1 逻辑、L2 真连中间件或真起进程、L2J Java 对照、B 基准)。代码块都标了层级与来源文件,正文里也会写明「这段是 L1,go test 可以直接跑」之类的提示。
纯静态或不可复现的部分(K8s 清单、云厂商控制台操作、真实公网 DDoS)会显式标注为 L3 或 L4,并说明为什么本机跑不了,而不是含糊带过。
学完之后你能做什么
- 用机器人压测平台,把「能扛多少人」算成一个可复现的数字;
- 用日志、指标、链路三件套,定位一次线上异常;
- 用配置中心与灰度发布,在不重启、不宕机的前提下改线上行为;
- 用 GM 后台与数据修复流程,处理一次玩家投诉并留下审计痕迹;
- 用备份恢复与故障切换,完成一次演练;
- 用跨栈对照矩阵,为团队做出 Go 与 Java 的选型判断。
常见问题速查
| 问题 | 去哪一节 |
|---|
| 在线人数不涨但服务器很慢,怎么定位 | 1.1、2.1 |
| 怎么写一个能压出真实负载的机器人 | 1.2 |
| 单机能扛多少,集群能扛多少 | 1.3、9.2 |
| Go 和 Java 的内存与 GC 到底差多少 | 2.2、10.1 |
| 一个卡顿热点怎么隔离出去 | 2.3 |
| 日志该记哪些字段 | 3.1 |
| 指标怎么打、怎么被 Prometheus 拉到 | 3.2 |
| 一次请求跨了五个服务怎么追 | 3.3 |
| 怎么用容器和清单把服务部署起来 | 4.1 |
| 蓝绿、灰度、滚动到底怎么选 | 4.2 |
| 有状态服务怎么优雅停服 | 4.3 |
| 配置怎么版本化、怎么差量推 | 5.1 |
| 哪些配置能热更,哪些必须重启 | 5.2 |
| 改坏了怎么一键回滚 | 5.3 |
| 埋点指标口径怎么统一 | 6.1 |
| 埋点数据怎么进管道 | 6.2 |
| 留存和付费漏斗怎么算 | 6.3 |
| GM 权限怎么设计、怎么审计 | 7.1 |
| GM 命令怎么做到幂等与可补偿 | 7.2 |
| 玩家投诉数据不对怎么修 | 7.3 |
| 备份策略怎么定、怎么验证 | 8.1 |
| 多活怎么切、切了会不会丢数据 | 8.2 |
| 演练怎么做、复盘怎么开 | 8.3 |
| 上线前到底要检查什么 | 9.3 |
| Go 和 Java 到底选哪个 | 10.1 |
| 和 skynet / pitaya / leaf 比怎么样 | 10.2 |
本卷的代码约定
本卷代码以 Go 为主线,aegis 为贯穿服务端,《晨曦大陆》 为贯穿游戏。每个代码块都标了 // file:(还原路径)、// tier:(可运行层级)与 // verify:(验证命令)。基准块产出数字,遵循「进程隔离、预热到稳定、同机相对量级」三条纪律,不写「快 N 倍」这类绝对话。
怎么用这份索引
- 系统学习:从上面「三条阅读路径」里挑一条,按章节顺序读。
- 抓重点:第 1、3、8 章是运营三条命脉——量得出来、看得清、兜得住。
- 查问题:用「常见问题速查」表定位到节,再点进去。
- 配代码:每节代码块都标了层级与来源文件,L2 的块需要本机中间件容器,地址见上面的「可运行性口径」。
相关阅读
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。