0

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

此 Web 服务进一步对其他遗留服务进行 SOAP Web 服务调用,并回复基于 Windows 的 Web 服务客户端应用程序。

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

谁能指出我可以设置集群以同时处理多个 Web 服务调用并在控制器中处理和响应的资源。Rails 是否会自动为每个 Web 服务请求实例化一个控制器,以便并行完成?还是我们需要使用可用的库重写?

非常感谢任何帮助/建议。我不能重写任何东西——它需要在 Rails2.3.5/Ruby1.8.7 中——升级不是一种选择,因为这已经在生产中工作了,而且 datanoise 本身似乎不像我所用的 1.8.7+ 或 Rails 3可以看到。

干杯!

4

1 回答 1

1

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

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

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

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

# gem install rake rack passenger --no-rdoc --no-ri
# exit
$ ./configure --add-module=`passenger-config --root`/ext/nginx
$ make
于 2013-03-20T14:24:36.530 回答