• <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>

            Sheppard Y

            keep thinking keep coding.

            集群實(shí)現(xiàn)細(xì)節(jié)(5)-登陸流程修改

            2016-07-11 日更新 
            此篇博客已經(jīng)遷移到新博客,并做行文檢查和優(yōu)化排版:
            http://blog.clawz.me/2013/12/16/13-game-cluster-design-detail-5/

             



            一、回顧

                之前的登陸流程在這篇里。之前的登陸流程簡(jiǎn)述:

            (1)先檢查是否同服已登陸,是則兩個(gè)鏈接都踢掉,否則進(jìn)入下步;

            (2)判斷是否異服已登陸,是則告訴異服踢老鏈接,隨后踢自己這的新鏈接。否則進(jìn)入下步;

            (3)當(dāng)前服務(wù)器登陸相關(guān)流程走完后,向玩家在線列表匯報(bào)(寫入這個(gè)玩家登陸的服務(wù)器id為我)。這時(shí)的匯報(bào)寫入為redis的CAS操作,為了檢查是否發(fā)生了那篇里介紹的同賬號(hào)瞬間多起登陸事件。CAS操作成功,本服鏈接登陸完成,做后續(xù)操作。否則CAS操作失敗,表示瞬時(shí)登陸的異服同賬號(hào)的另一個(gè)鏈接的登陸流程走的快,已經(jīng)完成整個(gè)流程,包括匯報(bào)進(jìn)在線列表。這時(shí)的處理只用將慢拍的本服鏈接關(guān)閉就行了。

             

            二、存儲(chǔ)架構(gòu)變?yōu)閞edis+mysql后的問(wèn)題

                現(xiàn)在玩家上線時(shí)需要從mysql加載玩家離線數(shù)據(jù)到redis,需要考慮這個(gè)數(shù)據(jù)加載放到上邊登陸流程哪一步里。

                首先數(shù)據(jù)加載有可能會(huì)失敗,如果數(shù)據(jù)加載出問(wèn)題,就不能讓該玩家登陸。

                如果放到(2)(3)之間,就是redis的CAS之前,這樣瞬間同一賬號(hào)多起登陸都有可能開(kāi)始進(jìn)行加載數(shù)據(jù)步驟,而處理的快的那個(gè)客戶端就有可能匯報(bào)登陸完成之后立即玩游戲并更新了自己在redis里的數(shù)據(jù),處理的慢的客戶端還這時(shí)還在將mysql的數(shù)據(jù)往redis的加載,會(huì)覆蓋快的客戶端更新的數(shù)據(jù)。

                如果放到(3)里redis的CAS之后,數(shù)據(jù)加載失敗,就需要回退CAS的操作。

                可見(jiàn)第二種至少可以保證數(shù)據(jù)正確性。這種情況抽象下,就是第一種里沒(méi)有提供事務(wù)操作的回滾(慢客戶端覆蓋數(shù)據(jù)后發(fā)現(xiàn)干了壞事卻不方便回滾自己的破壞)。

                (2)這個(gè)操作當(dāng)時(shí)是為了區(qū)分異服登陸并玩游戲很久了和瞬間多起登陸這兩種情況的。現(xiàn)在想想這兩種情況的處理統(tǒng)一為直接踢掉新舊兩個(gè)鏈接也沒(méi)什么,畢竟瞬時(shí)登陸的情況不多。

             

            三、新流程

                根據(jù)上邊的結(jié)論,新的流程為:

            (1)先檢查是否同服已登陸,是則兩個(gè)鏈接都踢掉,否則進(jìn)入下步;

            (2)向玩家在線列表CAS報(bào)告自己登陸。如果失敗告訴異服踢掉該賬號(hào)老鏈接,自己這邊踢掉該賬號(hào)新鏈接即可。成功則進(jìn)入下步;

            (3)加載數(shù)據(jù),成功就進(jìn)入正常游戲流程。加載失敗,就去在線列表里清掉自己。

            posted on 2013-12-16 10:44 Sheppard Y 閱讀(909) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 設(shè)計(jì)架構(gòu)

            <2014年2月>
            2627282930311
            2345678
            9101112131415
            16171819202122
            2324252627281
            2345678

            導(dǎo)航

            統(tǒng)計(jì)

            留言簿(1)

            隨筆分類(77)

            隨筆檔案(58)

            me

            基友

            同行

            業(yè)界前輩

            最新隨筆

            搜索

            積分與排名

            最新評(píng)論

            閱讀排行榜

            久久人人爽人人爽人人片AV东京热| 久久精品亚洲男人的天堂| 97r久久精品国产99国产精| 亚洲伊人久久大香线蕉苏妲己| 欧美精品丝袜久久久中文字幕| 伊人久久大香线蕉亚洲五月天| 久久综合狠狠色综合伊人| 伊人久久大香线焦AV综合影院| 国内精品久久久久久不卡影院| 亚洲AV无码久久寂寞少妇| 久久精品国产亚洲AV不卡| 麻豆国内精品久久久久久| 久久青青草原亚洲av无码app| 国产精品欧美久久久久无广告| 亚洲午夜久久久久久噜噜噜| 青青青青久久精品国产h| 久久精品无码专区免费青青| 午夜精品久久久久| 日本久久中文字幕| 99久久综合狠狠综合久久| 久久99国产综合精品| 人妻精品久久无码专区精东影业| 99久久香蕉国产线看观香| 久久精品无码一区二区三区免费| 久久国产精品一区二区| 久久国产色AV免费看| 久久综合狠狠综合久久| 久久久久久国产精品美女| 欧美日韩精品久久久久| 亚洲精品tv久久久久| 亚洲伊人久久成综合人影院 | 久久青青草原国产精品免费 | 久久中文字幕精品| 99精品国产免费久久久久久下载| 久久综合偷偷噜噜噜色| 久久精品国产亚洲AV香蕉| 精品久久久久久久国产潘金莲| 伊色综合久久之综合久久| 久久久久久精品免费看SSS| 国产偷久久久精品专区 | 久久久亚洲裙底偷窥综合|