知识卡片

基于运行时行为动态聚合,比设计阶段写死的静态分区更能适应真实负载

专业/工作

内容

传统MMO伸缩性方案是在开发阶段就把世界按地理区域切好、分配给固定服务器(一个村庄配一台机器),这种方式必须在写代码时就预判好哪些区域该放在一起,之后想调整还要改代码。Darkstar选择了另一条路:不预先划分区域,而是持续观察运行时的真实交互模式,动态判断”哪些玩家的互动最频繁”,然后主动把他们的任务迁移到同一台服务器上就近处理,聚合关系可以随游戏实际玩法变化而实时调整。这本质上是”编译期优化”和”运行时优化”的差别——前者针对所有可能的情况做一次固定的预判,后者持续针对当下正在发生的实际情况做调整。遇到需要提前预判使用模式的设计决策时,可以先问一句:这个决策有没有可能推迟到运行时、用实际观测数据来做,而不是在设计时就一次性写死。

参考来源

《架构之美》第3章《伸缩性架构设计》