Ruby on rails 创建共享同一数据库的多个Rails服务器

Ruby on rails 创建共享同一数据库的多个Rails服务器,ruby-on-rails,backend,Ruby On Rails,Backend,我在Heroku上有一个Rails应用程序。我必须对mySQL数据库进行长时间的后端计算和查询 我的理解是,使用DelayedJob或gems调用后端进程仍然会对Rails(前端)服务器性能产生影响。因此,我想设置两个不同的Rails服务器 第一个服务器用于前端(响应用户的请求),与常规Rails应用程序一样。 第二个服务器(也是Rails服务器)仅用于后端查询和计算。它将只从mySQL读取数据,进行计算,然后将结果写入另一台Redis服务器 我的感觉是,并不是很多Rails开发人员都这么做。他

我在Heroku上有一个Rails应用程序。我必须对mySQL数据库进行长时间的后端计算和查询

我的理解是,使用DelayedJob或gems调用后端进程仍然会对Rails(前端)服务器性能产生影响。因此,我想设置两个不同的Rails服务器

第一个服务器用于前端(响应用户的请求),与常规Rails应用程序一样。 第二个服务器(也是Rails服务器)仅用于后端查询和计算。它将只从mySQL读取数据,进行计算,然后将结果写入另一台Redis服务器

我的感觉是,并不是很多Rails开发人员都这么做。他们更喜欢在Rails服务器上运行后台作业,并根据需要添加更多工作人员。我的服务器结构是一个好的设计,还是一个过度的设计?有什么陷阱我应该知道吗


谢谢。

我看不出像DelayedJob这样的后台作业会比其他服务器在主应用程序上造成更多开销的原因。DelayedJob在其自己的进程中运行,因此主应用程序的动态不会受到影响。唯一的影响可能是数据库查询,但无论是来自后台作业还是访问同一数据库的其他应用程序,影响都是一样的

我建议您在主应用程序上使用DelayedJob和workers。它使事情变得简单,在性能方面不应该有任何问题


如果你真的担心性能的另一件事是有一个数据库“追随者”,这是一个有效的第二个数据库,它使自己与你的主要数据库保持同步,但只能用于读取(而不是写入)。关于它可能有更好的文档,但是你可以在这里得到这个想法。然后,您可以让这些冗长的后台作业从这里读取数据,使您的主数据库完全不受影响。

第二个应用程序必须是rails应用程序,这有什么原因吗?后台任务似乎已经足够好了,或者可以创建一个ruby脚本并运行一个cron。你不能在Heroku身上这样做吗?抱歉,我不知道Heroku.Hi Saifis,正如我前面提到的,我认为当我运行cron时,它会占用Rails服务器的太多资源,从而使对用户请求的响应变慢。