您好,登錄后才能下訂單哦!
視頻游戲《光環4》的Actor模型設計和實現是怎樣的,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
在開始設計光環(Halo)系列視頻游戲的下一代——光環4的時候,現有的游戲引擎與可用的服務已經無法滿足游戲的需求了,因此開發者基于Actor模型設計了一套全新的解決方案,并使用Orleans框架完成了這套模型的實現。在QCon倫敦大會上,Caitie McCaffrey在演講中為聽眾介紹了他們設計與創建這個新游戲背后的服務的過程。
McCaffrey原本在微軟游戲工作室就職,目前則在Twitter擔任分布式系統工程師的職位。他提到了在游戲開發過程中所遇到的一個架構上的挑戰,是如何設計該游戲將要面對的海量訪問的負載。在光環4上線當天,共有100萬獨立在線用戶參與了游戲,這個數字在一周之內就上升到了400位,游戲時間總和超過了3000萬小時。為了應對如此龐大的負載,該項目選擇了在云端進行托管,更具體地說是托管在Azure上,畢竟光環4是微軟所推出的游戲。其它的挑戰還包括如何保證游戲能夠始終在線運行,這就要求服務器永遠保持可用狀態,還要盡量降低延遲,并且提高并發能力。
在尋找能夠滿足該項目需求的解決方案過程中,項目組的目光投向了Actor模型。從本質上說,Actor(角色)是并發的基礎,該模型的核心概念在于:作為并發計算的基元,每個Actor將通過異步消息發送的方式與另一個Actor進行通信。當某個Actor收到一條消息之后,它可以選擇將消息發送給其它Actor,或是創建一個新的Actor,也可以修改它的內部狀態。這樣一來,就能夠高效地將某個Actor的所有數據保存在同一個地方,因此McCaffrey和他的團隊通過實現這些保持狀態的服務,創建了一套能夠保持狀態的中間層,它一方面具有緩存的高性能優點,另一方面也不會產生由于并發造成的問題。
項目組在微軟內部四處尋找可行的方案,他們最終發現了Orleans框架,這是一個用于創建基于Actor模型的分布式系統的運行時與編程模型。Orleans框架與其它Actor模型框架最重要的不同之處在于它所獨有的概念:虛擬Actor。這個虛擬Actor永遠不會被創建或是銷毀,從邏輯上來說它是永遠存在的。虛擬Actor所具有的關鍵思想,一是地址的透明性,即發送給某個Actor的消息會被自動路由至該Actor,無論該Actor的地址在哪里;二是能夠在不重新進行部署的情況下進行自動橫向擴展。
McCaffrey聲稱,在使用了新技術的全新架構中,服務器的CPU利用率能夠持續穩定在90%的水平上,并且能夠實現接近線性增長的可擴展性,能夠輕易地應對負載的變量,這一點在訪問量突發性增長的時刻相當實用,例如當游戲剛剛上線的時候。
McCaffrey相信,如果沒有Orleans這個框架,光環4的項目就不可能獲得成功。由于Orleans能夠為開發者編寫在分布式環境中運行的代碼提供極大的幫助,因此尋找合適的開發者也變得簡單了許多。并且由于它提高了開發者的生產力,因此開發者能夠專注于提高游戲的用戶體驗,讓它的表現更加出色。
McCaffrey在一篇較早的博客帖子中,曾經介紹了使用Orleans創建RESTful服務的過程。
對于實現Actor模型的不同途徑,InfoQ之前曾經專門進行過討論和報告。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。