Pomelo:網易開源基於 Node.js 的遊戲服務端框架

Pomelo:網易開源基於 Node.js 的遊戲服務端框架

  Pomelo 是基於 Node.js 的高性能、分佈式遊戲服務器框架。它包括基礎的開發框架和相關的擴展組件(庫和工具包),可以幫助你省去遊戲開發枯燥中的重複勞動和底層邏輯的開發。Pomelo 不但適用於遊戲服務器開發, 也可用於開發高實時 Web 應用,它的分佈式架構可以使 Pomelo 比普通的實時 Web 框架擴展性更好。

  

  

Pomelo 特性

  • 快速、易上手的遊戲開發模型和api
  • 高可伸縮的多進程架構, 支持MMO的場景分區和其它各類分區策略
  • 方便的服務器擴展機制,可快速擴展服務器類型和數量
  • 方便的請求、響應、廣播、服務器通訊機制, 無需任何配置
  • 注重性能,在性能、可伸縮性上做了大量的測試、優化
  • 提供了較多擴展組件,包括遊戲開發常用的庫和工具包
  • 提供了完整的MMO demo代碼(客戶端html5),可以作爲很好的開發參考
  • 基於socket.io開發,支持socket.io支持的多種語言客戶端

Pomelo 的框架介紹

  Pomelo Framework的組成架構如圖所示:

 

pomelo框架
  • Server management, pomelo 是個真正多進程、分佈式的遊戲服務器。因此各遊戲server(進程)的管理是pomelo很重要的部分,框架通過抽象使服務器的管理非常容易。
  • Network,請求、響應、廣播、RPC、session 管理等構成了整個遊戲框架的脈絡,所有遊戲流程都構建在這個脈絡上。
  • Application, 應用的定義、component管理,上下文配置, 這些使pomelo framework的對外接口很簡單, 並且具有鬆耦合、可插拔架構。

Pomelo 的架構設計目標

  • 服務器(進程)的抽象與擴展

  在 web 應用中, 每個服務器是無狀態、對等的, 開發者無需通過框架或容器來管理服務器。 但遊戲應用不同, 遊戲可能需要包含多種不同類型的服務器,每類服務器在數量上也可能有不同的需求。這就需要框架對服務器進行抽象和解耦,支持服務器類型和數量上的擴展。

  • 客戶端的請求、響應、廣播

  客戶端的請求、響應與 web 應用是類似的, 但框架是基於長連接的, 實現模式與 http 請求有一定差別。 廣播是遊戲服務器最頻繁的操作, 需要方便的 API, 並且在性能上達到極致。

  • 服務器間的通訊、調用

  儘管框架儘量避免跨進程調用,但進程間的通訊是不可避免的, 因此需要一個方便好用的 RPC 框架來支撐。

  • 鬆耦合、可插拔的應用架構。

  應用的擴展性很重要, pomelo framework 支持以 component 的形式插入任何第三方組件, 也支持加入自定義的路由規則, 自定義的 filter 等。

爲什麼使用pomelo?

  高併發、高實時的遊戲服務器的開發是很複雜的工作。跟 web 應用一樣, 一個好的開源容器或開發框架可以大大減少遊戲開發的複雜性,讓開發變得更加容易。遺憾的是目前在遊戲服務器開發領域一直沒有太好的開源解決方案。 pomelo 將填補這個空白, 打造一款完全開源的高性能(併發)遊戲服務器框架。 pomelo 的優勢有以下幾點:

  • 架構的可伸縮性好。 採用多進程單線程的運行架構,擴展服務器非常方便, node.js 的網絡 io 優勢提供了高可伸縮性。
  • 使用非常容易, 開發模型與web應用的開發類似,基於 convention over configuration 的理念, 幾乎零配置, api 的設計也很精簡, 很容易上手。
  • 框架的鬆耦合和可擴展性好, 遵循 node.js 微模塊的原則, framework 本身只有很少的代碼,所有 component、庫、工具都可以用 npm module 的形式擴展進來。任何第三方都可以根據自己的需要開發自定義 module。
  • 提供完整的開源 MMO 遊戲 demo 參考,一個超過1萬行代碼的遊戲 demo,使開發者可以隨時借鑑 demo 的設計與開發思路。

如何使用pomelo開發?

  通過以下參考資料將使我們很快地熟悉 pomelo 的全貌與開發過程:

  通過demo代碼的學習將使你熟悉一個完整MMO遊戲的開發:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章