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

教父的告白
一切都是紙老虎
posts - 82,  comments - 7,  trackbacks - 0

本文作者:sodme
本文出處:http://blog.csdn.net/sodme
聲明:本文可以不經作者同意任意轉載,但任何對本文的引用都須注明作者、出處及此聲明信息。謝謝!!

  要了解此篇文章中引用的本人寫的另一篇文章,請到以下地址:
http://blog.csdn.net/sodme/archive/2004/12/12/213995.aspx
以上的這篇文章是早在去年的時候寫的了,當時正在作休閑平臺,一直在想著如何實現一個可擴充的支持百萬人在線的游戲平臺,后來思路有了,就寫了那篇總結。文章的意思,重點在于闡述一個百萬級在線的系統是如何實施的,倒沒真正認真地考察過QQ游戲到底是不是那樣實現的。

  近日在與業內人士討論時,提到QQ游戲的實現方式并不是我原來所想的那樣,于是,今天又認真抓了一下QQ游戲的包,結果確如這位兄弟所言,QQ 游戲的架構與我當初所設想的那個架構相差確實不小。下面,我重新給出QQ百萬級在線的技術實現方案,并以此展開,談談大型在線系統中的負載均衡機制的設 計。

  從QQ游戲的登錄及游戲過程來看,QQ游戲中,也至少分為三類服務器。它們是:
