知識庫
讓無數(shù)中國玩家為之矚目的“魔獸世界”,隨著一系列內(nèi)測前期工作的逐步展開,正在一步步地走近中國玩家,但是,“魔獸”的服務(wù)器,卻著實讓我們?yōu)樗罅艘话押埂?a href="http://www.xcwl17.com/news/idc-baike/744.html" target="_blank">搭建網(wǎng)游服務(wù)器的選擇一直多是一項艱巨而富有挑戰(zhàn)的項目。
不宕機服務(wù)器測試:http://www.xcwl17.com/solutions/game.html
造成一個網(wǎng)游服務(wù)器當機的原因有很多,但主要有以下兩種:一,服務(wù)器在線人數(shù)達到上限,服務(wù)器處理效率嚴重遲緩,造成當機;二,由于外掛或其它游戲作弊 工具導(dǎo)致的非正常數(shù)據(jù)包的出錯,導(dǎo)致游戲服務(wù)器邏輯出現(xiàn)混亂,從而造成當機。在這里,我主要想說說后者如何盡可能地避免。
要避免以上 所說到的第二種情況,我們就應(yīng)該遵循一個基本原則:在網(wǎng)游服務(wù)器的設(shè)計中,對于具有較強邏輯關(guān)系的處理單元,服務(wù)器端和客戶端應(yīng)該采用“互不信任原則”, 即:服務(wù)器端即使收到了客戶端的數(shù)據(jù)包,也并不是立刻就認為客戶端已經(jīng)達到了某種功能或者狀態(tài),客戶端到達是否達到了某種功能或者狀態(tài),還必須依靠服務(wù)器 端上記載的該客戶端“以往狀態(tài)”來判定。
也就是說:服務(wù)器端的邏輯執(zhí)行并不單純地以“當前”的這一個客戶端封包來進行,它還應(yīng)該廣泛參考當前封包的上下文 環(huán)境,對執(zhí)行的邏輯作出更進一步地判定,同時,在單個封包的處理上,服務(wù)器端應(yīng)該廣泛考慮當前客戶端封包所需要的“前置”封包,如果沒有收到該客戶端應(yīng)該 發(fā)過來的“前置”封包,則當前的封包應(yīng)該不進行處理或進行異常處理(如果想要性能高,則可以直接忽略該封包;如果想讓服務(wù)器穩(wěn)定,可以進行不同的異常處 理)。
之所以采用“互不信任”原則設(shè)計網(wǎng)游服務(wù)器,一個很重要的考慮是:防外掛。對于一個網(wǎng)絡(luò)服務(wù)器(不僅僅是游戲服務(wù)器,泛指所有 服務(wù)器)而言,它所面對的對象既有屬于自己系統(tǒng)內(nèi)的合法的網(wǎng)絡(luò)客戶端,也有不屬于自己系統(tǒng)內(nèi)的非法客戶端訪問。所以,我們在考慮服務(wù)器向外開放的接口時, 就要同時考慮這兩種情況:合法客戶端訪問時的邏輯走向以及非法客戶端訪問時的邏輯走向。
即:你服務(wù)器端不要我客戶端發(fā)什么你就信什么,你還得進行一系列的邏輯驗證,以判定我當 前執(zhí)行的操作是不是合法的。這樣,服務(wù)器端可以通過以下邏輯執(zhí)行驗證功能:只有當客戶端的用戶名和密碼通過驗證后,該客戶端才會進入在線玩家列表 中。而只有在線玩家列表中的成員,才可以在登陸服務(wù)器的引導(dǎo)下進入各分組服務(wù)器。
當然,安全性和效率總是相互對立的。為了實現(xiàn)我們所說的“互不信任”原則,難免的,就會在游戲邏輯中加入很多的異常檢測機制,但異常檢測又是比較耗時 的,這就需要我們在效率和安全性方面作個取舍,對于特別重要的邏輯,我們應(yīng)該全面貫徹“互不信任”原則,一步扣一步,步步為營,不讓游戲邏輯出現(xiàn)一點漏 洞。而對于并非十分重要的場合,則完全可以采用“半信任”或者根本“不須信任”的原則進行設(shè)計,以盡可能地提高服務(wù)器效率。
1、服務(wù)器CPU的挑選
網(wǎng)頁游戲服務(wù)器每天接受至少幾百、至多上千萬的訪問量,對CPU的快速吞吐量、穩(wěn)定性、長時間運行都有著嚴格的要求,因而服務(wù)器CPU是衡量服務(wù)器性能的首要指標。目前市面上對網(wǎng)頁游戲服務(wù)器CPU已經(jīng)達到八核16線程,CPU已經(jīng)不再是網(wǎng)頁游戲服務(wù)器選型的瓶頸所在。客戶需求 :需要高速計算,低配機器無法承載解決方案 :高配物理服務(wù)器,用戶獨享硬件資源
2、磁盤I/O能力
針對于網(wǎng)頁游戲邏輯服務(wù)器以及GameDB的小數(shù)據(jù)塊對磁盤隨機I/O能力有著較高的要求,是游戲架構(gòu)與設(shè)計中需要重點考慮的環(huán)節(jié)。網(wǎng)頁游戲服務(wù)器商通常會選擇隨時讀寫速率高、故障率低的SATA、SAS硬盤作為服務(wù)器的標準配置。值得注意的是:傳統(tǒng)高速SAS硬盤在面對大量小圖片元素時,磁盤I/O還是吃力,但SSD固態(tài)硬盤技術(shù)可以有效解決此類問題。壹互聯(lián)數(shù)據(jù)香港網(wǎng)游服務(wù)器租用都是采用SATA硬盤,讀寫速度高且穩(wěn)定。
3、機房帶寬以及服務(wù)器帶寬
網(wǎng)頁游戲有著一定的時間性,需要保存足夠大的帶寬來應(yīng)對突發(fā)傳輸速率,在游戲玩家訪問的高峰期保證玩家的用戶的用戶體驗。在機房帶寬直接連接國家骨干網(wǎng)的訪問速度國內(nèi)高防服務(wù)器會更快。
4、Ping值,線路穩(wěn)定
對于游戲玩家來說,服務(wù)器對請求的響應(yīng)和流暢度至關(guān)重要。如果延遲過長,就會影響用戶體驗度。香港機房通過海底光纜直連中國網(wǎng)絡(luò),采用CN2作為主要傳輸路線,并針對中國大陸網(wǎng)絡(luò)進行全面優(yōu)化,中國大陸各個地區(qū)訪問延遲平均在180ms。客戶需求 :需要較好的網(wǎng)絡(luò),線路不擁堵不掉線解決方案 :11線BGP,智能調(diào)優(yōu),ping值穩(wěn)定。
5、接入支持及接入安全
客戶需求 :海量節(jié)點全覆蓋,保證玩家不流失解決方案 :亞太CDN線路優(yōu)化全球玩家接入;客戶需求 :服務(wù)端對攻擊敏感,保證游戲不停服解決方案 :高防ip+流量遷移清洗保證安全無憂。
總之,在從事網(wǎng)游服務(wù)器的選擇過程中,要始終不移地 堅持一個信念:我們的服務(wù)器,不僅僅有自己的游戲客戶端在訪問,還有其它很多他人寫的游戲客戶端在訪問,所以,我們應(yīng)該確保我們的服務(wù)器是足夠強壯的,任 它風吹雨打也不怕,更不會倒。如果在租用香港網(wǎng)游服務(wù)器