BT

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

CNodeJS社区的Node App Engine启动内测

| 作者 崔康 关注 0 他的粉丝 发布于 2011年10月12日. 估计阅读时间: 9 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

国内知名的Node.js社区CNodeJS最近启动了其Node App Engine服务(简称NAE)的内测,用户可以在App Engine中部署发布Node.js应用,并提供mongoDB数据库存储。InfoQ中文站通过内测账号访问了Node App Engine服务,了解了部署的过程,并采访了NAE的负责人廖凯苏千

目前,NAE基于Node.js 0.5.5版提供应用托管服务。对于内测账号,最多支持创建十个应用,每个应用可以选择独立的二级域名(采用xxx.cnodejs.net的格式,例如helloworld.cnodejs.net)。对于新创建的Node.js应用,可以选择启用mongoDB数据库。

在代码管理方面,NAE支持开发人员以压缩包(gz/zip)方式上传Node.js应用代码(如果多次上传,将覆盖同名文件)。同时,NAE还提供了Git Clone/Pull和npm install的功能,方便开发人员使用第三方代码和模块。

在线编辑是NAE服务的一个亮点。开发人员可以在称为NAE IDE的Web界面中直接打开有关代码文件进行修改和保存。其中,模块标准的package.json是应用的配置文件,name表示应用名字,main表示应用的执行入口文件。在保存之后,可以点击重启按钮来即时查看修改效果。同时,在IDE界面下方有stdout和stderr输出窗口显示。除此之外,NAE还提供了一些项目管理的功能,比如待办事项、邀请成员加入等。

在应用代码部署到NAE之后,开发人员即可发布,在汇总信息一览可以近乎实时的看到应用的内存消耗、堆内存、运行时间、进程ID号等。

针对Node开发者关心的问题,InfoQ中文站采访了NAE平台的两位负责人廖凯和苏千,他们详细介绍了NAE各个方面的情况。

InfoQ:NAE项目发起的目的是什么?何时会正式上线?

node.js对于初学者的门槛还是比较高的,要完整部署整套开发和运行环境,可能会吓跑很多初学者。CNode社区一直以来的目标是推动node.js在国内的发展。因此希望搭建一个特别简单、易用、高效、适合协作开发的node应用托管平台。同时也可以为国内一些没有自己服务器的node发烧友提供一个免费的应用运行环境。在社区贡献过node技术文章的作者,都可以首批使用NAE。这样有更多的技术文章出现,也会反过来促进node的发展。

目前还没有正式的上线时间,可能会在年底会发布。当前处于内测阶段,还有很多实用功能正在开发中。

InfoQ:内测进展如何?改进了哪些问题?

目前更多侧重核心系统的稳定性、兼容性、内置模块与node模块的筛选。

已实现对95%的js原生模块无缝支持,提供基于web的开发环境,以及mongodb的存储支持,提供了比较简单的协作开发与开发者社区功能。

InfoQ:NAE上线后会继续提供免费服务吗?有何规划?

社区版的NAE永远都不会收费,只是对于使用者会有一点小小的要求,希望是真心希望学习的node初学者或者node发烧友。

目前NAE的核心引擎部分,同时已经应用在阿里云的ACE中,ACE是一个类似于GAE的商业应用开发者平台。马上NAE核心引擎也会应用在淘宝实验室(Taobao Labs)的开发者平台中,为淘宝的开放平台(T.O.P)应用提供一个快速服务托管环境。

未来也欢迎和其他机构合作,但是这并不影响社区版服务的免费。

InfoQ:NAE系统的硬件配置如何?是否能够承受企业级的负载?

核心系统自身开销很小,线上环境使用阿里云提供的一台云服务器,8G物理内存+4核CPU。Node自身性能来说已经能承受很大的负载,目前性能测试结论在hello worlds erver下可以做到17k qps,更多的scaleout/scaleup处于开发计划中。

InfoQ:对每个应用来说,NAE是否有内存、CPU等资源的上限?

内测阶段从挖掘系统潜力来说没有做过多限制,内测结束后会对cpu和内存消耗做一定限制。

InfoQ:NAE的基本架构是什么样的?用到了哪些技术?

使用全新实现的Module引擎与沙箱作为应用容器,在沙箱内利用重新实现的require函数对模块调用进行安全处理,并利用v0.5系列提供的child_process.fork功能在独立子进程中运行应用,通过注入原生net模块将端口监听映射为unix sock监听,并结合独立运行的proxy模块解决多应用监听同一端口问题。

InfoQ:NAE为何选择mongoDB数据库?对于其他数据库的支持如何?

mongoDb简单易用,扩展性与功能都比较符合目前web开发的需求,且本身和js的结合比较好。

原则上有可用modules的数据库均可直接支持。

InfoQ:目前NAE上有哪些出色的应用可以演示?

目前已知的有趣应用:  (估计还有一些参加CNodejs大赛的应用还没暴露出来。)

在线书法:http://sufa.cnodejs.net/
协助画图:http://paint.cnodejs.net/
qchat:http://qchat.cnodejs.net/
随机聊天:http://talk.cnodejs.net/
天气API:http://weather.cnodejs.net/
NodeBook:http://nodebook.cnodejs.net/
NR牛博:http://nrblog.cnodejs.net/
缩短网址还原:http://urlrar.cnodejs.net/
NodeBlog:http://blog.cnodejs.net/
关键词日记: http://keydiary.cnodejs.net/

InfoQ:NAE未来(一年内)会增加哪些新功能?

包括动态扩容、版本控制、web ide的完善与debug支持、协作开发、日志API、存储API、命令行工具、开发者社区等。

InfoQ:对Node.js的学习者有何建议?

js基础很重要;了解ecmascript 5;开发思路的转换(同步串行到异步并行);用于尝试,勤于测试。

开发人员在使用NAE时,需要注意一些事项:

  • 系统node使用v0.5.5版,使用时请注意与0.4.x的功能区别。
  • 使用fs对文件进行写操作会触发整个文件的重新上传, 在写大文件时请慎重使用。
  • 如有日志方面需求请暂时使用标准输出(stdout/stderr)实现, 很快将开发日志操作API。

默认支持的第三方模块包括:

  • express
  • connect
  • mongoskin
  • mongoose
  • mysql-libmysqlclient
  • jade

如需使用其他模块请放入$app_home/node_modules即可。

另外,禁用的API有:

  • child_process
  • net.listenFD()
  • net.listen() 仅支持port与callback参数, 不支持监听unix domain sock与指定监听ip
  • fs.rename() / fs.renameSync() 不支持对目录进行操作
  • fs.link() / fs.linkSync()
  • fs.symlink() / fs.symlinkSync()

更多有关Node.js的新闻和文章可以查看InfoQ中文站的相关链接

评价本文

专业度
风格

您好,朋友!

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

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的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通知我

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

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

讨论

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


找回密码....

Follow

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

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

Like

内容自由定制

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

Notifications

获取更新

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

BT