青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 311, comments - 0, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
關于登錄服、大區服及游戲世界服的結構之前已做過探討,這里再把各自的職責和關系列一下。


        GateWay/WorldServer   GateWay/WodlServer  LoginServer LoginServer DNSServer WorldServerMgr
                               |                     |                     |                 |            |
      ---------------------------------------------------------------------------------------------
                                             |  |  |
                                             internet
                                                |
                                              clients

    其中DNSServer負責帶負載均衡的域名解析服務,返回LoginServer的IP地址給客戶端。WorldServerMgr維護當前大區內的世界服列表,LoginServer會從這里取世界列表發給客戶端。LoginServer處理玩家的登錄及世界服選擇請求。GateWay/WorldServer為各個獨立的世界服或者通過網關連接到后面的世界服。

    在mangos的代碼中,我們注意到登錄服是從數據庫中取的世界列表,而在wow官方服務器中,我們卻會注意到,這個世界服列表并不是一開始就固定,而是動態生成的。當每周一次的維護完成之后,我們可以很明顯的看到這個列表生成的過程。剛開始時,世界列表是空的,慢慢的,世界服會一個個加入進來,而這里如果有世界服當機,他會顯示為離線,不會從列表中刪除。但是當下一次服務器再維護后,所有的世界服都不存在了,全部重新開始添加。

    從上面的過程描述中,我們很容易想到利用一個臨時的列表來保存世界服信息,這也是我們增加WorldServerMgr服務器的目的所在。GateWay/WorldServer在啟動時會自動向WorldServerMgr注冊自己,這樣就把自己所代表的游戲世界添加到世界列表中了。類似的,如果DNSServer也可以讓LoginServer自己去注冊,這樣在臨時LoginServer時就不需要去改動DNSServer的配置文件了。

    WorldServerMgr內部的實現很簡單,監聽一個固定的端口,接受來自WorldServer的主動連接,并檢測其狀態。這里可以用一個心跳包來實現其狀態的檢測,如果WorldServer的連接斷開或者在規定時間內未收到心跳包,則將其狀態更新為離線。另外WorldServerMgr還處理來自LoginServer的列表請求。由于世界列表并不常變化,所以LoginServer沒有必要每次發送世界列表時都到WorldServerMgr上去取,LoginServer完全可以自己維護一個列表,當WorldServerMgr上的列表發生變化時,WorldServerMgr會主動通知所有的LoginServer也更新一下自己的列表。這個或許就可以用前面描述過的事件方式,或者就是觀察者模式了。

    WorldServerMgr實現所要考慮的內容就這些,我們再來看看LoginServer,這才是我們今天要重點討論的對象。

    前面探討一些服務器公共組件,那我們這里也應該試用一下,不能只是停留在理論上。先從狀態機開始,前面也說過了,登錄服上的連接會有兩種狀態,一是帳號密碼驗證狀態,一是服務器列表選擇狀態,其實還有另外一個狀態我們未曾討論過,因為它與我們的登錄過程并無多大關系,這就是升級包發送狀態。三個狀態的轉換流程大致為:

        LogonState -- 驗證成功 -- 版本檢查 -- 版本低于最新值 -- 轉到UpdateState
                                          |
                                           -- 版本等于最新值 -- 轉到WorldState

    這個版本檢查的和決定下一個狀態的過程是在LogonState中進行的,下一個狀態的選擇是由當前狀態來決定。密碼驗證的過程使用了SRP6協議,具體過程就不多做描述,每個游戲使用的方式也都不大一樣。而版本檢查的過程就更無值得探討的東西,一個if-else即可。

    升級狀態其實就是文件傳輸過程,文件發送完畢后通知客戶端開始執行升級文件并關閉連接。世界選擇狀態則提供了一個列表給客戶端,其中包括了所有游戲世界網關服務器的IP、PORT和當前負載情況。如果客戶端一直連接著,則該狀態會以每5秒一次的頻率不停刷新列表給客戶端,當然是否值得這樣做還是有待商榷。

    整個過程似乎都沒有值得探討的內容,但是,還沒有完。當客戶端選擇了一個世界之后該怎么辦?wow的做法是,當客戶端選擇一個游戲世界時,客戶端會主動去連接該世界服的IP和PORT,然后進入這個游戲世界。與此同時,與登錄服的連接還沒有斷開,直到客戶端確實連接上了選定的世界服并且走完了排隊過程為止。這是一個很必要的設計,保證了我們在因意外情況連接不上世界服或者發現世界服正在排隊而想換另外一個試試時不會需要重新進行密碼驗證。

    但是我們所要關注的還不是這些,而是客戶端去連接游戲世界的網關服時服務器該如何識別我們。打個比方,有個不自覺的玩家不遵守游戲規則,沒有去驗證帳號密碼就直接跑去連接世界服了,就如同一個不自覺的乘客沒有換登機牌就直接跑到登機口一樣。這時,乘務員會客氣地告訴你要先換登機牌,那登機牌又從哪來?檢票口換的,人家會先驗明你的身份,確認后才會發給你登機牌。一樣的處理過程,我們的登錄服在驗明客戶端身份后,也會發給客戶端一個登機牌,這個登機牌還有一個學名,叫做session key。

    客戶端拿著這個session key去世界服網關處就可正確登錄了嗎?似乎還是有個疑問,他怎么知道我這個key是不是造假的?沒辦法,中國的假貨太多,我們不得不到處都考慮假貨的問題。方法很簡單,去找給他登機牌的那個檢票員問一下,這張牌是不是他發的不就得了。可是,那么多的LoginServer,要一個個問下來,這效率也太低了,后面排的長隊一定會開始叫喚了。那么,LoginServer將這個key存到數據庫中,讓網關服自己去數據庫驗證?似乎也是個可行的方案。

    如果覺得這樣給數據庫帶來了太大的壓力的話,也可以考慮類似WorldServerMgr的做法,用一個臨時的列表來保存,甚至可以將這個列表就保存到WorldServerMgr上,他正好是全區唯一的。這兩種方案的本質并無差別,只是看你愿意將負載放在哪里。而不管在哪里,這個查詢的壓力都是有點大的,想想,全區所有玩家呢。所以,我們也可以試著考慮一種新的方案,一種不需要去全區唯一一個入口查詢的方案。

    那我們將這些session key分開存儲不就得了。一個可行的方案是,讓任意時刻只有一個地方保存一個客戶端的session key,這個地方可能是客戶端當前正連接著的服務器,也可以是它正要去連接的服務器。讓我們來詳細描述一下這個過程,客戶端在LoginServer上驗證通過時,LoginServer為其生成了本次會話的session key,但只是保存在當前的LoginServer上,不會存數據庫,也不會發送給WorldServerMgr。如果客戶端這時想要去某個游戲世界,那么他必須先通知當前連接的LoginServer要去的服務器地址,LoginServer將session key安全轉移給目標服務器,轉移的意思是要確保目標服務器收到了session key,本地保存的要刪除掉。轉移成功后LoginServer通知客戶端再去連接目標服務器,這時目標服務器在驗證session key合法性的時候就不需要去別處查詢了,只在本地保存的session key列表中查詢即可。

    當然了,為了session key的安全,所有的服務器在收到一個新的session key后都會為其設一個有效期,在有效期過后還沒來認證的,則該session key會被自動刪除。同時,所有服務器上的session key在連接關閉后一定會被刪除,保證一個session key真正只為一次連接會話服務。

    但是,很顯然的,wow并沒有采用這種方案,因為客戶端在選擇世界服時并沒有向服務器發送要求確認的消息。wow中的session key應該是保存在一個類似于WorldServerMgr的地方,或者如mangos一樣,就是保存在了數據庫中。不管是怎樣一種方式,了解了其過程,代碼實現都是比較簡單的,我們就不再贅述了。
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美一区二区高清| 欧美午夜www高清视频| 久久狠狠婷婷| 一区二区三区国产在线| 欧美一区激情| 亚洲香蕉在线观看| 久久久91精品国产| 欧美一区二区三区视频在线| 久久www成人_看片免费不卡| 欧美在线看片a免费观看| 久久午夜精品| 欧美中文字幕视频| 国产一区99| 1769国内精品视频在线播放| 伊人久久综合97精品| 亚洲精华国产欧美| 亚洲欧美日本在线| 久久久久国产一区二区| 欧美黄色小视频| 99精品欧美一区二区三区综合在线| av成人激情| 久久久久久婷| 国产精品久久久久影院亚瑟| 国内精品久久久久伊人av| 一二三区精品| 裸体丰满少妇做受久久99精品 | 欧美激情一区二区久久久| 欧美日韩美女| 在线观看欧美日韩国产| 亚洲一区久久久| 欧美freesex8一10精品| 一本色道久久综合| 毛片基地黄久久久久久天堂| 国产精品视频999| 性久久久久久| 国产精品久久久久久久久动漫| 在线日韩av永久免费观看| 在线观看日韩av| 亚洲人成人99网站| 久久黄金**| 亚洲激情网站| 国产亚洲成精品久久| 国产精品丝袜久久久久久app| 今天的高清视频免费播放成人 | 美女福利精品视频| 亚洲精品一区二区三区婷婷月| 9l国产精品久久久久麻豆| 久久久久国产一区二区三区四区| 欧美成人综合| 精品成人乱色一区二区| 午夜视频在线观看一区二区三区| 亚洲激情av在线| 免费日韩成人| 黄色成人91| 久久色在线播放| 欧美在线地址| 国产在线观看精品一区二区三区 | 国产一区999| 欧美一乱一性一交一视频| 91久久久国产精品| 欧美顶级少妇做爰| 亚洲精品乱码| 亚洲欧洲日本mm| 欧美日韩国产一区| 亚洲婷婷综合久久一本伊一区| 亚洲精品乱码| 欧美日韩国产免费观看| 一区二区激情小说| 一个色综合av| 国产欧美一区二区三区沐欲| 久久www免费人成看片高清| 午夜精品免费视频| 国产主播在线一区| 国产精品伦一区| 亚洲免费网址| 欧美专区18| 亚洲国产精品悠悠久久琪琪| 欧美激情片在线观看| 欧美精品成人一区二区在线观看| 亚洲伦理精品| 亚洲中字黄色| 亚洲黄色免费| 欧美一区二区三区啪啪| 国产精品国产馆在线真实露脸| 国产精品99久久久久久久vr| 日韩视频免费看| 国产精品欧美一区二区三区奶水| 亚洲欧美日韩精品一区二区| 久久riav二区三区| 亚洲国产美女久久久久| 99视频精品在线| 国产欧美一区二区三区在线看蜜臀| 久久久视频精品| 欧美精品午夜| 性做久久久久久免费观看欧美| 久久九九精品99国产精品| 亚洲欧洲一区| 午夜精品久久久| 亚洲欧洲日夜超级视频| 一区二区欧美日韩| 亚洲第一中文字幕| 亚洲淫片在线视频| 亚洲人成亚洲人成在线观看| 亚洲资源av| 99精品欧美一区| 久久理论片午夜琪琪电影网| 这里只有精品视频在线| 久久免费黄色| 欧美在线电影| 欧美日韩另类综合| 欧美激情按摩| 黑丝一区二区| 亚洲欧美国产制服动漫| 亚洲乱亚洲高清| 免费日韩一区二区| 久久久综合网站| 国产精品高潮呻吟久久av无限| 蜜乳av另类精品一区二区| 国产日本欧美一区二区| 亚洲美女网站| 亚洲破处大片| 噜噜噜久久亚洲精品国产品小说| 欧美一级艳片视频免费观看| 欧美日韩卡一卡二| 亚洲大胆女人| 在线国产欧美| 久久久国产精品一区二区中文| 午夜免费在线观看精品视频| 欧美日本不卡高清| 亚洲激情第一区| 亚洲精品国产欧美| 久久亚洲一区二区| 免费久久99精品国产自在现线| 亚洲黑丝在线| 亚洲国产黄色| 免费成人激情视频| 欧美黄色大片网站| 亚洲激情综合| 欧美国产精品久久| 亚洲人www| 一区二区国产日产| 国产精品第一页第二页第三页| 一本色道精品久久一区二区三区| 日韩午夜av在线| 欧美日韩精品在线视频| 一本色道**综合亚洲精品蜜桃冫| 99精品久久| 国产精品入口麻豆原神| 亚洲欧美电影在线观看| 国产精品99久久久久久久久| 欧美激情精品久久久久久免费印度| 免费成人黄色av| 亚洲精品国产精品国自产观看| 免费不卡中文字幕视频| 欧美激情一级片一区二区| 亚洲日本中文字幕| 欧美日韩在线另类| 亚洲一区二区三区四区中文| 性xx色xx综合久久久xx| 国产亚洲人成a一在线v站| 久久精品国产精品亚洲综合| 欧美v亚洲v综合ⅴ国产v| 亚洲伦理一区| 国产视频一区在线| 久久午夜电影| 日韩一级裸体免费视频| 欧美一区三区二区在线观看| 韩日欧美一区| 最近中文字幕日韩精品| 亚洲国产电影| 欧美日韩精品一二三区| 欧美在线啊v| 亚洲精品一区二区三区樱花| 性欧美xxxx视频在线观看| 一区在线播放视频| 欧美日韩一本到| 久久精品免费观看| 亚洲国产美国国产综合一区二区| 亚洲一区网站| 亚洲国产影院| 国产区精品视频| 欧美日韩国产在线一区| 欧美一区二区三区四区在线| 亚洲人成在线观看网站高清| 欧美在线观看一区| 一本到高清视频免费精品| 国产一区日韩欧美| 欧美色欧美亚洲高清在线视频| 久久久www成人免费精品| 亚洲麻豆av| 亚洲春色另类小说| 久久亚洲欧美| 西西人体一区二区| 在线视频免费在线观看一区二区| 一区在线免费观看| 国产日韩在线看| 国产精品成人一区二区网站软件| 欧美成人在线免费视频| 久久国产综合精品| 亚洲欧美日韩在线不卡|