我正在开发一个非常典型的 Web 应用程序。用户体验的主要组成部分是网站所有者将在其首页上安装的小部件。每次他们的首页加载时,小部件都会与我们的服务器对话并显示一些返回的数据。
所以这个 Web 应用程序有两个组件:
- 网站所有者用来配置其小部件的前端 UI
- 响应小部件的 web api 调用的后端组件
以前我们在 PHP 中运行所有这些。现在我们正在试验 Rails,这对于#1(前端 UI)来说非常棒。问题是如何有效地执行 #2,即小部件信息的后端服务。显然,这比前端的负载要高得多,因为每次首页加载到我们客户的网站之一时都会调用它。
我可以看到两种明显的方法:
A. Parallel Stack : 建立一个并行堆栈,它使用 Rails 以外的东西(例如我们旧的基于 PHP 的方法),但访问与前端相同的数据库
B. Rails Metal:使用 Rails Metal/Rack 绕过 Rails 路由机制,但将 api 调用响应程序保留在 Rails 应用程序中
我的主要问题:
- Rails/Metal 是解决此类问题的合理方法吗?
但是也...
- 加载 Rails 环境的开销会不会还是太重?
- 有没有办法通过 Rails 更接近金属,绕过大部分环境?
- Rails/Metal 的性能是否会接近直接 PHP 的类似任务的性能(只是在这里寻找球场)?
和...
- 有没有比 A 和 B 都好得多的“C”选项?也就是说,在将 C 代码编译为二进制并作为 nginx 或 apache 模块安装之前的一些东西?
提前感谢您的任何见解。