(机架式)Web服务器的Ruby的Web应用程序的比较

介绍

类似于其他语言的产品,使用Ruby开发的应用程序可以通过许多可用的Web服务器之一暴露于万维网。 虽然他们每个人都具有独特的品质,并提供不同的可能性,工程师完美的解决方案,有一个共同点,这些服务器共享:一个方法(接口)与被称为Rack应用交谈。

在这篇DigitalOcean文章中,我们将比较基于Ruby的Web应用程序的各种流行的Web服务器。 不过在跳水之前,我们将介绍给后面的力学上述过程是如何工作的,我们熟悉机架规格和中间件集合。

如果你是好奇究竟是什么有点混乱中间件一词可能意味着,你可能会喜欢阅读一些关于它的维基百科

认识Ruby的机架

现在,给予机会将web服务器与web应用程序和其他技术混合并匹配到开发人员是任何编程语言和框架的非常强大,必要和确实需要的方面。 对于这方面的一个非常简单的例子是不同的环境为有必要开发 ,测试和/或生产。

随着实现这一点,在2007年的目标基督教诺伊基发布的机架,他随后被称为“模块化RubyWeb服务器接口”。 今天,它被许多web服务器和web应用程序开发框架,如Espresso,Mack,Ruby on Rails,Sinatra等。

尽管命名约定并在[程序]语言和领域,规范各类解释为接口[应用]非常相似,如果没有同源性(虽然不像Python的WSGI -激励着机架和其他机架这里不仅是一个规范,但 - 也许有点混乱 - 中间件应用程序)。

Rack 中间件GEM ),实现机架规格 ,工作原理是将传入的HTTP请求到不同的流水线阶段,处理它们的碎片,直到它发回来自Web应用程序(控制器)来响应。 它有两个不同的组件:处理程序和适配器,分别用于与Web服务器和应用程序(框架)通信。

关于比较

在这个比较中,我们将讨论一些目前流行和可用的Web应用程序服务器选择。 我们将通过什么使一个突出对另一个,以及它们在某些方面与其他方面有什么不同。 这里的目的是使您能够更好地理解整体,以便能够使服务器与您的应用程序的需要相匹配,以制定所需的解决方案。

Web服务器(按字母顺序排列)

Phusion Passenger:快速的网络服务器和应用程序服务器

今天的Passenger已成为推荐的Ruby on Rails应用程序服务器。 它是一个成熟的,功能丰富的产品,旨在涵盖必要的需求和应用程序部署的领域,同时大大简化了设置和开始的程序。 它消除了传统的中间商服务器通过在ApacheNGINX(朝前)Web服务器直接集成,建立架构。 它也被称为模导轨/ MOD架出于这个原因的Ruby(Rails)的社区之中。

笔记

Passenger提供了托管在同一台服务器上的多个应用程序工作能力。

它能够处理慢的客户端。 请求和响应Passenger是完全缓冲,使自己免受此类攻击的目标阻塞系统的资源。

Passenger非常受欢迎,在许多[生产]场景中广泛使用。 因此,可以联系和找到专家,并在在线社区解决您的问题。 它也有一个专门的公司,开发的产品,它提供了高效的商业支持,对于那些有兴趣。

它的开源版本具有多进程单线程操作模式,而企业版本可以配置为单线程或多线程。

对于企业用户,Passenger提供了一些进一步的“高级”功能,如:并发和多线程,部署,资源控制和限制等。

要了解更多关于客运,您可以参观位于官方网站https://www.phusionpassenger.com/ 对于客运企业,请访问企业在同一页上一节。

Puma:用于Ruby的现代,并发Web服务器

Puma是一个Rack独有的Ruby Web应用程序服务器。 它的创作和出生在很大程度上受传统启发杂种Web服务器 ,这已经在时间彻底改变了很多它被释放,影响Ruby应用程序是如何担任了许多世代(的服务器)来。 Puma的开发商, 埃文·菲尼克斯 ,决定前进的东西,转化杂种狗的业务结构,单靠机架操作(从而消除造成性能衰减的复杂性),并设计了应用程序支持真正的并行 ,允许并发(下面进一步解释)。

笔记

应用程序有相当小的脚印,在大小和执行资源消耗。

Puma有几种工作模式:它允许你设置最小和最大线程的数量,它可以用来做它的工作,并且工作在集群模式,你可以使用分叉进程并发处理请求。

它基于Mongrel的解析器 - 以及很多代码库的重写。

尽管被设计为Rubinius的“服务器”,它也适用于JRuby。

它提供了一个简单但重要的配置选项设置,以适应Web服务器的生产和开发需要在许多方面。

虽然Puma不支持直接承载多个应用程序外的即装即用,它有丛林 :一个(Puma即服务)工具,以帮助多种应用的生产需要。

要了解更多有关Puma,你可以访问位于其官方代码库https://github.com/puma/puma在这里你还可以找到详细说明配置和上手。

瘦:小,快,有趣的HTTP服务器

是声称自己是最“安全,稳定,快速和可扩展的Ruby的web服务器”一个非常流行的应用服务器。 仍然积极开发,它是基于,因此的产品,三个决定性的Ruby库:

  • Mongrel的解析器
  • 事件机器网络I / O库
  • 机架中间件

笔记

瘦HTTP服务器设计为与任何实现机架规范的框架一起工作,这覆盖了今天的大多数。 它通过直接加载机架配置文件来实现。

作为一个基于事件/机器的应用服务器,Thin能够处理长时间运行的请求,而不需要面向逆向代理解决方案的帮助。

要了解更多关于薄,你可以参观位于官方网站http://code.macournoyer.com/thin/

Unicorn:机架HTTP服务器为快速客户端和Unix

Unicorn是一个非常成熟的[Ruby] Web应用程序服务器,因此它也适用于Python。 它是完全功能,但是,它拒绝通过设计试图做一切:Unicorn的校长正在做什么需要做的[通过Web应用程序服务器],并将其余的责任委托给那些做得更好。

笔记

Unicorn的主进程根据您的要求生成工作者,以满足请求。 这个过程还监视工作者,以防止记忆和进程相关的错误问题。 这对系统管理员意味着,如果(例如)它需要太多的时间来完成任务或内存问题发生,它会杀死进程。

如上所述,Unicorn委派任务的一个区域是使用操作系统进行负载平衡。 这允许请求不堆积对繁忙的工作者产生。

就像NGINX,使用Unicorn,您可以执行和部署您的应用程序(想想更新/升级),而不删除活动连接和客户端。

一些其他高级功能:

  • 所有工作在指定的隔离地址空间内运行,一次只提供一个请求。

  • before_forkafter_fork挂钩处理派生进程。

  • 能够与使用写入时复制友好的内存管理以节省内存。

  • 能够监听多个接口。

要了解更多有关麒麟及其强大功能,您可以参观位于官方网站http://unicorn.bogomips.org/

:提交OS Tezer
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