今天跟前端吃飯的時(shí)候,說到今天行業(yè)發(fā)展沧卢,就業(yè)前景的時(shí)候蚁堤,他跟我提到了一點(diǎn):網(wǎng)易有用node.js來做服務(wù)端的接口,我回來搜素百度了解了一下但狭,發(fā)現(xiàn)確實(shí)有這么一說披诗,用node.js來做后端服務(wù)器,不過是用來做游戲的服務(wù)端立磁。今天要了解下呈队。以備后面自己有用到。
Pomelo:網(wǎng)易開源基于 Node.js 的游戲服務(wù)端框架
Pomelo是基于 Node.js 的高性能唱歧、分布式游戲服務(wù)器框架宪摧。它包括基礎(chǔ)的開發(fā)框架和相關(guān)的擴(kuò)展組件(庫和工具包)粒竖,可以幫助你省去游戲開發(fā)枯燥中的重復(fù)勞動(dòng)和底層邏輯的開發(fā)。Pomelo不但適用于游戲服務(wù)器開發(fā)几于, 也可用于開發(fā)高實(shí)時(shí) Web 應(yīng)用蕊苗,它的分布式架構(gòu)可以使 Pomelo 比普通的實(shí)時(shí) Web 框架擴(kuò)展性更好。
快速孩革、易上手的游戲開發(fā)模型和api
高可伸縮的多進(jìn)程架構(gòu)岁歉, 支持MMO的場景分區(qū)和其它各類分區(qū)策略
方便的服務(wù)器擴(kuò)展機(jī)制,可快速擴(kuò)展服務(wù)器類型和數(shù)量
方便的請(qǐng)求膝蜈、響應(yīng)锅移、廣播、服務(wù)器通訊機(jī)制饱搏, 無需任何配置
注重性能非剃,在性能、可伸縮性上做了大量的測(cè)試推沸、優(yōu)化
提供了較多擴(kuò)展組件备绽,包括游戲開發(fā)常用的庫和工具包
提供了完整的MMO demo代碼(客戶端html5),可以作為很好的開發(fā)參考
基于socket.io開發(fā)鬓催,支持socket.io支持的多種語言客戶端
Pomelo Framework的組成架構(gòu)如圖所示:
Server management, pomelo 是個(gè)真正多進(jìn)程肺素、分布式的游戲服務(wù)器。因此各游戲server(進(jìn)程)的管理是pomelo很重要的部分宇驾,框架通過抽象使服務(wù)器的管理非常容易倍靡。
Network,請(qǐng)求课舍、響應(yīng)塌西、廣播、RPC筝尾、session 管理等構(gòu)成了整個(gè)游戲框架的脈絡(luò)捡需,所有游戲流程都構(gòu)建在這個(gè)脈絡(luò)上。
Application, 應(yīng)用的定義筹淫、component管理站辉,上下文配置, 這些使pomelo framework的對(duì)外接口很簡單损姜, 并且具有松耦合庵寞、可插拔架構(gòu)。
Pomelo 的架構(gòu)設(shè)計(jì)目標(biāo)
服務(wù)器(進(jìn)程)的抽象與擴(kuò)展
在 web 應(yīng)用中薛匪, 每個(gè)服務(wù)器是無狀態(tài)、對(duì)等的脓鹃, 開發(fā)者無需通過框架或容器來管理服務(wù)器逸尖。 但游戲應(yīng)用不同, 游戲可能需要包含多種不同類型的服務(wù)器,每類服務(wù)器在數(shù)量上也可能有不同的需求娇跟。這就需要框架對(duì)服務(wù)器進(jìn)行抽象和解耦岩齿,支持服務(wù)器類型和數(shù)量上的擴(kuò)展。
客戶端的請(qǐng)求苞俘、響應(yīng)盹沈、廣播
客戶端的請(qǐng)求、響應(yīng)與 web 應(yīng)用是類似的吃谣, 但框架是基于長連接的乞封, 實(shí)現(xiàn)模式與 http 請(qǐng)求有一定差別。 廣播是游戲服務(wù)器最頻繁的操作岗憋, 需要方便的 API肃晚, 并且在性能上達(dá)到極致。
服務(wù)器間的通訊仔戈、調(diào)用
盡管框架盡量避免跨進(jìn)程調(diào)用关串,但進(jìn)程間的通訊是不可避免的, 因此需要一個(gè)方便好用的 RPC 框架來支撐监徘。
松耦合晋修、可插拔的應(yīng)用架構(gòu)。
應(yīng)用的擴(kuò)展性很重要凰盔, pomelo framework 支持以 component 的形式插入任何第三方組件, 也支持加入自定義的路由規(guī)則墓卦, 自定義的 filter 等。
高并發(fā)趴拧、高實(shí)時(shí)的游戲服務(wù)器的開發(fā)是很復(fù)雜的工作。跟 web 應(yīng)用一樣山叮, 一個(gè)好的開源容器或開發(fā)框架可以大大減少游戲開發(fā)的復(fù)雜性著榴,讓開發(fā)變得更加容易。遺憾的是目前在游戲服務(wù)器開發(fā)領(lǐng)域一直沒有太好的開源解決方案屁倔。 pomelo 將填補(bǔ)這個(gè)空白脑又, 打造一款完全開源的高性能(并發(fā))游戲服務(wù)器框架。 pomelo 的優(yōu)勢(shì)有以下幾點(diǎn):
架構(gòu)的可伸縮性好锐借。 采用多進(jìn)程單線程的運(yùn)行架構(gòu)问麸,擴(kuò)展服務(wù)器非常方便, node.js 的網(wǎng)絡(luò) io 優(yōu)勢(shì)提供了高可伸縮性钞翔。
使用非常容易严卖, 開發(fā)模型與web應(yīng)用的開發(fā)類似,基于 convention over configuration 的理念布轿, 幾乎零配置哮笆, api 的設(shè)計(jì)也很精簡来颤, 很容易上手。
框架的松耦合和可擴(kuò)展性好稠肘, 遵循 node.js 微模塊的原則福铅, framework 本身只有很少的代碼,所有 component项阴、庫滑黔、工具都可以用 npm module 的形式擴(kuò)展進(jìn)來。任何第三方都可以根據(jù)自己的需要開發(fā)自定義 module环揽。
提供完整的開源 MMO 游戲 demo 參考略荡,一個(gè)超過1萬行代碼的游戲 demo,使開發(fā)者可以隨時(shí)借鑒 demo 的設(shè)計(jì)與開發(fā)思路薯演。
通過以下參考資料將使我們很快地熟悉 pomelo 的全貌與開發(fā)過程:
通過demo代碼的學(xué)習(xí)將使你熟悉一個(gè)完整MMO游戲的開發(fā):