Ruby 云实例可以处理与节点实例相同的流量吗?

can a Ruby cloud instance handle the same amount of traffic a node instance would do?

我们将着手改造电视频道的基于 cms 的网站,我们希望该频道至少服务 10+ 百万唯一 user/month,大约 400+ 百万 requests/month 和平均40 TB bandwidth/month 这是他们旧网站上的 CloudFlare 统计数据,他们期待更多。

团队堆栈主要是 ruby/rails 和前端的 React,所以我们计划将后端构建为休息 API 服务于前端 React 和另一个用于 cms 管理员的 React 应用程序面板,我们在 Ruby 和 node 之间争论,有人说 node 更快并且在资源消耗方面会更便宜, Ruby 会比 node 更有效吗? Ruby 可以吗云实例处理与节点实例相同的流量?关于是否值得转移到节点有什么建议吗?

节点能够处理如此高的吞吐量的原因是它具有高度并行化的特性,而且 JS JIT 得到了令人难以置信的优化,并且可以做某些 ruby 无法做到的事情来提高性能,想要更多性能?只允许它 运行 有更多的线程。 您可以使用像 Puma 这样的网络服务器来做同样的事情,并将其配置为 运行 更多线程,但最终它仍然基于 ruby。

你可以做的是使用更小的框架,比如前端使用sinatra,后端使用grape,更小意味着更轻,因此负载更小。 也可能是用于静态资产分发的 apache 或完全卸载到静态资产服务器。最重要的是,如果您能够,您可以使用 C、C++、Rust 等较低级别的语言编写对性能至关重要的组件。

最后,您可以尝试特定的 ruby 优化,我一时想不起来,但我确定它们存在,但我不能说您能从中得到多少.

Ruby 至少在 ruby 3.0 之前,它本身不会真正相当快,我不确定它什么时候出来。

通常 CMS 应用程序大量使用缓存,我的意思是非常大量,例如 99.999% 的请求必须由 Apache/Nginx 或专用缓存服务器缓存和提供。因此,您的 Web 框架的性能并不重要。

如果没有缓存,中等硬件上的负载水平会给 Node 和 Rails 带来很多麻烦。对于 Rails 这种负载(平均 400M/mo = 150 rps + 10–100x 峰值)将需要相当多的像样的专用服务器。 Node 应该快大约 2-5 倍,具体取决于 SQL-您的请求有多繁重。