“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

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

  • 2012-11-20
  • 本文字数:2764 字

    阅读完需:约 9 分钟

被采访者介绍:

谢骋超,网易杭州研究高级程序专家,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.org infoq 的 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 折优惠。

2012-11-20 01:3018301
用户头像

发布了 91 篇内容, 共 35.7 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

4KMILES加入艾盛集团,以更强劲的数字商务能力,加速中国跨境电商的全域全效增长

Geek_2d6073

git 安装与体验

Jason199

git 签约计划第三季 8月月更

鲲鹏devkit开发套件

乌龟哥哥

8月月更

数据中台建设(八):数据服务体系建设

Lansonli

数据中台 8月月更

程序员常说的“左手锟斤拷,右手烫烫烫”是怎么回事?

桑榆

bug 8月月更

Nacos配置中心之事件订阅

急需上岸的小谢

8月月更

手撸Router,还要啥Router框架?让react-router/vue-router躺一边凉快去

hiisea

vue.js 前端 开源项目 前端框架 React

Java J.U.C 学习笔记-使用篇(一)

U2647

2021-Java后端工程师必会知识点-(分布式RPC框架Dubbo)

自然

RPC 8月月更

行业 SaaS 微服务稳定性保障实战

阿里巴巴云原生

阿里云 微服务 云原生 可观测

万物智联时代,悄然走入生活

这不科技

鸿蒙 OpenHarmony

一款好用的FAQ搭建工具

Geek_da0866

MOSN 反向通道详解

SOFAStack

开源 网络安全 Go 语言 社区贡献 MOSN

SRv6网络演进面临的挑战

穿过生命散发芬芳

8月月更 SRv6

开源一夏 | VuePress的简单使用

坚果

开源 8月月更

LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之二:编码实现

程序员欣宸

Java LeetCode 8月月更

什么是现场服务管理系统(FSM)?有什么好处?

优秀

企业管理系统 现场管理

关于 01 背包问题

HelloWorld杰少

8月月更

Serverless开源架构方案

阿泽🧸

Knative 8月月更

【LeetCode】使数组中所有元素都等于零Java题解

Albert

LeetCode 8月月更

磁盘管理-Linux系统磁盘管理

Albert Edison

Linux 磁盘 8月月更

线程池原理与实践|从入门到放弃,深度解析

领创集团Advance Intelligence Group

线程池 内存溢出 线程池工作原理

实现客户服务自助,打造产品知识库

Baklib

2022-Java后端工程师必会知识点-(Docker)

自然

Docker 镜像 8月月更

【高并发项目实战】千万级并发的购物车系统设计与代码详解

小明Java问道之路

架构 高可用 高并发 签约计划第三季 8月月更

C++面向对象封装特性的实例分析与应用扩展(一)

CtrlX

c++ 面向对象 后端 代码 8月月更

Axure9的元件用法

乔乔

签约计划第三季 8月月更

是什么,让中国成为一台超级计算机?

脑极体

2022-Java后端工程师必会知识点-(Lunix)

自然

Lniux 8月月更

linux重要的目录之etc

入门小站

不想当Window的Dialog不是一个好Modal,弹窗翻身记...

hiisea

前端 前端开发 前端架构 antd 前端框架

网易NodeJS开源游戏框架pomelo访谈_Web框架_彭超_InfoQ精选文章