posts

游戏服务器端专题导航:从 300 篇架构笔记到 Skynet、Pitaya 与工程实战

这是 content/posts/game/server 这棵树的入口导航。它本身不放文章,而是把 300 篇后代内容按三条主线重新编排:170 篇实战工程笔记、20 篇 Skynet 与 Pitaya 框架笔记,以及 2021 年 2 月到 12 月共 110 篇月度架构笔记。每一节都给出子专题 section 入口、覆盖主题与适用场景,帮助后端同学按「框架选型、工程落地、单点问题」三种路径快速定位,而不是在时间线里逐篇翻。

这个目录是「在线游戏服务端」这一主题的总入口。它自己不存放文章,而是作为容器,把 300 篇后代内容按三条主线归拢:一是 170 篇实战工程笔记,覆盖从登录鉴权、房间调度、战斗结算到运维排障的完整链路;二是 20 篇框架笔记,聚焦 Skynet 与 Pitaya 两个 Lua 系服务端框架;三是 2021 年 2 月到 12 月共 110 篇月度架构笔记,每篇都从「一个看似边缘的功能为什么会触到核心状态」讲起。它适合正在做游戏后端的技术负责人、准备从单体服走向分布式的中级工程师,以及需要给团队定架构规范的主程。

使用方式:先看下面的速览确定自己处在哪个阶段,再按「工程实践、框架、月度笔记」三条入口跳转。工程实践适合边做边查,框架适合选型期通读,月度笔记适合按时间顺序补齐对某一类系统(奖励、匹配、背包、活动、同步)的完整认知。所有子专题都在同一棵树内,不涉及跨站跳转。

专题速览

项目内容
本目录直接文章0 篇,纯容器目录
后代文章合计300 篇
子专题数14 个(3 个工程与框架专题 + 11 个月度专题)
时间跨度2021-02 至 2021-12,覆盖长线手游服务端从立项到稳定运营的完整周期
内容形态问题驱动型架构笔记,先讲清一个真实事故或边界,再给数据模型、状态机与取舍
覆盖方向登录与网关、匹配与排队、房间与副本、战斗结算、背包与交易、活动与运营、跨服与合区、观测与排障
适用读者游戏后端工程师、服务端主程、技术负责人,以及从 Web 后端转入游戏行业的同学
阅读方式工程实践按需查,框架专题选型期通读,月度笔记按主题串读
关联技术栈Lua 系框架(Skynet、Pitaya)为主,工程实践部分也覆盖通用分布式与数据层议题
维护方式新增文章只补对应子专题,本页仅维护子专题入口与月度关键词,不逐篇罗列
与其他专题的关系上游是游戏专题总览,下游是 14 个子专题;跨领域的客户端与设计问题请走各自专题
使用提示本页不收录文章正文,若发现链接失效,应回到对应子专题核对 slug 是否变更

工程实践与框架

这一组是「怎么把服务端做出来」的三块地基。实战工程专题体量最大,回答的是真实项目里反复出现的工程问题;Skynet 与 Pitaya 两个专题则分别对应「轻量 Actor 框架」和「面向全球服的分布式框架」两条技术路线,适合在选型或迁移时对照阅读。

子专题规模一句话核心内容
游戏服务器实战工程170 篇从登录、网关、匹配、房间到背包、活动、运维的全链路工程笔记,是这棵树里最厚的一层
Skynet 服务端框架17 篇围绕 Actor 模型、消息调度、服务编排与热更,讲清 Skynet 在长线项目里的用法与边界
Pitaya 分布式框架3 篇面向多区服与全球同服的分布式框架笔记,覆盖路由、会话与集群扩展的基本形态

2021 年月度架构笔记

这 11 个月度专题是同一写作计划的连续产物,每月 10 篇,合计 110 篇。它们不按系统分类,而是按时间推进,读起来像一份「服务端架构问题年表」:从 2 月的奖励与匹配,到 12 月的货币托管与 RPC 预算,几乎每个月都对应一类线上争议的收敛过程。想补齐某个系统的完整视角,可以按月读;想快速定位,用下面的关键词列。

