pomelo使用手册.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
pomelo使用手册

adminConsole 开发文档adminConsole 有三种角色,分别是 master,monitor,clientmaster : 运行在master进程中,监听端口等待monitor和client的连接。主要负责维护所有已注册的连接,消息路由和处理,以及缓存服务器集群状态信息。monitor : 运行在各个需要监控的服务器进程中(包括master进程)。启动后连接并注册到master,主要负责收集被监控的进程信息,向master汇报。client : 运行在admin console的web页面。启动后连接并注册到master。主要负责响应用户操作和呈现master返回结果。三者之间通讯的消息分为两类:需要响应的消息request和不需要响应的消息notify。request:如单点请求某一具体服务器上面的信息。notify:如收集服务器状态信息的消息。 request消息格式定义: { id: 消息id,标志请求和响应的对应关系。Notify不需要这个字段; moduleId: 消息的路由字段,指明处理该消息由哪个模块处理; body: 消息内容,处理消息所需的key/value数据 } notify消息格式定义: { moduleId: 消息的路由字段,指明处理该消息由哪个模块处理; body: 消息内容,处理消息所需的key/value数据 }类说明consoleService是整个监控模块的总入口,master和monitor上都需要创建。各个进程向consoleService注册各自的module。ConsoleService根据当前服务器类型,创建底层的agent实例,并负责agent的启动和关闭。consoleService同时也充当了map的角色,缓存收集到的状态信息。masterAgent在master进程中启动,负责底层网络通讯相关工作。如:监听端口,接收monitor和client连接,分组维护这些连接以及将消息推送给指定的接收者等。monitorAgent在各个需要监控进程中启动(包括master进程)。启动后连接并注册到masterAgent,负责与masterAgent之间的通讯。module监控模块接口,实现监控相关的具体逻辑。定义三个回调接口,分别对应于master,monitor和client上的逻辑。自定义监控模块开发adminConsole 采用‘类插件’的开发模式,因此为 adminConsole 开发一个新的监控模块是很容易的下面就通过一个 adminConsole helloPomelo 模块来进行说明通过请求该监控模块,我们可以从游戏服务器集群中,得到 xxx hello Pomelo (其中 xxx 指的是 serverId)进行开发前请先仔细阅读上面的介绍文档以及?/NetEase/pomelo/wiki/adminConsole-%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3adminConsole-api-文档首先我们要在项目路径下 game-server/app/modules/ 文件夹下面新建一个 helloPomelo.js 文件var Module = function(app, opts) { opts = opts || {}; this.type = opts.type || pull; // 设置该参数,表明该模块监控是由 master 主动拉数据 erval = erval || 5; //master 主动拉数据间隔};Module.moduleId = helloPomelo;module.exports = Module;Mtotype.monitorHandler = function(agent, msg) { var word = agent.id + hello pomelo; //把 monitor 监控的数据 notify 给 master agent.notify(Module.moduleId, {serverId: agent.id, body: word});};Mtotype.masterHandler = function(agent, msg) { //如果没有消息,则notify 所有的 monitor 拉取数据 if(!msg) { agent.notifyAll(Module.moduleId); return; } //收集从 monitor 拉取的数据 var data = agent.get(Module.moduleId); if(!data) { data = {}; agent.set(Module.moduleId, data); } data[msg.serve

文档评论(0)

kabudou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档