技术文章 > 服务端 > pomelo 简介 

pomelo 简介

    pomelo 是一个基于 node.js 的游戏服务器框架。与以往单进程的游戏框架不同, 它是高性能、高可伸缩、分布式多进程的游戏服务器框架,并且使用很简单。
    pomelo 意为柚子,如果形象的描述它,组成它的每个瓣,就是单个 node.js 服务。
    pomelo 包括一个基础开发框架和一系列相关工具和库,可以帮助开发者省去游戏开发中枯燥的重复劳动和底层逻辑工作,免除开发者的重造轮子,让开发者可以更多地去关注游戏的具体逻辑,大大提高开发效率。
    pomelo 强大的可伸缩性和灵活性使得 pomelo 也可以作为通用的分布式实时应用开发框架,用于一些高实时应用的开发,而且 pomelo 在很多方面的表现甚至超越了现有的开源实时应用框架。
    pomelo 支持所有主流平台的客户端,并提供了客户端的开发库,使得客户端的开发变得很友好。
    pomelo 最初由网易公司官方发布在 https://github.com/NetEase/pomelo ,本文发稿时,最新版本为 2.2.7 ,最后更新日期为 2019 年 11 月 8 日。经编者实际使用测试,该版本最高可支持的 node.js 版本为 7.6。
    此后,编者因 CentOS 版本对 node.js 低版本的不兼容,历经磨难后艰苦寻觅,找到大神 shudingbo 发布在 https://github.com/sex-pomelo/sex-pomelo 的改进升级版本,该版本主要解决了对高版本 node.js 的兼容问题,大神建议使用版本 node.js 8.0 以上。截止到本文发稿时,sex-pomelo 最高兼容到了 node.js 16 ,最后更新日期为 2021 年 11 月 27 日,编者实际使用 node.js-v16.14.0 + sex-pomelo 版本进行了开发部署,使用一年多来,运行依然如原版一样坚如磐石、稳定可靠。
    在此,请允许编者发自内心地感谢 shudingbo,祝他以此功德,福如东海!

    pomelo 官方版网址: https://github.com/NetEase/pomelo
    sex-pomelo 升级版网址: https://github.com/sex-pomelo/sex-pomelo
    pomelo 中文文档网址:https://github.com/NetEase/pomelo/wiki/Home-in-Chinese

pomelo 组成

    pomelo 是由一系列相互之间弱耦合的部分组合而成的,包括:

pomelo 的定位

    pomelo 是一个轻量级的服务器框架,它最适合的应用领域是网页游戏、社交游戏、移动游戏的服务端,开发者会发现 pomelo 可以用如此少的代码达到强大的扩展性和伸缩性。当然还不仅仅是游戏,用 pomelo 开发高实时 web 应用也如此合适, 而且伸缩性比其它框架好。
    不推荐将 pomelo 用于大型的 MMORPG 游戏开发,尤其是大型 3D 游戏, 还是需要象 Bigworld 这样的商用引擎来支撑。

安装pomelo

pomelo是基于 node.js的,目前pomelo已经完全支持Windows、Linux、Mac等多种平台。但是本文只介绍 linux 平台的 sex-pomelo 安装,需要理由吗?node.js + pomelo 运营,本该选用 linux 服务器!何必浪费时间精力用其他?
首先,确保你的系统上已经要安装了 node.js,建议版本 16;
使用 npm 全局安装 sex-pomelo:
npm install -g @sex-pomelo/sex-pomelo
可以通过如下命令下载源代码的方式安装:
git clone https://github.com/sex-pomelo/sex-pomelo
$ cd sex-pomelo
$ npm install -g
npm 为 node.js 包管理工具,其中 -g 表示全局安装,npm 的使用相关知识请参考 npm 文档,里面有详细的说明。
如果安装过程中没有报错误,说明安装成功。

新建项目

使用pomelo的命令行工具可以快速创建一个项目,命令如下:
pomelo init ./HelloWorld
特别提醒:注意仅安装时需用 “sex-pomelo” 这个名称,后面使用过程中,都不要再加 “sex-”,而是直接使用 “pomelo”,因为 sex-pomelo 实际上仅仅只是 pomelo 的一个升级版分支,用不同名称安装是为避免错装为低版本。
更多关于 pomelo 命令行使用的文档,请参阅 pomelo 命令行工具 。在初始化项目的时候,用户需要选择其底层使用的通信协议,分为 socket.io 和 websocket。
然后,进入到HelloWorld文件夹,安装依赖包:
sh npm-install.sh

项目目录结构

让我们来看看一个 pomelo 项目的大致结构,新建立的项目结构如下图所示:



该目录结构很清楚地展示了游戏项目的前后端分层结构,分别在各个目录下填写相关代码,即可快速开发游戏。
下面对各个目录进行简要分析:

启动项目

对于我们这个例子来说,由于客户端是web,所以必须启动 game-server (游戏服务器) 和 web-server (web服务器)。
启动 game-server 服务器:
开发调试环境启动:
pomelo start -e development -D
sleep 3s
pomelo list
正式运营环境启动:
pomelo start -e production -D
sleep 3s
pomelo list
启动 web-server 服务器:
直接启动:
cd web-server
node app
forever 启动:
cd web-server
forever start app.js
在启动过程中可能会有端口号冲突导致启动不成功,只需在 config 里面修改使用的端口号即可。
如果上面的启动都没有问题的话,我们就可以对我们的 HelloWorld 进行测试了。用浏览器(推荐使用 chrome)访问 http://localhost:3001 或者 http://127.0.0.1:3001 即可, 点击 Test Game Server,提示 game server is ok 说明运行成功,如下图所示:

查看服务器

可以使用pomelo list查看已经启动的服务器,如下图所示:



服务器状态可以查看5种状态信息:

关闭项目

可以使用以下两种方式关闭项目:
cd game-server
pomelo stop
或者
cd game-server
pomelo kill
pomelo stop 比较优雅,建议正式运营使用。pomelo kill 比较粗暴,安全性低,开发环境下可以使用,运营环境慎用。更详细的 pomelo 命令行用法请参阅 pomelo 命令行工具使用


来源:https://github.com/NetEase/pomelohttps://github.com/NetEase/pomelo/wiki/Home-in-Chinese,本站 行痴 整理,2023-08-21