View a markdown version of this page

GAMEREL03-BP01监控游戏服务器中断,并使用数据改善托管架构以实现可靠性目标 - 游戏行业镜头

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

GAMEREL03-BP01监控游戏服务器中断,并使用数据改善托管架构以实现可靠性目标

监控游戏服务器指标以及故障或性能下降(例如负载下延迟增加)对玩家行为的影响,以便您可以调整游戏服务器托管策略以满足游戏的可靠性要求。如果要降级的游戏服务器基础设施影响玩家,则应立即将其从服务中删除,或者在服务器上没有活跃的玩家会话时主动更换。

在未建立这种最佳实践的情况下暴露的风险等级:高

实施指导

对于以 REST API 形式托管游戏的场景,可以像传统的 Web 应用程序架构一样管理系统可靠性,在这种架构中,可以以分布式方式在多个服务器之间平衡流量负载,以降低服务器故障的风险。

对于实时同步游戏,游戏会话通常托管在虚拟机或游戏服务器实例上运行的游戏服务器进程上,因为需要以高性能的方式维护游戏状态并复制到连接的游戏客户端。这种实现意味着玩家的体验与托管游戏会话的游戏服务器进程的性能和可靠性紧密相关。这种架构使得管理游戏服务器的可靠性比传统方法更加复杂。

为了减轻游戏服务器故障的影响,请将游戏配置为持续对高度可用的缓存或数据库(如亚马逊 ElastiCache (Redis OSS)或 Amazon MemoryDB 等玩家的游戏状态执行异步更新。如果服务器发生故障,则可以从外部数据存储中获取玩家上次保存的游戏状态,并且可以在新的游戏服务器实例上恢复他们的会话。

但是,这种方法增加了管理这种外部状态的成本和复杂性,并且可能不适用于快节奏或竞争性游戏,在这些游戏中,状态变化非常频繁且规模如此之大,以至于即使引入高性能的内存缓存数据存储也会导致复制延迟,这种延迟太大,无法从中恢复会话。对于这种性质的游戏,最佳方法是接受服务器丢失,将玩家送回游戏大厅寻找另一个会话,或者你可以自动将他们重定向到另一个游戏会话。

尽可能多地捕获有关服务器中断原因的有用日志数据,以便日后可以调查问题。Amazon 为调试队列问题 GameLift 提供指导,并提供远程访问亚马逊 GameLift 队列实例的功能。

实施步骤

  • 监控游戏服务器指标的性能下降情况,并在必要时移除或更换降级服务器以保持可靠性。

  • 使用 Amazon ElastiCache 或 MemoryDB 进行异步游戏状态更新,以便在可行的情况下在服务器出现故障后启用会话恢复。

  • 利用亚马逊等工具进行舰队监控和远程访问,捕获有关服务器中断的详细日志数据 GameLift 以进行调查和调试。