如何在Rails 2.3.5 / Ruby 1.8.7上部署Web服务以支持并发请求

时间:2013-03-20 13:55:25

标签: ruby-on-rails ruby web-services passenger mongrel

我有一个控制器使用datanoise-actionwebservice(2.3.2)实现我的SOAP webservice API。我没有使用Rail作为Web应用程序或网站来提供任何静态内容 - 它纯粹是作为web服务运行,从控制器代码直接使用基于Mysql.real_connect的查询。这更多是因为我对如何使用Rails的模型部分缺乏更深入的理解,但更实际的是因为查询非常复杂且更容易编码。

此Web服务进一步使SOAP webservice调用其他旧服务,并回复基于Windows的Web服务客户端应用程序。

挑战是我到目前为止使用默认的mongrel服务器来处理跨多个终端对我的API的多次调用,但显然需要将mongrel重新部署为集群或使用其他设置(如乘客)来改善响应时间。客户端。我无法找到一个简单的HOWTO来实现这个或类似的方法 - 大多数指向用作网站/ webapp,其中需要apache等更多的服务statick内容和CSS等,以及ruby部分。

任何人都可以指向一个资源,我可以设置集群来同时处理多个webservice调用并在控制器中处理并响应。 rails是否自动为每个Web服务请求实例化一个控制器,以便它并行完成?或者我们是否需要使用可用的库重写?

非常感谢任何帮助/建议。我不能重写任何东西 - 它需要在Rails2.3.5 / Ruby1.8.7中 - 升级不是一个选项,因为它已经在生产中工作,而datanoise本身似乎不喜欢1.8.7+或Rails 3来自我可以看到。

干杯!

1 个答案:

答案 0 :(得分:1)

从根本上说,你需要运行多个Mongrel。

mongrel进程将成为您的后端服务器,您将需要运行前端负载平衡代理。

问题是,纯Ruby单线程Mongrel的优点是易于设置。一旦你超越了易于设置的领域,你也可以处理运行Passenger的复杂性。乘客将在内部进行负载平衡。

如果是我,我会从源代码编译nginx或tengine,因为它不包括Passenger开箱即用。这就像在configure脚本中添加参数一样简单。

# gem install rake rack passenger --no-rdoc --no-ri
# exit
$ ./configure --add-module=`passenger-config --root`/ext/nginx
$ make