BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

超低数据传输量,服务器端动态扩展——Node.js开源游戏框架升级至0.3版

| 作者 彭超 关注 0 他的粉丝 发布于 2013年3月8日. 估计阅读时间: 5 分钟 | QCon北京2018全面起航:开启与Netflix、微软、ThoughtWorks等公司的技术创新之路!

亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要资讯的邮件和网页通知

在这个广大女性可以放假半天的特别节日里,网易杭州研究院的小伙子们没能休息,反而热火朝天的发布了GitHub上广受好评的Node.js游戏框架pomelo的最新版本0.3版。

如果你还不了解这款“柚子”框架,请参见InfoQ对框架作者,杭州网易研究院高级研究员谢骋超的专访: 网易NodeJS开源游戏框架pomelo访谈,及他在InfoQ连载的“深入浅出node.js游戏服务器开发”系列文章。

值得一提的是谢骋超也是本届QCon北京2013大会的受邀演讲嘉宾,将会在Node.js专题中分享Pomelo框架的心得体会。

下面让我们了解一下pomelo框架的更新内容:

Pomelo 0.3版为移动端性能优化做了很多工作, 新协议的数据包压缩后的传输量仅为0.2版的20%, 并保留了0.2版基于socket.io的传输协议。socket.io对开发浏览器端器端的实时应用非常适合,而socket(websocket)、protobuf、二进制等协议则对移动端、桌面客户端的开发更具优势。pomelo对它们的同时支持使同时支持浏览器、移动、桌面客户端的高实时应用或游戏变得非常容易。下面让我们看看pomelo的新版本特性:

1. 新协议支持

0.3版Pomelo开始支持二进制协议,并支持对请求route的字典压缩和请求内容进行protobuf压缩。0.3版同时兼容以前版本基于socket.io的通讯协议。通过在应用中配置不同的connector component来实现协议的切换或共存。

目前Pomelo服务器提供两类connector:sioconnector和hybridconnector,分别对于基于socket.io和二进制的通讯。

2. 动态服务器扩展

Pomelo 0.3版开始支持动态增加和移除服务器进程机制,并提供相应的命令行工具。每台新增的服务器都会连接到master服务器上进行注册。Master再将新服务器的信息广播给集群中的所有服务器进程。原有的服务器进程再对新增服务器事件进行响应。

当一个服务器进程接收到一个新增服务器的消息后,会将该服务器信息保存到本地的app上下文中,之后可以通过app.getServers等系列方法查看到新服务器的信息,从而影响之后的消息路由。

如果新加的服务器的类型之前尚未存在于app上下文中,Pomelo会尝试着为其创建对应的rpc代理对象。如果该类型服务器需要提供rpc服务,则需要在约定的目录(servers/server-type/remote/)下提供rpc服务代码。

动态移除服务器进程的流程也与上面类似,当服务器断开与master的连接后,master会将该服务器的信息广播给其他进程,其他进程再进行相应处理。

3. 其他新特性

  • servers.json配置文件的修改:随着Pomelo支持协议的增多,配置文件原先定义的wsPort(代表websocket port)已不适用,现调整为clientPort。
  • 3.2 新增channel广播接口:ChannelService新增broadcast接口,适用于给全世界广播的场景。
  • 新增session获取接口:LocalSessionService新增根据session id获取localSession接口get和根据user id获取localSession接口getByUid。
  • javascript客户端支持:
    • 支持两类javascript客户端 --- socket.io与websocket:目前socket.io与websocket两套协议在javascript都有用武之地。socket.io的兼容好,可以适应各种浏览器,适合开发类似聊天室这样的高实时应用。websocket客户端则在数据压缩上做到了很多优化,大大减少了消息的传输量,适合开发基于HTML 5的游戏应用。
    • 客户端javscript build系统:以前的pomelo-jsclient版本管理异常混乱, 经常将好几个文件复制到不同的项目各自修改。因此我们引入了component来管理js的库。 客户端js代码目前采用以component的形式统一管理与维护。
  • 其它客户端支持:
    • 提供新的C客户端,支持socket协议,基于libuv开发,提供了完整的数据与消息压缩, 支持cocos2d-x
    • 其余客户端,如flash,android, ios, unity3d, 目前还只支持socket.io协议,后续会推出基于socket协议客户端

关于pomelo此次升级的其他相关文章,可以参考该项目的GitHub页面:

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

前言写的很好 by chengchao xie

三八节发布Pomelo, 哈哈

NB! by 刘 卫军

祝愿pomelo越做越好!吼吼……

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT