网易NodeJS开源游戏框架pomelo访谈

被采访者介绍:

\

谢骋超,网易杭州研究高级程序专家,2006年浙江大学硕士毕业后加入网易,参与过网易博客开发,主持过博客圈子,及开放平台等开发,2年前转向游戏开发领域。 专注于服务端开发技术,对高性能高并发网站(游戏)的架构设计、调优有较丰富经验。 对node.js与java开发有丰富的经验。目前是pomelo开源游戏框架负责人。微博: @圈圈套圈圈 twitter: @xiecc

\

谢骋超曾在9月份的HuJS活动中分享过“Node.js游戏服务器开发 ”的话题。目前他准备对相关研究成果pomelo框架进行开源发布,InfoQ对其进行了专访。

\

InfoQ:能不能介绍一下pomelo的起因及发展历程?

\
\

从2011年下半年开始, 我们在游戏开发上有了些积累,希望在游戏服务器上有更前沿的研究,在技术选型时我们比较了erlang, node.js,java等多种语言,发现node很适合做开发游戏服务器,它的事件IO模型与单线程应用模型跟游戏服务器简直是绝配。于是在2011年11月, 我们正式立项并取名项目为pomelo。

\

项目的开发经历了原型、框架开发、demo开发,性能优化, 不断重构、调优、整理等几个阶段。

\

我们的原型开发只经历了一个月, 当时做了个很简单的捡宝游戏; 框架的抽取和开发是项目最难的阶段, 要定义抽象出框架模型很难, 而且我们是多进程的应用框架, 完全没有蓝本参考, 到了2012年4月终于完成了框架雏形;之后的demo开发比较快, 我们用了一个半月时间就搭建了一个HTML5客户端的网页版的MMORPG, 并在6月底的node party上小试牛刀了一把;然后我们用了两个月时间做压力测试和性能调优,做了一些性能优化的工具,并把遇到的性能瓶颈都解决了;到了9月之后我们的主要工作就是重构、文档, 不断地优化接口,并在11月20日左右开源我们的框架。

\
\

InfoQ:给这个框架命名为“pomelo”的含义是什么?它有什么特点?

\
\

pomelo的中文含义是柚子, 当时是想借某水果公司的光环,而且这个名字够短, 读起来也有点酷酷的感觉。我们的logo是切成两半的柚子, 代表着分享、开源。

\

pomelo包含了框架、工具集、库三部分。它最大的特点是将易用性和可伸缩性结合得非常好,我们会发现写一个非常复杂的多进程游戏运行架构只需要很少的代码。

\
\

InfoQ:请介绍一下pomelo在网易的使用情况吧。另外你觉得它最适合的应用领域是什么?

\
\

pomelo到现在为止刚刚一年,刚刚可以使用,目前公司内部的一些团队正在试用, 但还没有在网易线上的游戏中使用。 它最适合的应用领域是网页游戏、社交游戏、移动游戏的服务端,开发者会发现pomelo可以用如此少的代码达到强大的扩展性和伸缩性。 当然还不仅仅是游戏,很多人断言未来的web时代是实时web应用的时代, 我们发现用pomelo开发高实时web应用也如此合适, 而且伸缩性比其它框架好。

\

我们不推荐将pomelo用于大型的MMO rpg游戏开发,尤其是3d游戏, 还是需要象bigworld这样的商用引擎来支撑。

\
\

InfoQ:pomelo面向的群体是哪些人?要掌握其使用需要哪些技能?有哪些资源可供开发者学习和应用?

\
\

pomelo面向的群体是国内外网页、移动、社交游戏的开发团队,或开发高实时web应用的团队,即使以前没有游戏开发的经验,通过简单的学习也很容易上手。

\

pomelo的目标是让本来游戏开发经验不多的人能迅速上手开发游戏,而且做出的游戏天然有很强的扩展性和可伸缩性,可直接在产品环境上跑,而不象一些游戏教程只能做出支撑很少在线用户。

\

开发者需要掌握javascript和node.js的开发知识, 也要学习一下pomelo框架。幸好这几项技术都比较容易上手, node.js的异步事件io需要一点点时间适应, 但这样的学习完全是值的。

\

node.js的学习可以去node.js官网: nodej.org,cnode社区 cnodej.orginfoq的node社区内容也不错,howtonode是个不错的学习博客,只是最近更新稍慢。

\

pomelo的学习可以去我们的wiki, pomelo的官方网站,和pomelo的github

\
\

InfoQ:现在有没有和pomelo类似的框架?能否请比较一下他们的优势与劣势?

\
\

目前没有发现与pomelo完全类似的框架, 尤其将多进程应用架构和服务器扩展做的这么简单,属完全创新。

\

