遊戲伺服器無條件core掉的啟示

來源:互聯網
上載者:User

      實際運營時,遊戲伺服器可能在任何時候core掉,一般而言,伺服器中的重要資料都會儲存在共用記憶體中,以便伺服器處理序core掉自動重啟時,能儘可能恢複到core掉前的運行狀態。最大限度地減小玩家的不適體驗,理想情況下,當然是不讓玩家感覺到伺服器core了。

      這裡想到的一個問題是:當server core掉時,儲存在共用記憶體的對象若有運行狀態還未結束時,如何在恢複其資料時,繼續按照core掉前的狀態流程繼續運行。例如:技能施法事件的資料存放區在共用記憶體時,一次施法事件一般包括施法準備、施放、效果表現、完成等階段,如果server在施法事件的任意某個中間階段core掉了,如何在server重啟時,讓玩家繼續上次施法而不讓他們感覺到被中斷?

      目前我的解決方案是:在施法事件的每一個階段都記錄其狀態,這個狀態為施法事件對象的一個成員變數。每一個階段對應一個處理函數,這些處理函數的外層再用一個Update()之類的函數封裝一下,其作用是根據當前的狀態,自動調用對應階段的流程處理。這樣,只要在server重啟恢複共用記憶體資料時,只要在施法事件對象的Resum()函數中調用Update()就可以了,即當前儲存在共用記憶體中的施法事件對象一一調用Update()即可繼續core掉前的執行流程了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.