免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

Phusion Passenger 应用服务器支持 Node.js

  • 2013-11-08
  • 本文字数:2261 字

    阅读完需:约 7 分钟

Phusion Passenger 是一个流行的 Web 应用服务器,它最初是针对 Ruby 的,现在也支持 Node.js 应用。在今年的早些时候该功能被引入了 Passenger 的企业版中,但是现在已经开源并随着最近的 4.0.21 免费版发布。

Passenger 能与 Apache 或者 Nginx Web 服务器集成,旨在成为一个服务、监控和扩展 Web 应用程序的完整解决方案。Phusion 公司的总部位于荷兰,他们宣称在Passenger 中运行 Node.js 应用的好处包括:

  • 多租户——通过最小的配置运行一些应用的能力
  • 监控——自动启动 Node.js 进程、如果进程崩溃了则重启它们
  • 扩展——根据要处理的请求的数量增加或者减少进程的数量
  • 统计——帮助显示运行中进程的状态的工具

Passenger 的作者还指出,与Apache/Nginx 集成还带来了其他的好处,例如:加速了静态文件服务,阻止了很多常见的攻击和慢客户端。

该公告标志着Phusion 向自己宣称的让Passenger 最终成为一个多语言应用服务器的目标更进了一步。去年,Passenger 对 Python 的支持到达了 beta 状态,并于最近完成。紧跟着发布了支持 Node.js 的公告,Phusion 还推出 Meteor (一个基于 Node 的应用框架)支持。

Passenger 本身是用 C++ 编写的,它没有和 Ruby 或者任何其他的语言紧耦合。版本 4 中的一些架构发生了一些变化。Passenger 内部的 I/O 处理器现在是事件驱动的,和 Node.js 的工作原理相似,同时企业版支持混合多进程和多线程执行,这是为了在支持通过 WebSockets 进行流媒体直播这样的功能时最大化资源利用率。

Passenger 还为 Ruby 应用提供了“带外(out of band)”执行这样的功能,用户能够利用它们做其他的事情,例如:将垃圾收集延迟到请求期间,与 Phusion 的 Union Station 产品(一个订阅式应用监控和分析服务)集成。

在流行的 Ruby 应用服务器中,Puma 和 Passenger 相似,它们都喜欢使用线程而不是 Thin 和 Unicom 这样的服务器所使用的事件架构。Phusion 团队最近发布了一篇文章比较了Passenger 和Puma ,而Puma 的作者Evan Phoenix 则在HackerNews 上对此做出了回应

InfoQ 和 Phusion 的 CTO Hongli Lai 进行了一次谈话以讨论 Passenger 最近的更新:

PassengerRuby用户提供了不寻常的特性,例如带外执行,它和语言运行时紧密集成。那么对于Node.jsPython**** 用户而言有相似的功能么?

大部分功能所有支持的语言都可以使用,包括 Node.js 和 Python。从第一天开始,我们就一直在尽量减少对 Ruby 的依赖。虽然我们并没有积极的推广,但是事实是在第一个版本发布几个月之后我们就已经支持 Python。 我们现在还计划在下一次发布时支持 Meteor

Node.js 和 Python 不能使用的功能只有很少几个,或者是因为它们对这些语言没有意义,或者是因为它们需要简单的语言特定的支持代码,而这些代码还没有被编写。Node 和 Python 的垃圾收集器通常并不会忍受像 Ruby 那样的长时间的 GC 暂停,所以我们期望 Node.js 和 Python 用户不需要带外工作。

你认为现在的Node.js支持有多稳定?

我们认为它非常稳定。所有的应用程序测试都通过了,所有测试人员的应用程序都工作良好且没有已知的问题。

Passenger最初的目标是让Ruby部署和PHP部署一样简单,仅需要用户将他们的应用丢放到正确的目录即可。你认为Passenger**** 现在已经完成这一目标了么?

部署一个应用涉及到很多事情,从操作系统和语言运行时的配置到类库依赖的管理和应用程序进程的监控。PHP 的部署之所以容易的原因之一是,Web 服务器能够通过 mod_php 模块自动地处理运行的 PHP 应用程序。
在最初开发 Passenger 的时候,我们的主要计划是运行、监控和管理 Ruby 应用程序。你必须运行多个应用程序服务器进程,让它们监听一个本地 socket,设置 Web 服务器反向代理这簇 sockets,并且设置进程监控工具重启崩溃的进程。而在 Passenger 中,我们开发了一个类似于 mod_php 的机制解决了这些问题。因此在版本 1.0 中我们已经实现了自己的目标:通过将一个 Ruby 应用程序丢放到正确的目录运行它。
PHP 生态系统依然被认为更容易部署的原因是,许多流行的 PHP 应用程序能自动地处理除了应用程序运行之外的其他事情。例如, Wordpress 没有依赖,不需要用户编辑配置文件或者通过漂亮的图形用户界面征求数据库凭证。但是如果你编写自己的 PHP 应用,那么你将会遇到和 Ruby、Node 或者 Python 应用开发人员相同的问题。

有没有托管公司真正地提供开箱即用的Passenger支持?

