2019-01-06基于 Node.js 的游戲服務(wù)端框架

今天跟前端吃飯的時(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ò)展性更好。

Pomelo 特性

快速孩革、易上手的游戲開發(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 的框架介紹

  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 等。

為什么使用pomelo廊蜒?

  高并發(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ā)撞芍?

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

Pomelo架構(gòu)概覽

Pomelo快速使用指南

Pomelo中文教程

Pomelo中文FAQ

  通過demo代碼的學(xué)習(xí)將使你熟悉一個(gè)完整MMO游戲的開發(fā):

游戲Demo介紹

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市跨扮,隨后出現(xiàn)的幾起案子序无,更是在濱河造成了極大的恐慌,老刑警劉巖衡创,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帝嗡,死亡現(xiàn)場離奇詭異,居然都是意外死亡璃氢,警方通過查閱死者的電腦和手機(jī)哟玷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來一也,“玉大人巢寡,你說我怎么就攤上這事∫叮” “怎么了抑月?”我有些...
    開封第一講書人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長舆蝴。 經(jīng)常有香客問我谦絮,道長,這世上最難降的妖魔是什么洁仗? 我笑而不...
    開封第一講書人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任层皱,我火速辦了婚禮,結(jié)果婚禮上赠潦,老公的妹妹穿的比我還像新娘叫胖。我一直安慰自己,他們只是感情好她奥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開白布臭家。 她就那樣靜靜地躺著疲陕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪钉赁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,215評(píng)論 1 299
  • 那天携茂,我揣著相機(jī)與錄音你踩,去河邊找鬼。 笑死讳苦,一個(gè)胖子當(dāng)著我的面吹牛带膜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鸳谜,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼膝藕,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了咐扭?” 一聲冷哼從身側(cè)響起芭挽,我...
    開封第一講書人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蝗肪,沒想到半個(gè)月后袜爪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡薛闪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年辛馆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片豁延。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡昙篙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出诱咏,到底是詐尸還是另有隱情苔可,我是刑警寧澤,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布胰苏,位于F島的核電站硕蛹,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏硕并。R本人自食惡果不足惜法焰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望倔毙。 院中可真熱鬧埃仪,春花似錦、人聲如沸陕赃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至傻丝,卻和暖如春甘有,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背葡缰。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來泰國打工亏掀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人泛释。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓滤愕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親怜校。 傳聞我的和親對(duì)象是個(gè)殘疾皇子间影,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • #國家一級(jí)注冊(cè)建筑師考試#
    b34463cf8ea4閱讀 213評(píng)論 0 0
  • 喧囂都市,誰入侵了誰的世界茄茁?潮濕的命運(yùn)魂贬,誰又抵過宿命的感傷? 有過誤會(huì)胰丁,有過掙扎随橘,有過甜蜜,有過心酸锦庸。愛情是一種毒...
    追逐明天閱讀 218評(píng)論 0 0
  • 我真的不要再這樣子讓自己那么頹廢了机蔗,再這樣下去,我真的是要?dú)Я税甘萧。萝嘁。⊙锞恚《〖鸦郏牙言。」值茫∏逍岩稽c(diǎn)吧咱枉,你可以客服自己的!徒恋!...
    做一個(gè)優(yōu)秀的姑娘閱讀 139評(píng)論 0 0
  • 續(xù)杯的咖啡喝出了落寞 回望的路口倒退著心情 整理著你給的溫暖 被風(fēng)吹去了一大半 曾經(jīng)以為 遇見你可以是一部言情片 ...
    藍(lán)色的水瓶座閱讀 617評(píng)論 0 22