安装
如果是Windows系统,请确保你的Windows系统包含源码编译工具。Node.js的源码主要由C++代码和JavaScript代码构成,但是却用gyp工具来做源码的项目管理,该工具采用Python语言写成的。在Windows平台上,Node.js采用gyp来生成Visual Studio Solution文件,最终通过VC++的编译器将其编译为二进制文件。所以,在安装之前请确保你的Windows系统满足以下两个条件:
- Python(2.5<version<3.0)。
- VC++ 编译器,包含在Visual Studio 2010中(VC++ 2010 Express亦可)。
使用npm(node包管理工具)全局安装pomelo:
npm install pomelo -g(如果是apt-get安装的node,需要单独安装g++,node的版本建议为0.8系列)
可以通过命令git clone https://github.com/NetEase/pomelo.git
下载源代码。
使用方法
新建项目
可以使用下面两种方式建立一个新的项目:
方式一
- pomelo init 命令后添加项目路径参数:
pomelo init ./helloWorld
; pomelo命令会自动创建目录helloWorld,并初始化该项目。
方式二
-
本地新建目录:
mkdir helloWorld
-
进入新建目录:
cd helloWorld
-
初始化项目:
pomelo init .
-
安装依赖包:
sh npm-install.sh(如果是Windows环境直接运行:npm-install.bat )
新建立的项目结构如下图所示:
该目录结构很清楚的展示了游戏项目的前后端分层结构,分别在各个目录下填写相关代码,即可快速开发游戏。下面对各个目录进行简要分析:
game-server
Game-server是用pomelo框架搭建的游戏服务器,以文件app.js作为入口,运行游戏的所有逻辑和功能。在接下来的开发中,所有游戏逻辑、功能等代码都在该目录下进行。
config
Config包括了游戏服务器的所有配置信息。配置信息以JSON文件的格式进行定义,包含有日志、master等服务器的配置信息。该目录还可以进行扩展,对数据库配置信息、地图信息和数值表等信息进行定义。
logs
日志是项目中不可或缺的,可以对项目的运行情况进行很好的备份,也是系统运维的参考数据之一。logs存放了游戏服务器所有的日志信息。
shared
Shared存放一些前后端、game-server与web-server共用代码。
web-server
Web-server是用express框架搭建的web服务器,以文件app.js作为入口,当然开发者可以选择Nginx等其他web服务器。
启动项目
启动项目必须分别启动game-server(游戏服务器)和web-server(web服务器)。
启动game-server服务器:>pomelo start [development | production] [--daemon]
启动web-server服务器:>cd web-server && node app
在不同的环境下运行,项目的启动方式稍有不同,如果是开发环境则选择development参数(默认值,可不填),如果是产品环境 则必须选择production参数(跨多服务器需要支持ssh agent forward)。项目默认是前台运行,若想后台运行项目,请选择参数"--daemon"。
daemon模式运行项目需安装forever模块,安装命令:npm install forever -g
启动项目后,用支持websocket的浏览器(推荐使用chrome)访问 http://localhost:3001 或者http://127.0.0.1:3001 即可。
服务器状态查看
使用"pomelo list"命令查看各服务器状态,如下图所示:
服务器状态可以查看6种状态信息:
- serverId:服务器的serverId,同config配置表中的id。
- serverType:服务器的serverType,同config配置表中的type。
- pid:服务器对应的进程pid。
- headUsed:该服务器已经使用的堆大小(单位:兆)。
- uptime:该服务器启动时长(单位:分钟)。
关闭项目
可以使用以下两种方式关闭项目:
pomelo stop [id]
pomelo stop
优雅地关闭各个服务器,具有以下特点:
- 前端服务器首先断开连接,阻止新玩家进入游戏,用户体验好。
- 各服务器按顺序关闭自身的功能,保证游戏逻辑正常。
- 玩家状态等信息及时写入数据库,保证数据的完整性。
pomelo stop id
会关闭特定服务器,该命令需在项目根目录下进行。由于关闭特定服务器会导致服务器状态信息等丢失,所以建议首先做好该服务器状态信息的维护和备份等工作。
pomelo kill [--force]
该方式直接kill掉项目进程,比较粗暴,安全性低,开发环境下可以使用,产品环境慎用。如果还有残留进程杀不干净可使用--force参数。
pomelo add host=[host] port=[port] id=[id] serverType=[serverType]
动态添加服务器,添加的参数必须包括服务器ip地址(host),服务器端口号(port),服务器标识(id),服务器类型(serverType)。目前只支持后端服务器的动态添加,该命令需在项目的根目录下使用。
管理控制台(adminConsole)
管理控制台是方便用户对项目的运行状态进行监控获取感兴趣的信息,配合pomelo项目使用。该控制台web的形式提供了以下功能:
- 监控服务器状态、日志、在线用户和场景数据等。
- 运用脚本灵活获取相关游戏数据。
- 运用profiler对项目中各个服务器的内存堆栈及cpu消耗动态实时跟踪和分析。
管理控制台会对系统内存、cpu等信息搜集,请确保操作系统(linux)安装了sysstat工具集,参见命令apt-get install sysstat
.
安装管理控制台
git clone https://github.com/NetEase/pomelo-admin-web.git
cd pomelo-admin-web
npm install -d
node app
如果你的linux系统未安装sysstat, 先执行以下命令
apt-get install sysstat
浏览器中访问: http://localhost:7001, 就可以打开管理控制台界面。 如果端口有冲突,请在config/admin.json修改端口,访问的浏览器必须支持websocket,推荐使用chrome。系统默认是将监控禁掉了,如果需要开启可以在game-server/app.js配置app.enable('systemMonitor'),具体可以参考lordofpomelo源码。
production环境背景知识
production环境下,如果游戏服务器各进程运行在多服务器上,则各服务器需支持ssh agent forward, 并且项目在所有服务器里的目录是一致的。
以下文档是ssh agent forward配置的说明:
原文地址:https://github.com/NetEase/pomelo/wiki/pomelo%E5%BF%AB%E9%80%9F%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97
相关推荐
### Pomelo使用手册知识点 #### Pomelo基础架构介绍 Pomelo是一个高性能的Node.js游戏服务器框架,它特别适用于需要高并发和水平扩展能力的场合,例如多人在线游戏的服务器开发。Pomelo的核心在于其对事件驱动和无...
3. **网络通信**:Pomelo使用自定义的二进制协议,提高了通信效率。在客户端,你需要使用Pomelo提供的API来创建连接,发送和接收消息。例如,调用`PomeloClient.Connect()`建立连接,`PomeloClient.Send()`发送数据...
在IT行业中,Linux系统是广泛应用于服务器部署的...请查阅文档以获取更具体的操作指南和注意事项,确保顺利部署和运行Pomelo游戏服务器。在部署过程中,遵循最佳实践和文档指导,可以避免许多常见问题,提高部署效率。
- **集群部署**:工具支持一键部署,可以在多台服务器上快速启动和配置Pomelo服务,实现服务的快速扩展。 - **实时监控**:可以实时查看服务器的CPU、内存使用情况,网络流量等关键性能指标,帮助开发者及时发现并...
1. 协议解析:Pomelo使用protobuf(Protocol Buffers)进行数据序列化和反序列化,保证数据传输效率和兼容性。 2. 连接管理:Pomelo使用连接池管理客户端连接,有效利用系统资源,提高并发性能。 3. 异步处理:...
并且API回调在通信线程,使用起来极不方便。 该Demo对官方的Unity API进行了重构,主要功能如下: 1. 所有方法的回调均在主线程(原PomeloClient回调在Socket线程,用起来很麻烦) 2. 增加了DisconnectEvent和Error...
所有方法的回调均在主线程(原PomeloClient回调在Socket线程,用起来很麻烦) 2. 增加了DisconnectEvent和ErrorEvent两个事件通知,方便捕捉网络断开事件和其它异常 3. 所有报文回调时,会收到一个Message对象而...
1. **Pomelo框架**:Pomelo由网易公司开源,设计目标是提供快速、可扩展和高可用性的网络游戏服务器解决方案。它基于Node.js,利用了其非阻塞I/O和事件驱动的特性,优化了网络通信性能。Pomelo包含一套完整的工具链...
quick-pomelo 是网易 Pomelo 游戏框架深度优化版。高性能和可伸缩快速内存数据访问分布式架构,系统可以水平扩展 分布式 ACID 事务在分布式环境支持 ACID(Stands for Atomicity, Consistency, Isolation, Durability...
总结,基于Pomelo框架开发聊天室,可以充分利用其高性能、易扩展的特点,快速构建稳定可靠的实时通信应用。通过深入理解Pomelo的架构和机制,开发者可以更高效地实现聊天室的各种功能,提升用户体验。
在本文中,我们将详细讨论如何在CentOS 6.3操作系统上设置Pomelo游戏框架的部署环境。Pomelo是一款高性能、轻量级的Node.js游戏服务器框架,适合开发实时多人在线游戏。 首先,我们需要确认系统环境。在这个例子中...
Pomelo-admin-web作为管理工具,能够对接这些服务器,展示运行状态,如CPU使用率、内存占用、连接用户数量等关键指标。 解压“pomelo-admin-web.zip”后,我们得到的“pomelo-admin-web-master”文件夹中,通常会...
并且API回调在通信线程,使用起来极不方便。 该Demo对官方的Unity API进行了重构,主要功能如下: 1. 所有方法的回调均在主线程(原PomeloClient回调在Socket线程,用起来很麻烦) 2. 增加了DisconnectEvent和Error...
在“pomelo项目可以使用VS2010直接打开”的描述中,我们可以理解到该项目已适配了Visual Studio 2010的工程结构,这意味着开发者可以直接在VS2010环境下进行项目的编译、调试和管理,无需额外配置环境或转换项目文件...
pomelo-unityclient-socket 是 Pomelo 的 .NET 客户端,支持 Pomelo 0.3和新的交流协议,基于原生的 Socket。示例Unity3D demo dotnet demo API初始化using namespace Pomelo.DotNetClient string host=...
pomelo-cocos2d-js 是 Pomelo 的 Cocos2d-js 客户端。var pomelo = window.pomelo; var route = 'gate.gateHandler.queryEntry'; var uid = "uid"; var rid = "rid"; var username = "username"; ...
在某些情况下,如Windows环境下缺少VC++编译器,或者开发者对编译流程不熟悉,直接使用`npm install pomelo`命令进行安装可能会遇到编译失败的问题。为了解决这一难题,社区提供了免编译版的Pomelo框架,这个版本...
Pomelo官方的Chat Demo有Bug,Unity客户端是无法连击上服务器的。这个是修正了Bug的版本,包含了服务器和客户端全部代码。 如果要部署到远程服务器,注意要把chatofpomelo-websocket\game-server\config\servers....
为什么使用pomelo? 高并发、高实时的游戏服务器的开发是很复杂的工作。跟web应用一样, 一个好的开源容器或开发框架可以大大减少游戏开发的复杂性,让开发变得更加容易。遗憾的是目前在游戏服务器开发领域一直没有...