网游服务器应分离实时功能
(金庆的专栏)
网游服务器功能可分成实时性功能和非实时性功能,分在不同的物理机。
实时性功能如移动,战斗,要求立即处理,时延为100ms之内,所以机器不能满载运行,数据尽量在本地。可考虑采用UDP减少时延。
非实时性功能如打造,交友,时延允许100ms以上,可以让机器满载运行,数据可查询获取,性能考虑少,多使用脚本。
非实时性功能因为状态数据少,允许负载转移时的短时停顿,容易做动态负载均衡,甚至可以做成无状态的服务。
实时功能再分为地图无关的功能和地图相关的功能。
地图相关的功能只能在该地图服上处理,不能分负载。
而地图无关的功能可以分成多个服务器处理,如9屏广播分到广播服务器,可以动态增删服务器。
尽量让地图服务器功能单一,处理简单,一台物理机可以处理非常巨大的一张地图。
单机所允许的地图很大,所以没必要对单个地图分区域处理,就不必考虑单个地图上的无缝功能。
跨地图(跨服)不应该有切换的停顿,可处理成带浓雾的小径,小桥之类。用传送点处理是一种简化的方法。
地图之间可能是可以相互看见的,如隔河相望,但没必要进行战斗交互,即只有9屏广播消息跨地图边界。
发个火球到对岸也是可以实现的,只是技术上实现有点复杂,暂时不值得去做。