第一層:登陸/賬號服務器(Login Server),負責驗證用戶身份、向客戶端傳送初始信息,從QQ聊天軟件的封包常識來看,這些初始信息可能包括“會話密鑰”此類的信息,以后客戶端與后續服務器的通信就使用此會話密鑰進行身份驗證和信息加密;
第二層:大廳服務器(估且這么叫吧, Game Hall Server),負責向客戶端傳遞當前游戲中的所有房間信息,這些房間信息包括:各房間的連接IP,PORT,各房間的當前在線人數,房間名稱等等。
第三層:游戲邏輯服務器(Game Logic Server),負責處理房間邏輯及房間內的桌子邏輯。

  從靜態的表述來看,以上的三層結構似乎與我以前寫的那篇文章相比并沒有太大的區別,事實上,重點是它的工作流程,QQ游戲的通信流程與我以前的設想可謂大相徑庭,其設計思想和技術水平確實非常優秀。具體來說,QQ游戲的通信過程是這樣的:

  1.由Client向Login Server發送賬號及密碼等登錄消息,Login Server根據校驗結果返回相應信息。可以設想的是,如果Login Server通過了Client的驗證,那么它會通知其它Game Hall Server或將通過驗證的消息以及會話密鑰放在Game Hall Server也可以取到的地方。總之,Login Server與Game Hall Server之間是可以共享這個校驗成功消息的。一旦Client收到了Login Server返回成功校驗的消息后,Login Server會主動斷開與Client的連接,以騰出socket資源。Login Server的IP信息,是存放在QQGame\config\QQSvrInfo.ini里的。

  2.Client收到Login Server的校驗成功等消息后,開始根據事先選定的游戲大廳入口登錄游戲大廳,各個游戲大廳Game Hall Server的IP及Port信息,是存放在QQGame\Dirconfig.ini里的。Game Hall Server收到客戶端Client的登錄消息后,會根據一定的策略決定是否接受Client的登錄,如果當前的Game Hall Server已經到了上限或暫時不能處理當前玩家登錄消息,則由Game Hall Server發消息給Client,以讓Client重定向到另外的Game Hall Server登錄。重定向的IP及端口信息,本地沒有保存,是通過數據包或一定的算法得到的。如果當前的Game Hall Server接受了該玩家的登錄消息后,會向該Client發送房間目錄信息,這些信息的內容我上面已經提到。目錄等消息發送完畢后,Game Hall Server即斷開與Client的連接,以騰出socket資源。在此后的時間里,Client每隔30分鐘會重新連接Game Hall Server并向其索要最新的房間目錄信息及在線人數信息。

  3.Client根據列出的房間列表,選擇某個房間進入游戲。根據我的抓包結果分析,QQ游戲,并不是給每一個游戲房間都分配了一個單獨的端口 進行處理。在QQ游戲里,有很多房間是共用的同一個IP和同一個端口。比如,在斗地主一區,前50個房間,用的都是同一個IP和Port信息。這意味著, 這些房間,在QQ游戲的服務器上,事實上,可能是同一個程序在處理!!!QQ游戲房間的人數上限是400人,不難推算,QQ游戲單個服務器程序的用戶承載 量是2萬,即QQ的一個游戲邏輯服務器程序最多可同時與2萬個玩家保持TCP連接并保證游戲效率和品質,更重要的是,這樣可以為騰訊省多少money 呀!!!哇哦!QQ確實很牛。以2萬的在線數還能保持這么好的游戲品質,確實不容易!QQ游戲的單個服務器程序,管理的不再只是邏輯意義上的單個房間,而 可能是許多邏輯意義上的房間。其實,對于服務器而言,它就是一個大區服務器或大區服務器的一部分,我們可以把它理解為一個龐大的游戲地圖,它實現的也是分 塊處理。而對于每一張桌子上的打牌邏輯,則是有一個統一的處理流程,50個房間的50*100張桌子全由這一個服務器程序進行處理(我不知道QQ游戲的具 體打牌邏輯是如何設計的,我想很有可能也是分區域的,分塊的)。當然,以上這些只是服務器作的事,針對于客戶端而言,客戶端只是在表現上,將一個個房間單 獨羅列了出來,這樣作,是為便于玩家進行游戲以及減少服務器的開銷,把這個大區中的每400人放在一個集合內進行處理(比如聊天信息,“向400人廣播” 和“向2萬人廣播”,這是完全不同的兩個概念)。

  4.需要特別說明的一點。進入QQ游戲房間后,直到點擊某個位置坐下打開另一個程序界面,客戶端的程序,沒有再創建新的socket,而仍然使 用原來大廳房間客戶端跟游戲邏輯服務器交互用的socket。也就是說,這是兩個進程共用的同一個socket!不要小看這一點。如果你在創建桌子客戶端 程序后又新建了一個新的socket與游戲邏輯服務器進行通信,那么由此帶來的玩家進入、退出、逃跑等消息會帶來非常麻煩的數據同步問題,俺在剛開始的時 候就深受其害。而一旦共用了同一個socket后,你如果退出桌子,服務器不涉及釋放socket的問題,所以,這里就少了很多的數據同步問題。關于多個 進程如何共享同一個socket的問題,請去google以下內容:WSADuplicateSocket。

  以上便是我根據最新的QQ游戲抓包結果分析得到的QQ游戲的通信流程,當然,這個流程更多的是客戶端如何與服務器之間交互的,卻沒有涉及到服務器彼此之間是如何通信和作數據同步的。關于服務器之間的通信流程,我們只能基于自己的經驗和猜想,得出以下想法:

  1.Login Server與Game Hall Server之前的通信問題。Login Server是負責用戶驗證的,一旦驗證通過之后,它要設法讓Game Hall Server知道這個消息。它們之前實現信息交流的途徑,我想可能有這樣幾條:a. Login Server將通過驗證的用戶存放到臨時數據庫中;b. Login Server將驗證通過的用戶存放在內存中,當然,這個信息,應該是全局可訪問的,就是說所有QQ的Game Hall Server都可以通過服務器之間的數據包通信去獲得這樣的信息。

  2.Game Hall Server的最新房間目錄信息的取得。這個信息,是全局的,也就是整個游戲中,只保留一個目錄。它的信息來源,可以由底層的房間服務器逐級報上來,報給誰?我認為就如保存的全局登錄列表一樣,它報給保存全局登錄列表的那個服務器或數據庫。

  3.在QQ游戲中,同一類型的游戲,無法打開兩上以上的游戲房間。這個信息的判定,可以根據全局信息來判定。

  以上關于服務器之間如何通信的內容,均屬于個人猜想,QQ到底怎么作的,恐怕只有等大家中的某一位進了騰訊之后才知道了。呵呵。不過,有一點是 可以肯定的,在整個服務器架構中,應該有一個地方是專門保存了全局的登錄玩家列表,只有這樣才能保證玩家不會重復登錄以及進入多個相同類型的房間。

  在前面的描述中,我曾經提到過一個問題:當登錄當前Game Hall Server不成功時,QQ游戲服務器會選擇讓客戶端重定向到另位的服務器去登錄,事實上,QQ聊天服務器和MSN服務器的登錄也是類似的,它也存在登錄重定向問題。

  那么,這就引出了另外的問題,由誰來作這個策略選擇?以及由誰來提供這樣的選擇資源?這樣的處理,便是負責負載均衡的服務器的處理范圍了。由QQ游戲的通信過程分析派生出來的針對負責均衡及百萬級在線系統的更進一步討論,將在下篇文章中繼續。

  在此,特別感謝網友tilly及某位不便透露姓名的網友的討論,是你們讓我決定認真再抓一次包探個究竟。

