不靠「堆机器」,而是靠一套 流量可控、异常可挡、攻击可防、资源可自适应 的工程体系。
游戏流量是脉冲式洪峰(开服、活动、版本更新瞬间打爆单机)。稳定的本质不是买更多机器,而是把「扛洪峰、控资源、防雪崩、抗攻击、精细调优」做成一套闭环工程体系。
ID / 场景哈希 分片。单服只负责一部分实体,避免「万人同屏」把单节点打爆。MMO 百万并发:靠「无状态网关集群 + 地图/副本分片 + 微服务」三层叠加,把瞬时洪峰分散到成百上千个节点。
棋牌万级房间:房间天然可按 ID 分片,单房间独立进程,一间炸了不影响其他房间。
很多系统缩容是直接 kill 进程,玩家瞬间掉线。游戏不能这么干。正确做法靠信号监听做三件事:
下游(数据库 / 第三方)错误率或超时率过高时,直接断路:不再发请求、不再重试、不再为每个请求起一个 Goroutine 干等。
高峰期主动砍掉非核心功能:日志、排行榜、特效、历史数据,把算力集中保住核心对局、登录、交易。
HTTP 短连接,扛完就走;游戏是长连接,一个恶意连接长期占着 fd(句柄)、占着服务端内存、占着带宽。go func() 是灾难)。所有线上稳定的 Go 游戏服务,全部遵循这套闭环。