當前位置:
首頁 > 知識 > 遊戲是如何做到伺服器不停機維護的?

遊戲是如何做到伺服器不停機維護的?

遊戲的定期更新版本已經再尋常不過了,但頻繁的更新會造成流失率非常嚴重,哪個玩家也不希望再BOSS將要躺下那一刻,伺服器停機維護了。在小版本更新過程中,採用不停機維護成為現在遊戲的主流方式,那究竟是如何做到不停機維護的呢?

遊戲是如何做到伺服器不停機維護的?

事實上,大多遊戲伺服器分為邏輯程序伺服器和資料庫伺服器,如果是線上運營的伺服器,基本上是在至少兩台主機上,在發現幾個邏輯伺服器中的bug,或者加了某些功能,比如少加了三個金幣,多算了一點經驗等,只需要在測試服測試完畢,上傳覆蓋執行文件(jar或php),但是依然要重啟邏輯伺服器進程。

而Erlang的熱升級技術,就帶了更好的體驗。Erlang原本脫胎於電信行業,Jow Armstrong 在描述Erlang的設計要求時期中就提到了「軟體維護應該能在不停止系統的情況下進行。」在實踐中,我們也因為這種不停服務的熱更新獲益良多,終於不用再等到半夜沒人的時候再做更新了,對於一些緊急的bug修復,熱更新實在是一把利器。

Erlang熱更新的秘密其實都集中在code模塊,code模塊是Erlang Code Server暴露出來的對外介面其職責就是把已經編譯好的模塊載入到Erlang的運行時環境。

代碼版本有兩個概念 當前版本代碼"current"和老版本代碼"old",一旦模塊被載入就變成"current",再有一個版本過來被載入,之前的版本就變成"old",新載入的變成"current"。這時候,兩個版本還是同時存在,新的請求執行的時候會使用新的版本,而老版本的代碼還會被使用因為還有其他模塊的調用"old"版本中。如果再進行一次熱更新,這時就有第三個實例被載入,code server就會終止掉還在駐留在"old"版本代碼依賴的進程。然後第三個實例成為"current",之前版本的"current"被標記成"old"。

這種方法有效降低了因版本升級而導致的用戶流失。當然,實現不停機更新的技術方法還有很多,歡迎一起交流經驗。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT168企業級 的精彩文章:

一片小碎紙引起的故障,技術員教你如何解決印表機卡紙問題
10大頂級網路監控軟體和可見性工具
常年玩鷹卻被鷹啄了眼 網路安全公司慘遭黑客入侵
乾貨分享:惠普1007印表機開機異響故障處理辦法分享
未來世界 機器可能會幫你做更多決策

TAG:IT168企業級 |

您可能感興趣

不用健身器材,如何徒手鍛煉肩部?從易到難,你能做到哪一步
做機器人很難,他卻做到了全球唯一,如何讓「真有用」進行到底?
機器學習:怎樣才能做到從入門到不放棄?
手機定位是怎麼做到的?
騎摩托車有哪些行為是危險的?如何做到安全駕駛?
睡前玩手機,怎麼做到不傷眼
喝水時最簡單的做法,幫助你防癌保健康,你能做到么?
玩遊戲不卡頓的手機,這兩部可以做到
相信嗎?如果做到這些穿衣細節 可以讓你更有品位!
真事兒!手槍打下飛機,猜猜誰可以做到?
用眼不適?多是手機色溫搞的鬼!自定義色溫,華為手機就能做到!
那些不辦健身卡也有馬甲線的人,是如何做到的
滾筒洗衣機如何清潔?只需做到這五步,輕鬆搞定!
怎麼判斷自己是不是備胎?如何做到不會「當局者迷」?
堅持游泳,你做到了嗎?
相機里的照片可以直接傳到手機?還不用電腦!四個方法輕鬆做到
《絕地求生》此伺服器竟無人敢開掛,到底是怎樣做到的?
要怎樣做到才能讓手機不卡或者說減少卡頓?
你敢用勺子挖人腦吃嗎?如果不敢,進來看看他是怎麼做到的……
他「養」的金魚不用呼吸,也不會死!好想知道他是怎麼做到的……