月份专题篇数主题关键词
2021 年 2 月10 篇首胜奖励、伤害统计、表情广播、宠物成长、家园拜访、PVP 隐藏分、职业配额匹配、传送门、UGC 地图、分线切换
2021 年 3 月10 篇拍卖冻结、战斗观测快照、命令回执、跨服排队令牌、活动脚本预算、道具堆叠、改名索引、剧情触发、组队重连、资源刷新调度
2021 年 4 月10 篇防沉迷时长、外观组合、结算校验流水线、人机隔离、跨场景聊天、公会权限、掉落表版本、地图标记订阅、体力时钟、新手检查点
2021 年 5 月10 篇战斗观测采样、跨服报名、坐骑同步、NPC 对话状态、语音令牌、玩家设置同步、奖励预览契约、场景门禁、赛季补发、临时属性快照
2021 年 6 月10 篇权威随机抽取、玩法日历、公会贡献账本、实例暖池、道具绑定、匹配准备共识、在线状态对账、称号读模型、任务事件背压、投降投票
2021 年 7 月10 篇战斗旁路计算、补丁门控、GM 双人审批、库存预占、活动状态审计、队伍跨场景跟随、命令日志压缩、热对象拆分、会话票据续期、对象租约
2021 年 8 月10 篇技能效果流水线、批量领奖、副本进度恢复、好友邀请一致性、通知优先级、排行榜写缓冲、实时指令整形、分片缓存协同、空间事件索引、分区交接
2021 年 9 月10 篇账号变更串行化、回放确定性、输入仲裁、配置灰度护栏、实例调度约束、维护排水、消息乱序缓冲、运营熔断、房间快照归档、状态校验和对账
2021 年 10 月10 篇成就触发聚合、Boss 仇恨表、协作解谜状态机、外观装配校验、网关连接排空、战争迷雾可见性、匹配处罚、制作流水线、配装锁定、世界天气控制面
2021 年 11 月10 篇战场目标计分、客户端能力协商、伙伴指令归属、跨模式成长归一、调试命令沙箱、转服预检、私密房邀请令牌、PVE AI 导演、场景物件持久化、社交隐私
2021 年 12 月10 篇跨分片邮件路由、货币预占托管、实体兴趣订阅、公会战报名锁定、NPC 刷新租约、举报证据流水线、副本锁定存档、RPC 超时预算、赛季商店库存、技能打断

如何选择入口

推荐阅读路径

路径一 技术负责人:先定架构分层与选型

先读工程实践专题里的网关、会话与分布式调度相关篇目,明确长连接、房间进程与数据层各自的责任边界;再对照 Skynet 与 Pitaya 两个框架专题,判断团队应该自研轻量 Actor 框架还是直接采用分布式框架;最后用 2021 年 9 月的实例调度约束、维护排水与运营熔断三篇,把「上线之后怎么安全变更」这件事在设计期就留出接口。

路径二 业务后端:按系统补齐完整视角

如果你正在做奖励、背包或交易,先读 2 月首胜奖励、3 月拍卖冻结、6 月道具绑定与 7 月库存预占,再补 12 月货币预占托管,可以拿到一条从「单次发奖」到「跨系统资产一致」的完整链路;如果你在做匹配与对局,从 2 月职业配额匹配、6 月准备确认、10 月匹配处罚读到 12 月公会战报名锁定,基本覆盖竞技系统的全部争议点。

路径三 排障与运维:从观测到止血

先读 3 月战斗观测快照、9 月房间快照归档与状态校验和对账,理解「事后能不能解释一局」需要哪些事实层;再读 9 月运营熔断开关与 10 月网关连接排空,掌握出事时的止血顺序;最后用 12 月的 RPC 超时预算把跨服务调用的治理口径固定下来。

📚 配套书稿系列

