pomelo intro

游戲服務(wù)器往往需要處理大量任務(wù),比如管理客戶端的連接、維護(hù)游戲世界的狀態(tài)、執(zhí)行游戲的邏輯等。每一項(xiàng)任務(wù)所需的系統(tǒng)資源也可能不同,比如IO密集或CPU密集等。而這些復(fù)雜的任務(wù)只有一個(gè)單獨(dú)的服務(wù)器進(jìn)程是很難支撐和管理的。所以游戲服務(wù)器往往是由多個(gè)不同類型的服務(wù)器進(jìn)程組成的集群構(gòu)成。每個(gè)服務(wù)器進(jìn)程專注于一塊具體的業(yè)務(wù),比如連接服務(wù)、場(chǎng)景服務(wù)、聊天服務(wù)等。服務(wù)器進(jìn)程之間相互寫作,對(duì)外提供完整的游戲服務(wù)。由于存在上訴的復(fù)雜性,游戲服務(wù)器的開發(fā)者往往需要耗費(fèi)大量時(shí)間精力再服務(wù)器類型的劃分,進(jìn)程數(shù)量的分配以及進(jìn)程的維護(hù)、進(jìn)程間通訊、請(qǐng)求的路由等這些底層的問題上,這些都是重復(fù)而繁瑣的工作。Pomelo則是為了解決這些問題而誕生的框架。

Pomelo是一個(gè)輕量級(jí)的服務(wù)器框架,最合適的應(yīng)用領(lǐng)域是網(wǎng)頁游戲、社交游戲、移動(dòng)游戲的服務(wù)端。不推薦將Pomelo作為大型MMORPG游戲開發(fā),尤其是大型3D游戲,這需要像BigWorld商用引擎來支撐。

框架特性

  • 基于Socket.io開發(fā)
  • 多進(jìn)程架構(gòu):支持MMO場(chǎng)景分區(qū)和其他各類分區(qū)策略
  • 服務(wù)器擴(kuò)展:快速擴(kuò)展服務(wù)器類型和數(shù)量。
  • 通訊機(jī)制:請(qǐng)求、響應(yīng)、廣播
  • 擴(kuò)展組件

框架優(yōu)勢(shì)

  • 可伸縮性好
    架構(gòu)采用多進(jìn)程單線程的運(yùn)行架構(gòu),擴(kuò)展服務(wù)器方便。
    Node.js的網(wǎng)絡(luò)IO優(yōu)勢(shì)提供了高可伸縮性。
  • 使用方便
    開房模式與Web應(yīng)用的開發(fā)類似,都是基于Convention Over Configuration的理念,零配置。
  • 松耦合可擴(kuò)展
    遵循Node.js微模塊原則,框架所使用的類庫組件都是以NPM Module的形式擴(kuò)展進(jìn)來。

多進(jìn)程

Pomelo是游戲服務(wù)器框架,本質(zhì)上也是高實(shí)時(shí)、高擴(kuò)展、多進(jìn)程的應(yīng)用框架,除了在提供的庫部分有游戲?qū)S玫膸?,其余部分框架完全可用于開發(fā)高實(shí)時(shí)的應(yīng)用。而且與現(xiàn)有的Node.js高實(shí)時(shí)應(yīng)用框架如Derby、Socketstream、Meteor等相比具有更好的可伸縮性。

高可擴(kuò)展的游戲運(yùn)行架構(gòu)必須是多進(jìn)程的,Google的Gritsgame,Mozilla的Browserquest都采用了Node.js作為游戲服務(wù)器開發(fā)語言,它們都采用了單進(jìn)程的Node.js服務(wù)器,由于缺乏擴(kuò)展性,使它們可以支撐的在線用戶數(shù)量是有限的。而多進(jìn)程架構(gòu)可以很好的實(shí)現(xiàn)游戲服務(wù)器的可擴(kuò)展性,達(dá)到支撐較多的在線用戶、降低服務(wù)器壓力等要求。

Pomelo為什么采用Node.js開發(fā)?

Node.js自身特點(diǎn)與游戲服務(wù)器的特性驚人的吻合,在Node.js官方定義中,fast、scalable、realtime、network這幾個(gè)特性都非常符合游戲服務(wù)器的要求,游戲服務(wù)器是網(wǎng)絡(luò)密集型的應(yīng)用,對(duì)實(shí)時(shí)性要求極高,Node.js網(wǎng)絡(luò)IO上的優(yōu)勢(shì)完全可以滿足這點(diǎn)。

使用Node.js開發(fā)游戲服務(wù)器的優(yōu)勢(shì)

  • IO與可伸縮性:IO密集型的應(yīng)用采用Node.js最合適,可以達(dá)到最好的可伸縮性。
  • 多進(jìn)程單線程:Node.js天生采用單線程,使其在處理復(fù)雜邏輯時(shí)無需考慮線程同步、鎖、死鎖等問題,減少了很少邏輯錯(cuò)誤。由多進(jìn)程N(yùn)ode.js組成的服務(wù)器群是最理想的應(yīng)用架構(gòu)。
  • 語言優(yōu)勢(shì):使用JavaScript開發(fā)可以實(shí)現(xiàn)快速迭代,若客戶端使用HTML5,更可實(shí)現(xiàn)代碼共用。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容