ArchSummit全球架构师峰会全新主题——「智能进阶·架构重塑」>>> 了解详情
写点什么

网易 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:3018278
用户头像

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

关注

评论

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

搞懂设计模式——代理模式 + 原理分析

京东科技开发者

jdk 代理 cglib 框架 企业号 2 月 PK 榜

Elasticsearch dynamic_templates 实战 通用配置

alexgaoyh

elasticsearch dynamic_templates index template

区块链DEFI质押挖矿系统开发流程丨土狗币智能合约系统开发源码方案

I8O28578624

Spring Data + DDD = 王炸!!

程序知音

前端leetcde算法面试套路之树

js2030code

JavaScript LeetCode

从历代GC算法角度刨析ZGC

京东科技开发者

ZGC JVM GC算法 垃圾回收算法 企业号 2 月 PK 榜

react源码分析:babel如何解析jsx

flyzz177

React

前端leetcde算法面试套路之堆

js2030code

JavaScript LeetCode

简单好上手!1分钟带你体验Apipost

叶小柒

携程MySQL迁移OceanBase最佳实践|分享

OceanBase 数据库

数据库 oceanbase

量化Python交易系统开发技术,合约量化系统开发源码部署方案

I8O28578624

【IntelliJ IDEA】idea常用快捷键汇总

No8g攻城狮

IDEA intellij IntelliJ IDEA

我们从 CircleCI 安全事件获得的3个经验教训

SEAL安全

安全 软件供应链 企业号 2 月 PK 榜 端点保护 恶意软件检测

动态防御|零信任安全的自动化枢纽

权说安全

网络安全 零信任 动态防御

同步计数器设计与建模

timerring

FPGA

【IntelliJ IDEA】idea中的插件之一:Free Mybatis plugin跳转插件的使用(方便在Dao接口和Mappper XML文件之间进行切换)

No8g攻城狮

插件 IntelliJ IDEA

chatgpt背后的人工和智能

刘旭东

ChatGPT

云小课|GaussDB(DWS)数据存储尽在掌控,冷热数据切换自如

华为云开发者联盟

开发 华为云 数据存储 企业号 2 月 PK 榜 华为云开发者联盟

用 AI 取代人工?或许 LLMs 可以给你答案

鼎道智联

#人工智能

Flomesh Ingress 使用实践(三)多租户 Ingress

Flomesh

命名空间 多租户 ingress Ingress Controller

react源码中的协调与调度

flyzz177

React

一文详解TensorFlow模型迁移及模型训练实操步骤

华为云开发者联盟

人工智能 华为云 昇腾AI 企业号 2 月 PK 榜 华为云开发者联盟

用javascript分类刷leetcode21.树(图文视频讲解)

js2030code

JavaScript LeetCode

KCL 与其他 Kubernetes 配置管理工具的异同 - Helm 篇 - Helm 篇 [一个自研编程语言能做什么?(系列 3)]

Peefy

Kubernetes DevOps 编程语言 #开源

Node.js 应用全链路追踪技术——全链路信息存储

vivo互联网技术

nodejs OpenTracing zipkin

A100 买不到了,只有小显卡怎么训大模型

MegEngineBot

深度学习 开源 大模型 显卡、gpu MegEngine

react源码中的生命周期和事件系统

flyzz177

React

Flink Table Store 典型应用场景

Apache Flink

大数据 flink 实时计算

高性能存储SIG月度动态:ublk完成POC、dsms-storage在Anolis OS上成功适配

OpenAnolis小助手

技术 高性能存储 龙蜥社区 sig 月报

直呼牛逼!阿里最新SpringBoot进阶笔记涵盖了SpringBoot所有骚操作

程序知音

Java ssm springboot Java后端 Java进阶

ITSM | Atlassian被Gartner评为IT服务管理平台魔力象限的领导者

龙智—DevSecOps解决方案

Atlassian ITSM Gartner

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