《MMO 服务器开发》四卷本已全部上线(卷一《网络与并发内核》61 篇、卷二《单服架构与玩法系统》55 篇、卷三《分布式与跨服》34 篇、卷四《工程化与运营》30 篇,合计 180 篇):卷一用 Go 从零写出一个 MMO 服务端的网络与并发内核 aegis——分层与职责边界、I/O 模型与 goroutine 调度、协议头与长度前缀、粘包拆包、二进制编解码、从零实现的 KCP 可靠 UDP、WebSocket 长连接与断线重连、会话表与网关、消息路由与扇出、哈希时间轮、Actor 邮箱与背压、请求幂等窗口、状态同步与帧同步、客户端预测与服务端校正、时间同步与延迟补偿、服务器权威与反作弊、协议 fuzz 与封包加密,最后把前 17 章的零件装配成一个能登录、能移动、能广播的最小服务端,并跑出第一组真实承载数字。卷二在同一套底座上把玩法装进去——实体运行时与对象池、场景实例、九宫格与十字链表两种 AOI、服务器权威移动与 A* 寻路、战斗管线与 Buff、掉落表与确定性随机、背包事务、属性成长、任务、聊天、组队、公会、排行榜、邮件、交易拍卖与匹配房间,收于《晨曦大陆》单服可玩与单服承载数字。另有约十个「双栈对照」小节,把同一件事在 Go 与 Java 21 里各实现一遍并实测对比。卷三把单服推成集群——服务发现与 Leader 选举、etcd / NATS / Consul 本机真跑选型、RPC 超时预算与重试熔断背压、网关集群与会话粘性、实例调度与崩溃恢复、跨服报名匹配与结算、雪花算法与号段模式、缓存击穿防护、分库分表与再均衡、跨服务事务补偿,收于跨服战场端到端与集群承载数字。卷四把它交付出去并长期运营好——机器人压测平台与容量规划、帧预算与 pprof 剖析、Go GC 与 JVM GC 双栈实测对照、热区隔离与背压、日志 / 指标 / 链路三件套、容器化编排与蓝绿灰度滚动发布、优雅停服与代次交接、配置版本化与差量分发、热重载边界与回滚、指标口径与埋点管道、GM 权限审计与命令补偿、备份恢复与多活切换、演练复盘,收于《晨曦大陆》可交付形态与跨栈对照矩阵。

进入卷一《网络与并发内核》 · 进入卷二《单服架构与玩法系统》 · 进入卷三《分布式与跨服》 · 进入卷四《工程化与运营》

书稿与专题的分工:书稿是「从零实现 + 每节代码真跑 + 端到端机器人验收」,按章节顺序从头读到尾,回答「怎么做出来、做出来跑多快」;本专题与实战工程是「架构方案与取舍」,按主题查阅,回答「该怎么做、为什么这么选」。两者互补,不重复——想先建立判断力,读本专题;想亲手把地基造一遍,读书稿。

相关专题

全部文章 Golang Game Saas Rust Python Java 游戏开发 客户端开发 GameDev Typescript

游戏服务器运营回滚控制架构设计

问题背景 LiveOps 时代,服务器每天都在变。活动开关、奖励倍率、排行榜分组、商城礼包、关卡掉落、运营脚本都可能在线调整。真正危险的不是变更本身,而是变更缺少控制面:谁改了什么,影响哪些玩家,能不能预演,出错后回滚是否会造成二次发奖。运营回滚控制架构的目标不是阻止变化,而是让变化有轨道、有刹车、有行车记录仪。

13 分钟阅读

游戏服务器消息扇出架构设计

问题背景 消息扇出是一个容易被“顺手实现”的系统。活动开始时运营发全服公告,好友上线要通知在线好友,公会成员完成目标要推送频道,跨服战结果要广播多个区服。若所有业务都直接调用网关广播,短期很快,长期会出现三类问题:网关不知道消息优先级,业务不知道玩家连接在哪,排障时不知道一条消息到底有没有送达。

13 分钟阅读

游戏服务器区域合规架构设计

游戏出海后,服务器架构不再只是延迟和成本问题。不同地区对账号数据、支付、聊天内容、日志保留、未成年人保护和删除请求都有不同要求。如果一开始所有数据都混在一个全球库里,后期做区域合规会非常痛苦。架构设计最怕两个极端:一种是过早复杂化,还没有真实压力就拆出一堆服务;另一种是长期大泥球,所有逻辑都挤在一起,等问题爆发时...

9 分钟阅读

游戏服务器 NPC 群体模拟架构设计

问题背景 当地图里只有几十个怪物时,把 AI 逻辑写在场景循环里没有问题。等地图扩展到多层城镇、野外生态、巡逻守卫、商队、野怪刷新和动态事件,同样的写法会把场景服拖成一台永远满载的机器。更麻烦的是,并不是所有 NPC 都需要同样精度:玩家身边的怪物要高频行为,远处城镇居民只需要低频状态,没人看的区域甚至可以用统计...

13 分钟阅读