天天看點

網易遊戲伺服器開發架構 Pomelo

 ​

pomelo 是由網易開發的基于​​node.js​​開發的高性能、分布式遊戲伺服器架構, 也可作為高實時web應用架構。

網易遊戲伺服器開發架構 Pomelo

Pomelo的應用範圍

pomelo最适合的應用領域是網頁遊戲、社交遊戲、移動遊戲的服務端,開發者會發現pomelo可以用如此少的代碼達到強大的擴充性和伸縮性。當然還不僅僅是遊戲,很多人斷言未來的web時代是實時web應用的時代, 我們發現用pomelo開發高實時web應用也如此合适, 而且伸縮性比其它架構好。目前不推薦将pomelo用于大型的MMO rpg遊戲開發,尤其是3d遊戲, 還是需要象bigworld這樣的商用引擎來支撐。

Pomelo的理念

pomelo的第一個理念是讓遊戲(高實時web應用)伺服器的開發變得非常簡單, 而不是解決某類算法或系統上的難題。這個設計理念跟rails是很類似的;第二個理念是重視性能和可伸縮性,使用者用pomelo開發出來的遊戲天生具有很強的伸縮性,擴充也很容易。我們在性能優化上也花了很多功夫,并且會持續進行;第三個理念是讓第三方很容易擴充,架構用了很多插件式的設計, 元件component、路由規則、甚至管理控制台都可以完全由第三方擴充。

網易遊戲伺服器開發架構 Pomelo
網易遊戲伺服器開發架構 Pomelo

Pomelo的架構組成

pomelo包括三部分:

  • 架構, pomelo的核心, 與以往單程序的遊戲架構不同, 它是高性能、分布式的遊戲伺服器架構,并且使用很簡單
  • 庫, 包括了開發遊戲的常用工具庫, 如人工智能(ai), 尋路, aoi等
  • 工具包, 包括管理控制台, 指令行工具, 壓力測試工具等

pomelo特性

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

為什麼使用pomelo?

高并發、高實時的遊戲伺服器的開發是很複雜的工作。跟web應用一樣, 一個好的開源容器或開發架構可以大大減少遊戲開發的複雜性,讓開發變得更加容易。

遺憾的是目前在遊戲伺服器開發領域一直沒有太好的開源解決方案。 pomelo将填補這個空白, 打造一款完全開源的高性能(并發)遊戲伺服器架構。 pomelo的優勢有以下幾點:

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

繼續閱讀