提供开箱即用的 Passenger 支持的知名托管公司有 Amazon Elastic Beanstalk 和Red Hat OpenShift 。许多其他的提供商(例如 Heroku )对应用程序服务器的选择往往不可知,但是它们依然允许用户很容易地使用Passenger。还有很多较小的托管公司默认使用Passenger,例如 BrightBox SpeedyRails

Ruby应用程序服务器领域有一些强有力的竞争者(ThinUnicornPuma)。那么你认为目前Passenger在这个生态系统中处于什么位置?

其他的 Ruby 应用程序服务器比 Passenger 有更多的范围限制。它们需要用户启动一个或者多个进程,将它们设置为监听 sockets,配置反向代理规则等。对于想要严格控制整个系统的专家而言这并不一定是错误的方法,但是却不同于我们的哲学。我们希望软件易于安装、使用和管理,同时依然可以保持稳定性和灵活性。
但是话说回来,我们都互相学习了很多内容。例如,Passenger 的“智能产卵(smart spawning)”功能在日期上要早于 Unicorn,但是 Passenger 的带外工作功能借鉴了 Unicorn 的,尽管我们对该功能做了改进。每一种服务器都有它自己的优势和劣势。

查看英文原文 Phusion Passenger App Server Gains Node.js Support

2013-11-08 07:412223
用户头像

发布了 321 篇内容, 共 118.5 次阅读, 收获喜欢 19 次。

关注

评论

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

防止数据丢失和减轻勒索软件攻击的 5 种方法

九河云安全

这几个棘手的面试常见问题,如何高情商的回答?

架构精进之路

面试 情商 8月日更

2021全球开源技术峰会|IoT 时代的开源数据基础设施

EMQ映云科技

开源 IOT Platform IoT emq 开源技术

你的工作有弹性么?

escray

学习 极客时间 朱赟的技术管理课 8月日更

推动数据中心行业的“水电煤”,可视化如何用数据改变传统产业?

一只数据鲸鱼

机房 数据可视化 数字孪生 智能IDC

三面阿里被挂,竟获内推名额,历经5面拿下口碑offer(Java后台)

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

快来看,大数据两地三中心的容灾也可以如此省心!

华为云开发者联盟

大数据 数据湖 容灾 华为云MRS 两地三中心

服务器的升级,不可避免的安全问题

九河云安全

Mysql读写锁保姆级图文教程

华为云开发者联盟

MySQL 数据 读写锁 读锁 MyLSAM

Serverless 全能选手,再添一“金”

Serverless Devs

Serverless 互联网 云原生

九大核心专题,630页内容,熬夜23天吃透,我收割了3个大厂offer

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

专业好用的数据恢复软件推荐

淋雨

EasyRecovery 文件恢复 硬盘数据恢复

只需6步,教你从零开发一个签到小程序

华为云开发者联盟

小程序 App 移动 智慧校园 FunctionGraph

TrafficStatsRunnable 实用封装

Changing Lin

8月日更

iOS开发-为 iOS 编写 Kotlin Parcelize 编译器插件

iOSer

ios 编译器 编译器原理 iOS 知识体系 Kotlin Parcelize

632页!我熬夜读完这份“高分宝典”,竟4面拿下字节跳动offer

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

2021第二届云原生编程挑战赛正式启动,抢先报名!

阿里巴巴云原生

阿里云 Serverless RocketMQ 云原生 dubbo

这本“算法宝典”讲得透彻,完全掌握后,我竟拿到字节跳动offer

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

50 亿观众的 “云上奥运”,顶级媒体背后的数智化力量

阿里云视频云

阿里云 直播技术 视频制作 视频云 奥运

CC挖矿系统源码开发

获客I3O6O643Z97

挖矿 挖矿矿池系统开发案例 fil矿机

赛迪发布《2020-2021年中国IT服务市场研究年度报告》,联想位居第一梯队

科技大数据

科技互联网

如何保存数据并更快地从勒索软件攻击中恢复

九河云安全

Python代码阅读(第4篇):过滤掉列表中的唯一值

Felix

Python 编程 Code Programing 阅读代码

阿里云-云开发平台入门篇——静态网站的全生命周期实战

若尘

阿里云 8月日更

限12小时删!白嫖对标阿里P5—P8的Java学习路线+大厂刷题秘籍

Java架构追梦

Java 阿里巴巴 架构 面试

巨头纷纷布局分布式云,一场新的云战争即将打响

云计算

论 Erda 的安全之道

尔达Erda

云原生 安全 企业数字化转型 云平台 开发平台

如何实时打通数据孤岛?Tapdata 创始人唐建法受邀于GOTC深度分享

tapdata

数据库 打通数据孤岛 数据同步 Real Time DaaS GOTC

基于香港服务器的应用开发中测试数据管理的 3 个最佳实践

九河云安全

【Vue2.x 源码学习】第二十七篇 - Vue 生命周期的实现

Brave

源码 vue2 8月日更

在阿里晋升3次,5年拿下P8岗位,这份pdf记录了我的整个成长过程

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

Phusion Passenger应用服务器支持Node.js_Ruby_Felix Holmgren_InfoQ精选文章