C++ 带有Ruby on Rails的复杂AlghoritM

C++ 带有Ruby on Rails的复杂AlghoritM,c++,ruby-on-rails,c,ruby,ruby-on-rails-4,C++,Ruby On Rails,C,Ruby,Ruby On Rails 4,我正在创建一个RubyonRails应用程序,它将使用相当复杂和耗时的AlghoritM 我想用C或C++函数实现它们。 如果任何有在web应用程序中实现复杂AlghoritM经验的人都能给我一些建议,我将不胜感激 我的假设是Rails本身太慢,最好使用C或C++。如果是这样的话,你如何在C或C++中实现AlgORITIM,并用Ruby on Rails调用它?< /P> < P> OK,这是一个非常模糊的问题,但它会引起一个有趣的对话。 通常,您所描述的问题实际上不是技术问题,而是业务问题。

我正在创建一个RubyonRails应用程序,它将使用相当复杂和耗时的AlghoritM

我想用C或C++函数实现它们。 如果任何有在web应用程序中实现复杂AlghoritM经验的人都能给我一些建议,我将不胜感激


我的假设是Rails本身太慢,最好使用C或C++。如果是这样的话,你如何在C或C++中实现AlgORITIM,并用Ruby on Rails调用它?< /P> < P> OK,这是一个非常模糊的问题,但它会引起一个有趣的对话。 通常,您所描述的问题实际上不是技术问题,而是业务问题。 Rails的一些巨大优势是开发、维护等的速度。C和C++也是很棒的工具,但是在C中构建相同的东西需要花费更长的时间,就像在Rails中一样。这意味着它更贵

这一成本正在持续。 有了rails,您将失去一些性能,这将需要更多的硬件。这一成本正在持续

让我们假设复杂算法是一个长时间运行的函数,可以定义为在用户类中发生的以下情况

def DoIt() 睡10000 结束

现在,让我们假设您需要一次为许多项目执行此操作。比如说每分钟有10000个用户

如果我们在一个直线过程中这样做,我们将看到每分钟10000*10000的运行时间。那不是布埃诺

幸运的是,这些问题一直都得到了解决。 我们讨论的是垂直与水平缩放

垂直: 让我们假设,如果用c编写,该函数将等效于:

def DoIt 睡5000 结束

你已经增加了50%,这是伟大的。问题是,如果用户负载增加,最终会陷入麻烦。我们一直在生产系统中看到这一点

所以现在的问题是,你如何水平地扩展它

使用resque(或100种解决方案中的任何一种),您可以将此工作放到后台并分发。 然后可以添加服务器来处理进入系统的负载


现在的问题是,用c/c++构建它是否值得,还是最好用rails构建它并支付额外的硬件费用?或者最好从rails开始,如果需要的话,在原型完成并验证它是必要的之后再转到c++/c。

,首先用Ruby实现。如果速度太慢,那就仔细看看。你说的耗时是什么意思?这需要一秒钟,十秒钟的时间来处理吗?您不希望OLTP Rails应用程序的用户在线等待该过程的结果。因此,您应该将这些进程作为后台批处理作业来运行。那么,为什么不创建一个后台C/C++守护进程,并使用一些消息队列系统从Rails与is进行通信呢?这是一个非常好的观点!我喜欢你看它的方式。水平缩放听起来是一个不错的开始计划!