freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

游戲服務(wù)器架構(gòu)-在線瀏覽

2024-10-13 20:02本頁(yè)面
  

【正文】 們將地圖服務(wù)器分開來(lái)原來(lái)也是想將負(fù)載分開,以多帶些客戶端,現(xiàn)在要所有的連接都從中心服上轉(zhuǎn)發(fā),那連接數(shù)又遇到單臺(tái)服務(wù)器的可最大承載量的瓶頸了。我知道,有人一定會(huì)說(shuō),才帶2000人,那是你水平不行,我隨便寫個(gè)TCP服務(wù)器都可帶個(gè)五六千連接。如果一個(gè)演示socket API用的echo服務(wù)器就能滿足MMOG服務(wù)器的需求,那寫服務(wù)器該是件多么愜意的事啊。再回過(guò)頭來(lái)看看我們想要實(shí)現(xiàn)的結(jié)構(gòu),我們既想要有一個(gè)唯一的入口,使得客戶端不用頻繁改變連接,又希望這個(gè)唯一入口的負(fù)載不會(huì)太大,以致于接受不了多少連接。既然如此,那五六千個(gè)連接也還有滿足我們的要求。事實(shí)上,在大多數(shù)游戲的大部分時(shí)間里,這個(gè)數(shù)字也是很讓人眼紅的。你知道大陸現(xiàn)在有多少游戲在運(yùn)營(yíng)嗎?或許你又該說(shuō),我們不該在一開始就把自己的目標(biāo)定的太低!好吧,我們還是先不談這個(gè)。一般來(lái)說(shuō),我們把這臺(tái)負(fù)責(zé)連接管理的服務(wù)器稱為網(wǎng)關(guān)服務(wù)器,因?yàn)閮?nèi)部的數(shù)據(jù)都要通過(guò)這個(gè)網(wǎng)關(guān)才能出去,不過(guò)從這臺(tái)服務(wù)器提供的功能來(lái)看,稱其為反向代理服務(wù)器可能更合適。網(wǎng)關(guān)之后的結(jié)構(gòu)我們依然可以采用之前描述的方案,只是,似乎并沒有必要為每一個(gè)地圖都開一個(gè)獨(dú)立的監(jiān)聽端口了。最后的結(jié)構(gòu)看起來(lái)大概是這樣的:Zone Server Zone ServerMaster Server Master ServerGateway Server Center ServerClient服務(wù)器結(jié)構(gòu)探討最終的結(jié)構(gòu)如果我們就此打住,可能馬上就會(huì)有人要嗤之以鼻了,就這點(diǎn)古董級(jí)的技術(shù)也敢出來(lái)現(xiàn)。一般來(lái)說(shuō),當(dāng)某一部分能力達(dá)不到我們的要求時(shí),最簡(jiǎn)單的解決方法就是在此多投入一點(diǎn)資源。新增加了網(wǎng)關(guān)服后需要在大區(qū)服上做相應(yīng)的支持,或者再簡(jiǎn)單點(diǎn),有一臺(tái)主要的網(wǎng)關(guān)服,當(dāng)其負(fù)載較高時(shí),主動(dòng)將新到達(dá)的連接重定向到其他網(wǎng)關(guān)服上。每個(gè)代表客戶端玩家的對(duì)象內(nèi)部都保留一個(gè)代表其連接的對(duì)象,消息廣播時(shí)要求每個(gè)玩家對(duì)象使用自己的連接對(duì)象發(fā)送數(shù)據(jù)即可,至于連接是在什么地方,那是完全透明的。既然說(shuō)到了優(yōu)化,我們也稍稍考慮一下現(xiàn)在結(jié)構(gòu)下可能采用的優(yōu)化方案。這其中最消耗系統(tǒng)資源的當(dāng)屬生物的AI處理了,尤其是那些復(fù)雜的尋路算法,所以我們可以考慮把這部分AI邏輯獨(dú)立出來(lái),由一臺(tái)單獨(dú)的AI服務(wù)器來(lái)承擔(dān)。還有聊天處理邏輯,這部分與游戲邏輯沒有任何關(guān)聯(lián),我們也完全可以將其獨(dú)立出來(lái),放到一臺(tái)單獨(dú)的聊天服務(wù)器上去實(shí)現(xiàn)。緩存的數(shù)據(jù)會(huì)定時(shí)的寫入到后臺(tái)數(shù)據(jù)庫(kù)中。好比我們?nèi)タ匆粓?chǎng)晚會(huì),舞臺(tái)上演員們按著預(yù)定的節(jié)目單有序地上演著,但這就是整場(chǎng)晚會(huì)的全部嗎?顯然不止,在幕后還有太多太多的人在忙碌著,甚至在晚會(huì)前和晚會(huì)后都有。在之前描述的部分就如同舞臺(tái)上的演員,是我們能直接看到的,幕后的工作人員我們也來(lái)認(rèn)識(shí)一下。GM可以采用跟普通玩家一樣的拉入方式來(lái)進(jìn)入游戲,當(dāng)然權(quán)限會(huì)比普通玩家高一些,也可以提供一臺(tái)GM服務(wù)器專門用來(lái)處理GM命令,這樣可以有更高的安全性,GM服一般接在中心服務(wù)器上。任何為用戶提供服務(wù)的地方都會(huì)有日志記錄,游戲服務(wù)器當(dāng)然也不例外。至于搜集玩家機(jī)器資料所涉及到的法律問(wèn)題不是我們?cè)摽紤]的。服務(wù)器結(jié)構(gòu)探討一點(diǎn)雜談再?gòu)?qiáng)調(diào)一下,服務(wù)器結(jié)構(gòu)本無(wú)所謂好壞,只有是否適合自己。突然發(fā)現(xiàn)自己一旦羅嗦起來(lái)還真是沒完沒了。首先是服務(wù)器操作系統(tǒng),linux與windows之爭(zhēng)隨處可見,其實(shí)在大多數(shù)情況下這不是我們所能決定的,似乎各大公司也基本都有了自己的傳統(tǒng),如網(wǎng)易的freebsd,騰訊的linux等。決定了OS也就基本上確定了網(wǎng)絡(luò)IO模型,windows上的IOCP和linux下的epool,或者直接使用現(xiàn)有的網(wǎng)絡(luò)框架,如ACE和asio等,其他還有些商業(yè)的網(wǎng)絡(luò)庫(kù)在國(guó)內(nèi)的使用好像沒有見到,不符合中國(guó)國(guó)情嘛。早期選擇UDP的主要原因還是帶寬限制,現(xiàn)在寬帶普通的情況下TCP比UDP多出來(lái)的一點(diǎn)點(diǎn)開銷與開發(fā)的便利性相比已經(jīng)不算什么了。還有消息包格式的定義,這個(gè)曾在云風(fēng)的blog上展開過(guò)激烈的爭(zhēng)論。另外早期有些游戲的包格式定義是以特殊字符作分隔的,這樣一個(gè)好處是其中某個(gè)包出現(xiàn)錯(cuò)誤后我們的游戲還能繼續(xù)。而且,以特殊字符做分隔的消息包定義還加大了一點(diǎn)點(diǎn)網(wǎng)絡(luò)數(shù)據(jù)量。開始學(xué)習(xí)網(wǎng)絡(luò)編程的時(shí)候我犯過(guò)這樣的錯(cuò)誤,以為port的定義為unsigned short,所以想當(dāng)然的認(rèn)為服務(wù)器的最大連接數(shù)為65535,這會(huì)是一個(gè)硬性的限制。在服務(wù)器上port是監(jiān)聽用的,想象這樣一種情況,web server在80端口上監(jiān)聽,當(dāng)一個(gè)連接到來(lái)時(shí),系統(tǒng)會(huì)為這個(gè)連接分配一個(gè)socket句柄,同時(shí)與其在80端口上進(jìn)行通訊;當(dāng)另一個(gè)連接到來(lái)時(shí),服務(wù)器仍然在80端口與之通信,只是分配的socket句柄不一樣。按windows網(wǎng)絡(luò)編程第二版上的說(shuō)法,這個(gè)上限值配置影響。第三篇:百萬(wàn)用戶級(jí)游戲服務(wù)器架構(gòu)設(shè)計(jì)百萬(wàn)用戶級(jí)游戲服務(wù)器架構(gòu)設(shè)計(jì)服務(wù)器結(jié)構(gòu)探討最簡(jiǎn)單的結(jié)構(gòu)所謂服務(wù)器結(jié)構(gòu),也就是如何將服務(wù)器各部分合理地安排,以實(shí)現(xiàn)最初的功能需求。好的結(jié)構(gòu)不是一蹴而就的,而且每個(gè)設(shè)計(jì)者心中的那把尺都不相同,所以這個(gè)優(yōu)秀結(jié)構(gòu)的定義也就沒有定論。對(duì)于一個(gè)最簡(jiǎn)單的游戲服務(wù)器來(lái)說(shuō),它只需要能夠接受來(lái)自客戶端的連接請(qǐng)求,然后處理客戶端在游戲世界中的移動(dòng)及交互,也即游戲邏輯處理即可。一般來(lái)說(shuō),我們?cè)诮尤胗螒蚍?wù)器的時(shí)候都會(huì)要提供一個(gè)帳號(hào)和密碼,驗(yàn)證通過(guò)后才能進(jìn)入。但不管是采用何種方式進(jìn)入,照目前看來(lái)我們的服務(wù)器起碼得提供一個(gè)帳號(hào)驗(yàn)證的功能。在大多數(shù)情況下,一個(gè)大區(qū)內(nèi)都會(huì)有多組游戲服,也就是多個(gè)游戲世界可供選擇。這樣,我們可為每組服務(wù)器單獨(dú)配備一臺(tái)登錄服。但是,如果玩家想要切換游戲世界,他只能先退出當(dāng)前游戲世界,然后進(jìn)入新的游戲世界重新進(jìn)行帳號(hào)驗(yàn)證。該結(jié)構(gòu)存在一個(gè)服務(wù)器資源配置的問(wèn)題。這樣處理短連接的過(guò)程使得系統(tǒng)在大多數(shù)情況下都是比較空閑的,但是在某些時(shí)候,由于請(qǐng)求比較密集,比如開新服的時(shí)候,登錄服的負(fù)載又會(huì)比較大,甚至?xí)幚聿贿^(guò)來(lái)。所以,我們能否更合理地配置登錄服資源,使得整個(gè)大區(qū)內(nèi)的登錄服可以共享就成了下一步改進(jìn)的目標(biāo)。這種結(jié)構(gòu)也就使得登錄服不是固定配備給個(gè)游戲世界,而是全區(qū)共有的。正如我們之前所描述過(guò)的那樣,登錄服在大多數(shù)情況下都是比較空閑的,也許我們的一個(gè)擁有20個(gè)游戲世界的大區(qū)僅僅使用10臺(tái)或更少的登錄服即可滿足需求。所以,登錄服在設(shè)計(jì)上應(yīng)該能滿足這種動(dòng)態(tài)增刪的需求,我們可以在任何時(shí)候?yàn)榇髤^(qū)增加或減少登錄服的部署。還是拿開新區(qū)的情況來(lái)說(shuō),即使新增加登錄服滿足了玩家登錄的請(qǐng)求,游戲世界服的承載能力依然有限,玩家一樣只能在排隊(duì)系統(tǒng)中等待,或者是進(jìn)入到游戲世界中導(dǎo)致大家都卡。最后,有關(guān)數(shù)據(jù)持久化的問(wèn)題也在這里考慮一下。我們需要持久化的數(shù)據(jù)有玩家的帳號(hào)及密碼,玩家創(chuàng)建的角色相關(guān)信息,另外還有一些游戲世界全局共有數(shù)據(jù)也需要持久化。對(duì)于負(fù)載均衡來(lái)說(shuō),已有了成熟的解決方案。最新的DNS服務(wù)已實(shí)現(xiàn)了根據(jù)服務(wù)器系統(tǒng)狀態(tài)來(lái)實(shí)現(xiàn)的動(dòng)態(tài)負(fù)載均衡,也就是實(shí)現(xiàn)了真正意義上的負(fù)載均衡,這樣也就有效地解決了當(dāng)某臺(tái)登錄服當(dāng)機(jī)后,DNS服務(wù)器不能立即做出反應(yīng)的問(wèn)題。而且,通過(guò)DNS來(lái)實(shí)現(xiàn)的負(fù)載均衡已經(jīng)包含了所做的修改對(duì)登錄服及客戶端的透明。從數(shù)據(jù)庫(kù)服務(wù)器的部署上來(lái)說(shuō),可以將帳號(hào)和角色數(shù)據(jù)都放在一個(gè)中心數(shù)據(jù)庫(kù)中,也可分為兩個(gè)不同的庫(kù)分別來(lái)處理,基到從物理上分到兩臺(tái)不同的服務(wù)器上去也行。所以,整體的服務(wù)器結(jié)構(gòu)應(yīng)該是一個(gè)大區(qū)有一臺(tái)帳號(hào)數(shù)據(jù)庫(kù)服務(wù)器,所有的登錄服都連接到這里。最后,我們的服務(wù)器結(jié)構(gòu)就像這樣:大區(qū)服務(wù)器/|/|登錄服1登錄服2世界服1世界服2||||||帳號(hào)數(shù)據(jù)庫(kù)DBSDBS這里既然討論到了大區(qū)及帳號(hào)數(shù)據(jù)庫(kù),所以順帶也說(shuō)一下關(guān)于激活大區(qū)的概念。比如我們?cè)诠倬W(wǎng)上注冊(cè)了一個(gè)帳號(hào),這時(shí)帳號(hào)數(shù)據(jù)是只保存在中心數(shù)據(jù)庫(kù)上的。這個(gè)激活的過(guò)程也就是從中心庫(kù)上把我們的帳號(hào)數(shù)據(jù)拷貝到所要到的大區(qū)帳號(hào)數(shù)據(jù)庫(kù)中。對(duì)于現(xiàn)在大多數(shù)MMORPG來(lái)說(shuō),游戲服務(wù)器要處理的基本邏輯有移動(dòng)、聊天、技能、物品、任務(wù)和生物等,另外還有地圖管理與消息廣播來(lái)對(duì)其他高級(jí)功能做支撐。在所有這些基礎(chǔ)邏輯中,與我們要討論的服務(wù)器結(jié)構(gòu)關(guān)系最緊密的當(dāng)屬地圖管理方式。回想一下我們?cè)鴳?zhàn)斗過(guò)無(wú)數(shù)個(gè)夜晚的暗黑破壞神,整個(gè)暗黑的世界被分為了若干個(gè)獨(dú)立的小地圖,當(dāng)我們?cè)诘貓D間穿越時(shí),一般都要經(jīng)過(guò)一個(gè)叫做傳送門的裝置??梢赃@樣認(rèn)為,一塊地圖就是一個(gè)獨(dú)立的數(shù)據(jù)處理單元。當(dāng)兩個(gè)人合作做一件事時(shí),我們可以以對(duì)等的關(guān)系相互協(xié)商著來(lái)做,而且一般也都不會(huì)有什么問(wèn)題。正如俗語(yǔ)所說(shuō)的那樣,三個(gè)和尚可能會(huì)碰到?jīng)]水喝的情況。游戲的地圖服務(wù)器之間也是這么回事。先稱它為游戲世界的中心服務(wù)器吧,畢竟是管理者嘛,大家都以它為中心。當(dāng)我們要進(jìn)入某張地圖時(shí),會(huì)從中心服上取得該地圖的IP和port告訴客戶端,客戶端主動(dòng)去連接,這樣進(jìn)入他想要去的游戲地圖。我們來(lái)看看結(jié)構(gòu)圖是怎樣的:中心服務(wù)器/ / 登錄服 地圖1 地圖2 地圖n | / / | / /客戶端很簡(jiǎn)單,不是嗎。早期不少游戲也確實(shí)采用的就是這種簡(jiǎn)單結(jié)構(gòu)??蛻舳酥恍枰B接到中心服上,所有到地圖服務(wù)器的數(shù)據(jù)都由中心服來(lái)轉(zhuǎn)發(fā)。對(duì)于一般的MMORPG服務(wù)器來(lái)說(shuō),單臺(tái)服務(wù)器的承載量平均在2000左右,如果你的服務(wù)器很不幸地只能帶1000人,沒關(guān)系,不少游戲都是如此;如果你的服務(wù)器上跑了3000多玩家依然比較流暢,那你可以自豪地告訴你的策劃,多設(shè)計(jì)些大量消耗服務(wù)器資源的玩法吧,比如大型國(guó)戰(zhàn)、公會(huì)戰(zhàn)爭(zhēng)等。我們將地圖服務(wù)器分開來(lái)原來(lái)也是想將負(fù)載分開,以多帶些客戶端,現(xiàn)在要所有的連接都從中心服上轉(zhuǎn)發(fā),那連接數(shù)又遇到單臺(tái)服務(wù)器的可最大承載量的瓶頸了。我知道,有人一定會(huì)說(shuō),才帶2000人,那是你水平不行,我隨便寫個(gè)TCP服務(wù)器都可帶個(gè)五六千連接。如果一個(gè)演示socket API用的echo服務(wù)器就能滿足MMOG服務(wù)器的需求,那寫服務(wù)器該是件多么愜意的事啊。再回過(guò)頭來(lái)看看我們想要實(shí)現(xiàn)的結(jié)構(gòu),我們既想要有一個(gè)唯一的入口,使得客戶端不用頻繁改變連接,又希望這個(gè)唯一入口的負(fù)載不會(huì)太大,以致于接受不了多少連接。既然如此,那五六千個(gè)連接也還有滿足我們的要求。事實(shí)上,在大多數(shù)游戲的大部分時(shí)間里,這個(gè)數(shù)字也是很讓人眼紅的。你知道大陸現(xiàn)在有多少游戲在運(yùn)營(yíng)嗎?或許你又該說(shuō),我們不該在一開始就把自己的目標(biāo)定的太低!好吧,我們還是先不談這個(gè)。一般來(lái)說(shuō),我們把這臺(tái)負(fù)責(zé)連接管理的服務(wù)器稱為網(wǎng)關(guān)服務(wù)器,因?yàn)閮?nèi)部的數(shù)據(jù)都要通過(guò)這個(gè)網(wǎng)關(guān)才能出去,不過(guò)從這臺(tái)服務(wù)器提供的功能來(lái)看,稱其為反向代理服務(wù)器可能更合適。網(wǎng)關(guān)之后的結(jié)構(gòu)我們依然可以采用之前描述的方案,只是,似乎并沒有必要為每一個(gè)地圖都開一個(gè)獨(dú)立的監(jiān)聽端口了。最后的結(jié)構(gòu)看起來(lái)大概是這樣的:Zone Server Zone Server / / Master Server Master Server / / / / Gateway Server / | / | / | Center Server | | Client服務(wù)器結(jié)構(gòu)探討最終的結(jié)構(gòu)如果我們就此打住,可能馬上就會(huì)有人要嗤之以鼻了,就這點(diǎn)古董級(jí)的技術(shù)也敢出來(lái)現(xiàn)。一般來(lái)說(shuō),當(dāng)某一部分能力達(dá)不到我們的要求時(shí),最簡(jiǎn)單的解決方法就是在此多投入一點(diǎn)資源。新增加了網(wǎng)關(guān)服后需要在大區(qū)服上做相應(yīng)的支持,或者再簡(jiǎn)單點(diǎn),有一臺(tái)主要的網(wǎng)關(guān)服,當(dāng)其負(fù)載較高時(shí),主動(dòng)將新到達(dá)的連接重定向到其他網(wǎng)關(guān)服上。每個(gè)代表客戶端玩家的對(duì)象內(nèi)部都保留一個(gè)代表其連接的對(duì)象,消息廣播時(shí)要求每個(gè)玩家對(duì)象使用自己的連接對(duì)象發(fā)送數(shù)據(jù)即可,至于連接是在什么地方,那是完全透明的。既然說(shuō)到了優(yōu)化,我們也稍稍考慮一下現(xiàn)在結(jié)構(gòu)下可能采用的優(yōu)化方案。這其中最消耗系統(tǒng)資源的當(dāng)屬生物的AI處理了,尤其是那些復(fù)雜的尋路算法,所以我們可以考慮把這部分AI邏輯獨(dú)立出來(lái),由一臺(tái)單獨(dú)的AI服務(wù)器來(lái)承擔(dān)。還有聊天處理邏輯,這部分與游戲邏輯沒有任何關(guān)聯(lián),我們也完全可以將其獨(dú)立出來(lái),放到一臺(tái)單獨(dú)的聊天服務(wù)器上去實(shí)現(xiàn)。緩存的數(shù)據(jù)會(huì)定時(shí)的寫入到后臺(tái)數(shù)據(jù)庫(kù)中。好比我們?nèi)タ匆粓?chǎng)晚會(huì),舞臺(tái)上演員們按著預(yù)定的節(jié)目單有序地上演著,但這就是整場(chǎng)晚會(huì)的全部嗎?顯然不止,在幕后還有太多太多的人在忙碌著,甚至在晚會(huì)前和晚會(huì)后都有。在之前描述的部分就如同舞臺(tái)上的演員,是我們能直接看到的,幕后的工作人員我們也來(lái)認(rèn)識(shí)一下。GM可以采用跟普通玩家一樣的拉入方式來(lái)進(jìn)入游戲,當(dāng)然權(quán)限會(huì)比普通玩家高一些,也可以提供一臺(tái)GM服務(wù)器專門用來(lái)處理GM命令,這樣可以有更高的安全性,GM服一般接在中心服務(wù)器上。任何為用戶提供服務(wù)的地方都會(huì)有日志記錄,游戲服務(wù)器當(dāng)然也不例外。至于搜集玩家機(jī)器資料所涉及到的法律問(wèn)題不是我們?cè)摽紤]的。服務(wù)器結(jié)構(gòu)探討一點(diǎn)雜談再?gòu)?qiáng)調(diào)一下,服務(wù)器結(jié)構(gòu)本無(wú)所謂好壞,只有是否適合自己。突然發(fā)現(xiàn)自己一旦羅嗦起來(lái)還真是沒完沒了。首先是服務(wù)器操作系統(tǒng),linux與windows之爭(zhēng)隨處可見,其實(shí)在大多數(shù)情況下這不是我們所能決定的,似乎各大公司也基本都有了自己的傳統(tǒng),如網(wǎng)易的freebsd,騰訊的linux等。決定了OS也就基本上確定了網(wǎng)絡(luò)IO模型,windows上的IOCP和linux下的epool,或者直接使用現(xiàn)有的網(wǎng)絡(luò)框架,如ACE和asio等,其他還有些商業(yè)的網(wǎng)絡(luò)庫(kù)在國(guó)內(nèi)的使用好像沒有見到,不符合中國(guó)國(guó)情嘛。早期選擇UDP的主要原因還是帶寬限制,現(xiàn)在寬帶普通的情況下TCP比UDP多出來(lái)的一點(diǎn)點(diǎn)開銷與開發(fā)的便利性相比已經(jīng)不算什么了。還有消息包格式的定義,這個(gè)曾在云風(fēng)的blog上展開過(guò)激烈的爭(zhēng)論。另外早期有些游戲的包格式定義是以特殊字符作分隔的,這樣一個(gè)好處是其中某個(gè)包出現(xiàn)錯(cuò)誤后我們的游戲還能繼續(xù)。而且,以特殊字符做分隔的消息包定義還加大了一點(diǎn)點(diǎn)網(wǎng)絡(luò)數(shù)據(jù)量。開始學(xué)習(xí)網(wǎng)絡(luò)編程的時(shí)候我犯過(guò)這樣的錯(cuò)誤,以為port的定義為unsigned short,所以想當(dāng)然的認(rèn)為服務(wù)器的最大連接數(shù)為65535,這會(huì)是一個(gè)硬性的限制。在服務(wù)器上port是監(jiān)聽用的,想象這樣一種情況,web server在80端口上監(jiān)聽,當(dāng)一個(gè)連接到來(lái)時(shí),系統(tǒng)會(huì)為這個(gè)連接分配一個(gè)socket句柄,同時(shí)與其在80端口上進(jìn)行通訊;當(dāng)另一個(gè)連接到來(lái)時(shí),服務(wù)器仍然在80端口與之通信,只是分配的socket句柄不一樣。按windows網(wǎng)絡(luò)編程第二版上的說(shuō)法,這個(gè)上限值配置影響。登錄服的設(shè)計(jì)功能需求
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1