知识卡片
拒绝把状态留在内存里,反而是实现伸缩性和容错能力的前提
内容
游戏服务器行业的常识是”一切放内存里才能保证低延迟”,但Darkstar反其道而行之:任何存活超过一个任务的数据都必须写入持久化的”数据服务”,绝不允许重要信息只停留在某台机器的内存中。这个看似牺牲性能的决定,恰恰是后续一切能力的地基——正因为数据不绑定在具体某台机器上,任务才能在服务器之间自由迁移实现负载均衡,某台机器宕机时中断的任务才能被当作”未完成的事务”重新调度到别处执行,而不会丢失状态。这提示一个架构设计的反直觉认知:某个看起来是纯粹性能负担的约束,可能正是解锁其他关键能力(可迁移性、可恢复性)必须先接受的代价,判断值不值得,要看它换来了什么,而不是只看它本身的开销。
参考来源
《架构之美》第3章《伸缩性架构设计》