写点什么

CNodeJS 社区的 Node App Engine 启动内测

2011 年 10 月 11 日

国内知名的 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 中文站的相关链接

2011 年 10 月 11 日 08:565210
用户头像

发布了 501 篇内容, 共 214.3 次阅读, 收获喜欢 29 次。

关注

评论

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

Apache Pulsar 社区周报:09-26 ~ 10-09

Apache Pulsar

大数据 开源 云原生 Apache Pulsar 消息中间件

程序员上班打工的认识误区

陆陆通通

程序员 打工

程序员黄金年龄25-28岁,我们30+的人该去哪儿?附华为案例;

Java架构师迁哥

打通IO栈:一次编译服务器性能优化实战

AI乔治

Java 编程 架构 io 高性能

Flink周期性水位线分配器-6-3

小知识点

scala 大数据 flink

如何花“一点点小钱”突破华为云CCE服务的“防线”

华为云开发者社区

容器 k8s

ClickHouse最佳实战之分布表写入流程分析

京东科技开发者

数据库

年轻代频繁ParNew GC,导致http服务rt飙高

AI乔治

Java 学习 架构 JVM GC

一次线上JVM调优实践,FullGC40次/天到10天一次的优化过程

AI乔治

Java 编程 架构 JVM GC

重大事故!IO问题引发线上20台机器同时崩溃

AI乔治

Java 架构 多线程 io 并发

Netty源码解析 -- 客户端启动过程

binecy

Netty nio 源码阅读

系统架构--作业

Nick~毓

如何优雅的搞垮服务器,再优雅的救活

MySQL从删库到跑路

Linux 升级glibc 启动异常 无法进入系统 抢救模式

图解面试题-二叉树的所有路径

9527

Java 面试 算法 LeetCode 二叉树

12张图带你彻底理解分布式事务产生的场景和解决方案!!

冰河

分布式事务 2PC 可靠消息最终一致 TCC 最大努力通知

架构师训练营第四周作业

脸不大

架构师训练营第四周命题作业

一马行千里

极客大学架构师训练营 命题作业

芯片破壁者(十七):“硅谷市长”罗伯特•诺伊斯开启的产业法则

脑极体

怎么才算掌握了JDK中的线程池

AI乔治

Java 编程 架构 jdk 线程池

谋生的工作动机,永远是个打工者

陆陆通通

Java 程序员

代表Java未来的ZGC深度剖析,牛逼!

AI乔治

Java 架构 ZGC JVM GC调优

架构师训练营第 1 期第四周课后练习题

Leo乐

极客大学架构师训练营

Pulsar 社区周报|09-19 ~ 09-25

Apache Pulsar

大数据 开源 Apache Pulsar 消息中间件

异步excel导出组件设计和实现

Wayne Chu

Java 微服务 EasyExcel SpringCloud 服务治理

一周信创舆情观察(9.28~10.11)

统小信uos

Java-技术专题-JDK8-HashMap的实现原理

李浩宇/Alex

一次百万长连接压测 Nginx OOM 的问题排查分析

AI乔治

Java nginx 架构 服务端 高性能

阿里大牛精心整理了46张PPT,教你弄懂JVM、GC算法和性能调优

Java架构之路

Java 程序员 面试 编程语言 JVM

让超宽带抵达产业互联网:UBBF上演智能联接全面落地

脑极体

架构师训练营第四周学习笔记

一马行千里

学习 极客大学架构师训练营

首发!撸了谷歌大神写的Spring源码笔记后,感觉之前读的都是渣渣

周老师

Java 编程 程序员 架构 面试

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

CNodeJS社区的Node App Engine启动内测-InfoQ