- 论坛徽章:
- 0
|
原帖由 bobozhang 于 2009-9-9 09:55 发表 ![]()
最近在看一些网络游戏的源代码,看到他们都喜欢用一个专门的连接服务器来管理大量的连接,这个服务器把大量(一般都是10左右)客户端的数据转发到内部的其它服务器中去。这些实现有些是用windows的完成端口,有的 ...
我给你解释一下把, 一般如果是基于tcp应用的网络游戏, 这种连接服务器其实可以看作是客户端代理, 一个clientproxy可以代理n个client, 看性能而定。
一般这种clientproxy是多个, 由网络服务的中心服务来负责分配负载均衡。 每个clientproxy跟内部地图或者gameserver之间建立固有的连接。
对于内部服务来说, 他们看到的只有clientproxy, clientproxy 有一个重要作用就是做数据包的安全check, 保证进入游戏服务群组内的消息, 都是正确的。
clientproxy 还可以分担把逻辑server的广播压力。
至于说时延问题, 其实大部分mmorpg类型的游戏, 对时间要求都不是很高, 除非是fps 或者竟速或者强pk类型的, 可能要特殊处理一下。 也就是同时使用tcp and udp两种协议。主要的时延产生在client - clientproxy之间, 而不是内部server之间, (可以用网络通信, 也可以用进程通信, 甚至可以单进程, 多thread)。
[ 本帖最后由 xhl 于 2009-9-9 14:14 编辑 ] |
|