Pomelo框架概述

2021-06-20 20:14:13 字數 2130 閱讀 2792

原文

乙個典型的多程序mmo執行架構, 如下圖所示:

pomelo架構組成

pomelo框架的組成如圖所示:

pomelo是個真正多程序、分布式的遊戲伺服器。因此各遊戲server(程序)的管理是pomelo很重要的部分,框架通過抽象使伺服器的管理非常容易。server management 部分維護伺服器的監控資訊,對伺服器進行管理等功能;

pomelo中的通訊,包括伺服器與客戶端的通訊,也包括伺服器群中各個伺服器程序之間的通訊,也就是伺服器間的rpc呼叫。請求、響應、廣播、rpc、session管理等構成了整個遊戲框架的脈絡,所有遊戲流程都構建在這個脈絡上。

應用的定義、component管理、上下文配置,這些使pomelo framework的對外介面很簡單, 並且具有松耦合、可插拔架構。

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

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

儘管框架盡量避免跨程序呼叫,但程序間的通訊是不可避免的, 因此需要乙個方便好用的rpc框架來支撐。

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

下面分別對這些目標進行分析:

伺服器的抽象與分類

該架構把遊戲伺服器做了抽象, 抽象成為兩類:前端伺服器和後端伺服器, 如圖:

後端伺服器(backend)的職責:

伺服器的鴨子型別

動態語言的物件導向有個基本概念叫鴨子型別。伺服器的抽象也同樣可以比喻為鴨子, 伺服器的對外介面只有兩類, 一類是接收客戶端的請求, 叫做handler, 一類是接收rpc請求, 叫做remote, handler和remote的行為決定了伺服器長什麼樣子。因此我們只要定義好handler和remote兩類的行為, 就可以確定這個伺服器的型別。

伺服器抽象的實現

利用目錄結構與伺服器對應的形式, 可以快速實現伺服器的抽象。

以下是示例圖:

,

],"area":[

,,],"chat":

}}

所有的web應用框架都實現了請求與響應的抽象。儘管遊戲應用是基於長連線的, 但請求與響應的抽象跟web應用很類似。下圖的**是乙個request請求示例:

架構中各伺服器之間的通訊主要是通過底層rpc框架來完成的,該rpc框架主要解決了程序間訊息的路由和rpc底層通訊協議的選擇兩個問題。伺服器間的rpc呼叫也實現了零配置。例項如下圖所示:

chatremote

.kick

=function

(uid

,player,cb

)

其它伺服器(rpc客戶端)只要通過以下介面就可以實現rpc呼叫:

.rpc

.chat

.chatremote

.kick

(session

,uid

,player

,function

(data

));

這個呼叫會根據特定的路由規則**到特定的伺服器。(如場景服務的請求會根據玩家在哪個場景直接**到對應的server)。rpc框架目前在底層採用socket.io作為通訊協議,但協議對上層是透明的,以後可以替換成任意的協議。

component是pomelo的核心,pomelo的核心功能都是由component完成,開發者可定製自己的component,並載入到框架中,以完成其功能。component在開發指南部分將有更深入的討論。以下是component的生命週期圖:

.load

([name

],comp,[

opts])

在本部分,講述了pomelo框架的整體架構,以及其設計目標。pomelo框架完成了對伺服器的抽象,對使用者請求響應以及伺服器端主動推送訊息的抽象,伺服器間rpc呼叫的抽象,可插拔的components抽象。這些抽象使得pomelo非常靈活以及易於使用,易於擴充套件。

實體框架概述

實體框架是一組技術,在ado.net支援面向資料的軟體應用程式的開發。架構師和開發面向資料的應用需要實現兩個非常不同的目標奮鬥。他們必須建模的實體,關係和邏輯,他們正在解決的業務問題,而且他們還必須與用於儲存和檢索資料的資料引擎。資料可能跨多個儲存系統,每個都有自己的協議,對應用程式 編寫效率和維護...

spring mvc框架概述

1.spring的web框架圍繞dispatcherservlet設計。dispatcherservlet的作用是將請求分發到不同的處理器。2.spring的web框架包括可配置的處理器 handler 對映 視 析 本地化 local 解析 主題 theme 解析以及對檔案上傳的支援。3.spri...

Spring框架概述

spring 框架是乙個分層架構,由 7 個定義良好的模組組成。spring 模組構建在核心容器之上,核心容器定義了建立 配置和管理 bean 的方式,如圖 1 所示。圖1.spring框架的7個模組 組成 spring 框架的每個模組 或元件 都可以單獨存在,或者與其他乙個或多個模組聯合實現。每個...