- 論壇徽章:
- 0
|
原帖由 bobozhang 于 2009-9-9 09:55 發(fā)表 ![]()
最近在看一些網(wǎng)絡游戲的源代碼,看到他們都喜歡用一個專門的連接服務器來管理大量的連接,這個服務器把大量(一般都是10左右)客戶端的數(shù)據(jù)轉(zhuǎn)發(fā)到內(nèi)部的其它服務器中去。這些實現(xiàn)有些是用windows的完成端口,有的 ...
我給你解釋一下把, 一般如果是基于tcp應用的網(wǎng)絡游戲, 這種連接服務器其實可以看作是客戶端代理, 一個clientproxy可以代理n個client, 看性能而定。
一般這種clientproxy是多個, 由網(wǎng)絡服務的中心服務來負責分配負載均衡。 每個clientproxy跟內(nèi)部地圖或者gameserver之間建立固有的連接。
對于內(nèi)部服務來說, 他們看到的只有clientproxy, clientproxy 有一個重要作用就是做數(shù)據(jù)包的安全check, 保證進入游戲服務群組內(nèi)的消息, 都是正確的。
clientproxy 還可以分擔把邏輯server的廣播壓力。
至于說時延問題, 其實大部分mmorpg類型的游戲, 對時間要求都不是很高, 除非是fps 或者竟速或者強pk類型的, 可能要特殊處理一下。 也就是同時使用tcp and udp兩種協(xié)議。主要的時延產(chǎn)生在client - clientproxy之間, 而不是內(nèi)部server之間, (可以用網(wǎng)絡通信, 也可以用進程通信, 甚至可以單進程, 多thread)。
[ 本帖最后由 xhl 于 2009-9-9 14:14 編輯 ] |
|