pomelo
文章平均质量分 75
超級码力
Keep Reading , Keep Writing , Keep Coding.
展开
-
pomelo源码解析--新建项目(cli工具: pomelo)
pomelo怎么新建项目官方文档1. 安装pomelo2. 新建项目HelloWorld我简单整理了下创建新项目关键步骤:安装pomelo方式一:$ npm install pomelo -g·方式二:$ git clone https://github.com/NetEase/pomelo.git$ cd pomelo$ npm install -g·注:如果npm安装特别慢,安装国内淘宝镜像cnpm,此后的命令我们可以用cnpm 来替代 npm。安装命令如下:npm原创 2021-07-29 00:04:50 · 776 阅读 · 0 评论 -
pomelo源码解析--启动项目(pomelo start)
);// 最后实际执行app.js function start(opts) {if(!if(!} var ls;if(!!} else {});});} }原创 2023-02-02 13:16:06 · 629 阅读 · 0 评论 -
pomelo记录一
减少消息数量 — 消息只发送给能看到的玩家。玩家能看到的只是屏幕的大小,而不是整张地图的大小,这样推送消息的时候可以只推给对自己的状态感兴趣的玩家。这个可以用 AOI(area of interested)算法来实现,在 pomelo 的库 pomelo-aoi 中实现了简单的灯塔算法。尽量分进程,进程的粒度越少,出现 tick 超时或 full GC 的可能越少,一定要控制内存大小。在多核时代里,CPU 是最廉价的资源。常规MMO游戏服务器架构:运行架构说明:客户端通过 websocket .原创 2020-07-20 14:09:35 · 2652 阅读 · 0 评论 -
Pomelo的分布式部署方法(以LordOfPomelo为例)
Pomelo的分布式部署(以LordOfPomelo为例)分布式部署的方法和步骤1. 系统及应用软件环境搭建和配置所有参与分布式部署的机器:必须为同类操作系统(建议为完全相同的操作系统, 本文所示例的4台机器的操作系统均为"Debian GNU/Linux 7.0").必须都有一个同名的用户(如:"pomelo"等, 本文所示例的4台机器均有一个名为"pomelo"的用户).Node...原创 2019-03-26 14:33:07 · 1595 阅读 · 0 评论 -
Pomelo的master服务器高可用(以LordOfPomelo为例)
Pomelo的master服务器高可用(以LordOfPomelo为例)使用master高可用的方法和步骤1. 启动和配置zookeeper相关服务$ zkServer.sh start在lordofpomelo/game-server目录下执行./scripts/createZKMasterhaNode.js或者./scripts/createZKMasterhaNode.js /p...原创 2019-03-26 14:33:19 · 957 阅读 · 0 评论 -
工具和库的使用--pomelo命令行工具
概述命令行工具pomelo是Pomelo框架提供的一个小工具,该工具能够帮助开发者更便捷、更有效率地进行应用开发。该工具包括的命令支持绝大多数的应用开发操作,包括创建初始项目、启动应用、停止应用、关闭应用等。用户可以通过pomelo --help命令查询相关命令及其使用说明。命令行安装当使用如下命令安装Pomelo的时候,pomelo会自动安装在相应的bin目录下:$ npm instal...原创 2019-03-26 14:33:34 · 840 阅读 · 0 评论 -
工具和库的使用--pomelo-cli
##pomelo-cli 交互式命令行pomelo-cli 提供了一个交互式命令行,开发者可以使用这个工具对使用pomelo框架开发的应用和服务进行运维安装npm install -g pomelo-cli登录使用命令pomelo-cli -h host -P port -u username -p password 默认的pomelo-cli登录参数pomelo-cli -...原创 2019-03-26 14:33:45 · 825 阅读 · 0 评论 -
工具和库的使用--pomelo-admin-web
pomelo-admin-web 是 pomelo 框架中基于pomelo-admin开发的web端监控的模块,可以通过 web 端的方式来对游戏服务器集群的运行状态,性能,日志等进行实时的监控,它采用‘类插件’的开发模式,开发者可以很方便的扩展具体的监控模块逻辑,目前在 adminConsole 中,集成的监控模块有如下几个:systemInfo用于监控各个服务器上的系统信息,包括 l...原创 2019-03-26 14:33:56 · 1136 阅读 · 0 评论 -
工具和库的使用--pomelo-daemon
##pomelo-daemonpomelo-daemon 提供了一个 daemon 服务,可以用这个服务来进行分布式部署以及日志收集安装npm install -g pomelo-daemon使用启动pomelo集群在服务器上面部署代码把servers.json上面的host配置称为正确的host,而不是 ‘127.0.0.1’在config文件夹下面添加daemon.json...原创 2019-03-26 14:34:05 · 341 阅读 · 0 评论 -
工具和库的使用--pomelo-robot
#pomelo-robotpomelo-robot 是一个用来对pomelo游戏服务器框架进行性能测试的工具, 也可以测试其他基于socket.io服务的性能.该模块可以采用单机或者分布式测试两种模式.#功能对游戏项目进行自动化的性能测试和分析, 为游戏服务器提供机器人及其运行脚本, 最终输出性能测试分析报告.pomelo-robot 模块通过沙箱的方式执行用户自定义的JS脚本. 运行过...原创 2019-03-26 14:34:16 · 1593 阅读 · 0 评论 -
工具和库的使用--pomelo-sync
概述pomelo-sync模块用于解决游戏进程中需要持久化的数据在内存和存储系统之间的同步问题. 该模块为上述的数据同步需求提供了一种异步的实现方式, 并可以根据用户配置, 定时的将数据同步到持久层(如MySQL, Redis, 磁盘文件等).应用场景在游戏进程中, 需要进行大量的数据更新与同步(如角色的位置坐标, 血量, 装备属性等). 如果频繁的操作数据持久层, IO操作的开销就会很大....原创 2019-03-26 14:34:27 · 749 阅读 · 0 评论 -
Pomelo使用参考手册
基本使用rpc调用方法handler调用session绑定消息回复(next调用)消息发送(channelservice的使用)增加不同类型的服务器protobuf使用字典压缩使用组件功能及配置说明connectorconnectorencodedecodeuseCryptoblacklistFunuseDictuseProtobufssldisconnect...原创 2019-03-26 14:34:38 · 3763 阅读 · 0 评论 -
pomelo客户端API
使用pomelo做服务端开发时,无论什么客户端,只要能遵循与服务端的线上协议,就能够与服务端建立通信。pomelo内建提供的sioconnector和hybridconnector都定义了自己的协议格式,其中sioconnector用于socket.io的通信,hybridconnector则用来处理websocket和tcp的连接通信。为了方便客户端的开发,pomelo提供了部分平台的客户端SD...原创 2019-03-26 14:34:47 · 844 阅读 · 0 评论 -
pomelo客户端开发
使用pomelo做服务端开发时,无论什么客户端,只要能遵循与服务端的线上协议,就能够与服务端建立通信。pomelo内建提供的sioconnector和hybridconnector都定义了自己的协议格式,其中sioconnector用于socket.io的通信,hybridconnector则用来处理websocket和tcp的连接通信。为了方便客户端的开发,pomelo提供了部分平台的客户端SD...原创 2019-03-26 14:32:54 · 2093 阅读 · 0 评论 -
pomelo插件
为了方便开发者根据自身的需求对pomelo原有的功能进行有效的扩展,pomelo在0.6版本提供了一种灵活的插件机制。Plugins在pomelo 0.6版中,已开发完成组件包括:pomelo-sync-plugin,pomelo-globalchannel-plugin,pomelo-status-plugin,pomelo-masterha-plugin;另外可以参考使用插件机制完成的 c...原创 2019-03-26 14:32:38 · 703 阅读 · 0 评论 -
pomelo风格及惯例约定
pomelo 有自己的风格以及一些约定,下面对其进行了简单的总结:pomelo是一个框架,因此我们再编写的代码都是用来配置框架的,特别是要求我们自己定义一些框架所需的回调方法。在pomelo中,无论是component,handler,filter,module,remote等等,它们在导出的时候,往往都会导出一个工厂函数,而不是直接导出对象,这样的话,就能够进行上下文的注入,同时在加...原创 2019-03-25 09:43:20 · 265 阅读 · 0 评论 -
框架分析--框架的类关系图
下面将呈现pomelo框架中,较为核心的非正规的类关系图,先来看一下对类图的一些说明:由于javascript中实际上没有类的概念,有的只是一个pseudo-class的概念,因此这个类关系图中的类并不是与实际的pomelo框架中所定义使用的pseudo-class一一对应。比如,HandlerFilter,在我们这个类图中,它是一个抽象类,是所有HandlerFilter的基类。而在pom...原创 2019-03-25 09:44:41 · 1532 阅读 · 0 评论 -
框架分析--框架组件概述
我们知道,pomelo的应用程序执行的全部过程,就是对其相应组件的生命周期的管理,实际的所有逻辑功能均由pomelo组件提供。pomelo内建提供了十多个组件,这些组件适用于不同的服务器,提供不同的功能。有些组件提供的功能比较复杂,有些则比较简单。下面我们将以提供的功能为主线来阐述pomelo提供的内建组件。master组件master组件仅仅由master服务器加载,它主要的功能包括启动所有...原创 2019-03-25 09:48:23 · 1152 阅读 · 0 评论 -
框架分析--框架驱动
使用pomelo开发应用时,我们一直关注的是给框架填入相应的回调,给app配置一些上下文。而没有太多关心整个框架的驱动力量。 在我们启动应用的时候,我们会在game-server目录下执行pomelo start,然后就能看到很多log信息,这样就启动了很多服务器。但是我们并没有太多关心框架是如何做到这一点的,在这部分,将试图向你讲述pomelo框架是如何驱动的。首先看下图:这张图是以cha...原创 2019-03-25 09:52:36 · 470 阅读 · 0 评论 -
框架分析--master组件、monitor组件与服务器管理框架
在前面的介绍中,我们知道pomelo支持动态地增加以及删除某一个服务器,于是我们会问当增加一个应用服务器的时候,已经启动的应用服务器是怎么知道新增加了一个服务器的;当停止某个服务器时,其他服务器又是怎样获知这些消息,并使得以后的rpc或者消息不路由到已经停止的服务器的。还有,如果查看整个服务器群的信息,或者整个服务器群的运行状态。诸如此类的问题,pomelo提供了一个管理框架,通过对这个框架进行扩...原创 2019-03-25 09:56:09 · 1685 阅读 · 0 评论 -
框架分析--server、connector等组件与客户端通信
在这部分,主要介绍pomelo是如何与客户端通信以及前端服务器是如何处理用户请求的。处理客户端的请求和响应是pomelo的核心之一,它涉及到了很多组件,包括session组件,server组件,connection组件,connector组件,proxy组件,remote组件等。在本部分,我们仅仅介绍与前端服务器相关的组件,以及他们的作用,对于rpc以及后端服务器以来的backendSession...原创 2019-03-25 09:59:09 · 1087 阅读 · 0 评论 -
框架分析--channel组件、backendSession组件与后端服务器
在这部分,我们继续讨论与用户请求相关的内容。后端服务器中是用来处理用户请求的具体逻辑的地方,当前端服务器接收到来自客户端的请求时,通过分析请求的路由,并做简单的校验表明路由是合法的,那么前端服务器就会根据路由策略配置,选择某一后端服务器,发起rpc调用。后端服务器的所有调用请求均来自前端服务器的rpc调用。当后端服务器发起filter-handler链对前端服务器分派过来的请求进行处理时,如果仅...原创 2019-03-25 10:00:51 · 825 阅读 · 0 评论 -
框架分析--proxy组件、remote组件与rpc调用原理
在这部分,我们将讨论关于rpc调用相关的问题。在pomelo中rpc的调用主要是通过proxy组件和remote组件实现,其中proxy组件主要负责创建rpc客户端代理,让开发者在pomelo中更方便地进行rpc调用;remote组件主要负责加载rpc服务,包括系统的rpc服务和用户的rpc服务。Pomelo的rpc框架主要解决了两个问题,第一个就是进程间的路由策略,第二个则是rpc底层的通信协议...原创 2019-03-25 10:04:31 · 972 阅读 · 0 评论 -
框架分析--dictionary组件、protobuf组件与消息压缩
在实际编程中,为了减少数据传输带宽的消耗,提高传输效率,pomelo提供了对消息的压缩,包括基于字典的对route的压缩和基于protobuf的对具体传输数据的压缩。route压缩在实际编程中,网络带宽的有效数据负载率是一个值得考虑的问题。特别地,对于移动客户端来说,网络资源往往并不是很丰富,为了尽可能地节省网络资源,往往需要尽大可能地增加数据包的有效数据率。route问题在pomelo编...原创 2019-03-25 10:15:48 · 949 阅读 · 0 评论 -
pomelo日志管理
日志管理pomelo 日志是通过 pomelo-logger 模块来管理的,pomelo-logger 是对 log4js 的简单封装,并提供了一些非常有用的 feature。日志是通过 category 来进行管理与维护的,可以在log4js.json文件中进行配置{ "appenders": [ { "type": "console" }, { ...原创 2019-03-25 10:51:28 · 2328 阅读 · 0 评论 -
深入connector
在与客户端通信的时候,pomelo目前提供了hybridconnector和sioconnector,其中hybridconnector支持tcp,websocket;sioconnector支持socket.io。但是实际编程中,只有这些connector可能还无法满足我们的需求,我们可能需要自己定制自己的connector,pomelo提供了定制connector的接口,在这部分就是要说明这个...原创 2019-03-26 14:31:38 · 1228 阅读 · 0 评论 -
通信协议格式
pomelo核心提供了两种connector,sioconnector和hybridconnector。其中sioconnector基于socket.io,使用json作为其通信格式,hybridconnector则用于tcp/websocket的通信,它底层使用的是二进制协议。虽然在sioconnector中,socket.io的实现很好,对于超时、握手等都做了处理,并且使用json作为通信格式...原创 2019-03-26 14:32:03 · 4451 阅读 · 0 评论 -
pomelo应用程序配置
在这部分,我们来介绍如何配置框架。我们知道在pomelo中,可以配置各个组件的选项,加载配置文件,开启pomelo的特性等等。这一切配置都是在game-server/app.js中进行的。实际上,在pomelo的应用中有两个app.js,一个在game-server目录下,一个在web-server目录下。其中game-server下的app.js是整个游戏服务器的入口和配置点,而web-serv...原创 2019-03-26 14:32:21 · 623 阅读 · 0 评论 -
pomelo架构概览
为什么使用nodejs?为什么使用nodejs开发游戏服务器,大体总结下面几点:1.io上优势。io密集的应用使用nodejs是最合适的,可达到最好的可伸缩性。2.多进程单线程的框架。使它在处理复杂逻辑的时候无需考虑线程同步、锁、死锁等一系列问题, 减少了很多逻辑错误。 由多进程node.js组成的服务器群是最理想的应用架构。3.语言优势。使用javascript开发可以实现快速迭代,如果...原创 2018-11-29 23:26:06 · 1261 阅读 · 0 评论