导语:一般的网站应用程序采用的模式是Request-Response,然后通过tcp和服务器建立一次链接,请求的数据是通过http协议进行重新组装,服务器端和客户端完成一次交互之后,就会释放tcp链接,新的客户端就可以使用服务器端的socket资源。web程序的扩展相对来说比价容易,在行业中,比较常用的方法是硬件负载均衡和添加web服务器。
网络游戏就不一样了,它比较突出的一点是客户端和服务器端要进行比较长时间的连接,几乎是不间断的。游戏服务器的原理是Client主动给Server发送数据,Server也可能主动往Client发送数据,每次发送的数据比较少,但是频率比较高,和常见的Request-Response模式不同。
因为需要长时间的连接,所以服务器端的socket是不能重复使用的,单台服务器处理请求是会有限。也不太适合使用web的方案解决扩展问题,因为在web程序中,客户端是没有数据交互的,数据都是通过web服务器响应给客户端的,但是游戏服务器中,每个客户端的数据都在时刻的变化,这些都需要通过服务器端广播给其他客户端。所以客户端会有上限,这也就是为什么服务器要进行分区,一个区里面同时在线人数会有限制。