游戏服务器框架在社区范围里乏善可陈, SmartfoxServer算是一个不错的了,但它是商用的,而且它是基于jvm的单进程架构,可伸缩也打了折扣。

\

Bigworld则是很强大的商用3d游戏引擎(涵盖服务端、客户端)。Bigworld更适合大规模的游戏开发,但时间,复杂度,成本等比较高。pomelo的优势是开源,简单,快速开发,可以让使用者很快地开发出并发布他们自己的游戏,并能很灵活地规划调整服务器资源,支撑的游戏类型和规模也不错。

\

在高实时web应用领域,有derby,meteor, SocketStream, 但跟pomelo的关注点很不一样,它们基本都是单进程架构,核心关注点是web应用的实时数据同步。

\
\

InfoQ:能否讲讲关于pomelo的理念及实现?

\
\

pomelo的第一个理念是让游戏(高实时web应用)服务器的开发变得非常简单, 而不是解决某类算法或系统上的难题。这个设计理念跟rails是很类似的。

\

第二个理念是重视性能和可伸缩性,用户用pomelo开发出来的游戏天生具有很强的伸缩性,扩展也很容易。我们在性能优化上也花了很多功夫,并且会持续进行。

\

第三个理念是让第三方很容易扩展,框架用了很多插件式的设计, 组件component、路由规则、甚至管理控制台都可以完全由第三方扩展。

\
\

InfoQ:我们注意到pomelo已经准备好了项目英文站点,是打算将pomelo做全球推广吗?

\
\

是的, 我们认为目前的开源产品必须走国际化的路线,目前国外的开源环境也比国内好。况且node社区和github是非常活跃的社区, 通过与国外开发者的沟通和交互,可以使我们最快地完善我们的开源框架。

\

另外,我们的设计理念和架构在国际社区里也是领先的,可以去国际开源社区试一试。

\
\

InfoQ:最后一个问题,有没有什么意见或者建议给转用Node的开发者?

\
\

首先, 对于非node的开发者,建议无论如何看一看node的开发模型,了解一下,也许哪天你就会用到;异步编程也没那么可怕,很多关于异步代码太丑, 甚至异步反人性的言论, 只是因为他们还没有深入去用,用node完全可以写出很漂亮的代码。

\

对于node的开发者,

\

一、多看资料,多实践 。对于入门学习的,可以看node.js in action等书籍,如果过了入门阶段,建议去mailing list或youtube上看视频可以学到更深入的内容。

\

二、多来社区交流, node社区, cnode社区,node party,jsconf中国(今年叫沪js,明年可能叫京js),github,沟通很重要。

\
\

谢骋超之后会对pomelo框架的技术细节做详尽解析。请关注InfoQ的后续技术文章。

\

另外,QCon北京2013亦与时俱进,新增了Node专场。Node现在到底只吸引了眼球,还是在企业中已经成熟落地广为应用?敬请关注此次QCon,聆听诸多一线专家在各个场景应用Node的经验。11月25日前报名,可享6折优惠。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node.js是一个开源的JavaScript运行时环境,可以在服务器端运行JavaScript代码。它由Ryan Dahl于2009年创建,并基于Chrome的V8 JavaScript引擎构建。Node.js的设计目标是提供一种高效且可扩展的方式来构建网络应用程序,它采用事件驱动、非阻塞I/O模型,使得它能够处理大量并发连接而不会导致性能下降。Node.js拥有一个庞大的开源生态系统,有许多优秀的开源项目供开发者使用和参与贡献。其中一些著名的Node.js开源项目包括: 1. Express.js:它是一个快速、灵活和精简的Web应用程序框架,可以帮助开发者快速构建高性能的Web应用程序。 2. Socket.io:它是一个实时通信库,可以使得服务端和客户端之间进行双向的实时通信,非常适用于构建实时聊天、实时协作等应用。 3. Sequelize:它是一个强大的ORM(对象关系映射)库,可以帮助开发者更方便地操作数据库,支持多种数据库类型。 4. Nest.js:它是一个用于构建高效且可扩展的服务器端应用程序的渐进式框架,结合了Angular的开发理念和Node.js的优势。 5. PM2:它是一个进程管理工具,可以帮助开发者管理和监控Node.js应用程序的运行状态,包括自动重启、负载均衡等功能。 这些开源项目在Node.js社区中得到了广泛的应用和推广,为开发者提供了丰富的工具和库来简化开发过程,提高开发效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [NodeJS开源项目---很强大](https://blog.csdn.net/zzzkk2009/article/details/17371603)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Node 应用篇!推荐 10 个好用的 Node 的开源项目 YYDS](https://blog.csdn.net/m0_49394096/article/details/123196394)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值