posted on 2009-09-23 23:43 暗夜教父 閱讀(673) 評論(0)  編輯 收藏 引用 所屬分類: Game Development

<2009年9月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

常用鏈接

留言簿(2)

隨筆分類

隨筆檔案

文章分類

文章檔案

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲人成小说网站色在线| 国产精品久久久久一区二区| 亚洲第一成人在线| 蜜臀va亚洲va欧美va天堂 | 国产精品99久久久久久www| 欧美成人在线免费视频| 免费黄网站欧美| 亚洲激情国产| 亚洲视频网在线直播| 一本色道88久久加勒比精品| 亚洲另类黄色| 欧美一区二区福利在线| 久久久久女教师免费一区| 久久久水蜜桃| 欧美精品在线免费| 欧美午夜视频在线| 国产在线视频不卡二| 亚洲大片一区二区三区| 一本久久a久久精品亚洲| 欧美色另类天堂2015| 欧美色道久久88综合亚洲精品| 国产日韩1区| 亚洲精品看片| 午夜精品久久久久久久白皮肤| 久久综合色播五月| 亚洲精品国久久99热| 欧美一区二区久久久| 欧美激情a∨在线视频播放| 国产乱人伦精品一区二区| 亚洲人屁股眼子交8| 欧美一级成年大片在线观看| 欧美黄污视频| 久久精品国内一区二区三区| 国产精品扒开腿做爽爽爽视频 | 99视频日韩| 久久精品观看| 欧美色综合网| 日韩午夜在线电影| 久色婷婷小香蕉久久| 亚洲一区综合| 欧美午夜宅男影院在线观看| 亚洲国产综合视频在线观看| 久久久久久网| 西西裸体人体做爰大胆久久久| 欧美人与性动交α欧美精品济南到 | 欧美电影在线观看完整版| 亚洲一区在线观看视频| 欧美精品日韩一区| 在线高清一区| 六月天综合网| 欧美资源在线观看| 国产精品影音先锋| 亚洲欧美中文字幕| 在线亚洲欧美| 国产精品大片| 亚洲欧美激情视频| 亚洲天堂网在线观看| 欧美日韩综合在线免费观看| 亚洲美女色禁图| 亚洲国产精品一区二区www在线 | 国产精品国产三级国产aⅴ入口| 亚洲国产欧美一区二区三区同亚洲 | 美女尤物久久精品| 久久精品国产免费观看| 国产一区在线观看视频| 久久精品卡一| 久久精品91| 精品电影在线观看| 久久天天狠狠| 麻豆精品视频| 亚洲国产精品成人| 乱码第一页成人| 女人天堂亚洲aⅴ在线观看| 亚洲欧洲一区二区三区在线观看 | 新狼窝色av性久久久久久| 欧美日韩在线播| 亚洲欧美国产不卡| 午夜精品免费视频| 国产揄拍国内精品对白| 免费成人在线观看视频| 欧美xx69| 亚洲在线视频观看| 性色一区二区| 亚洲国产精品欧美一二99| 亚洲精品美女91| 国产精品日日摸夜夜添夜夜av | 日韩视频免费观看高清在线视频| 亚洲国产婷婷香蕉久久久久久99| 欧美精品偷拍| 欧美一站二站| 欧美成年人视频网站| 亚洲手机视频| 亚洲欧美在线免费观看| 国内一区二区在线视频观看| 欧美成人在线免费视频| 国产精品久久| 男人的天堂亚洲在线| 欧美日韩在线播| 久久亚洲欧洲| 欧美日韩成人激情| 久久精品91久久久久久再现| 欧美寡妇偷汉性猛交| 性色av一区二区怡红| 免费日韩av| 久久精品二区三区| 欧美日韩亚洲一区二区三区四区| 欧美在线一二三区| 欧美插天视频在线播放| 久久精品女人| 欧美视频在线观看一区二区| 欧美ed2k| 狠狠入ady亚洲精品经典电影| 99视频精品全国免费| 亚洲人成人一区二区在线观看| 香蕉乱码成人久久天堂爱免费| 一本久久精品一区二区| 裸体素人女欧美日韩| 久久精品国语| 国产日韩高清一区二区三区在线| 亚洲精选久久| 日韩手机在线导航| 久久久噜噜噜久久| 久久婷婷丁香| 国产日韩在线一区二区三区| 亚洲视频日本| 亚洲欧美综合一区| 国产精品白丝jk黑袜喷水| 亚洲精品久久久久久久久| 精品盗摄一区二区三区| 欧美一区影院| 久久久久久久精| 国产精品尤物福利片在线观看| 日韩一级在线观看| 99国产精品自拍| 欧美精品日韩www.p站| 亚洲国产精品久久精品怡红院| 曰韩精品一区二区| 麻豆成人综合网| 亚洲国产精品成人综合色在线婷婷| 亚洲国产成人精品女人久久久 | 国产麻豆精品久久一二三| 中文av一区二区| 亚洲影院污污.| 国产精品爽黄69| 午夜久久影院| 久久久亚洲国产美女国产盗摄| 国产亚洲激情在线| 欧美一区二区三区视频免费播放| 欧美一区二区高清在线观看| 国产欧美日韩亚洲| 久久精品30| 欧美大秀在线观看| 亚洲精品久久久久久久久久久久| 欧美黄色aa电影| 亚洲视频axxx| 久久手机免费观看| 亚洲精品色图| 欧美精选午夜久久久乱码6080| 99re6热只有精品免费观看| 亚洲欧美在线aaa| 精品69视频一区二区三区| 欧美夫妇交换俱乐部在线观看| 亚洲卡通欧美制服中文| 香蕉av福利精品导航| 国产综合激情| 欧美人交a欧美精品| 亚洲永久免费观看| 久久午夜电影| 一区二区三区欧美在线观看| 国产午夜亚洲精品羞羞网站 | 亚洲色无码播放| 麻豆国产精品777777在线| 亚洲精品一线二线三线无人区| 欧美日韩国产在线观看| 亚洲欧美色一区| 亚洲国产日韩一区| 久久超碰97人人做人人爱| 亚洲国产成人一区| 国产精品夜色7777狼人| 美乳少妇欧美精品| 99精品国产在热久久下载| 久久久久久久综合| 在线一区二区视频| 1204国产成人精品视频| 国产精品久久亚洲7777| 免费试看一区| 久久99伊人| 一区二区精品国产| 欧美成人资源| 欧美在线免费观看| 亚洲视频免费在线| 亚洲福利视频一区| 国产欧美一区二区三区在线老狼| 欧美精品成人| 免费久久99精品国产自在现线| 午夜视频一区| 亚洲女性裸体视频| 亚洲经典三级| 欧美激情第4页| 蜜桃av噜噜一区二区三区|