【发布时间】:2012-04-19 09:04:02
【问题描述】:
我们正在开发以下设置:
Rails Web 应用程序允许用户对传递给 Scala 后端的任务发出请求以完成,这可能需要 10 秒或更长时间。发生这种情况时,用户用于发出请求的页面会定期使用 AJAX 轮询 rails 以查看任务是否完成,如果完成则返回结果。
从用户的角度来看,请求是同步的,除了他们的浏览器没有冻结而且他们得到了一个很好的旋转的东西。
后端需要的输入数据量大,结构复杂,输出也是如此。我最初的计划是简单地让两个应用程序共享同一个数据库(将是 MongoDB),因此 rails 应用程序可以简单地将一个 id 写入一个“作业”表,该表将由作为守护进程运行的 scala 后端拾取,但我越想越担心这种方法可能有很多潜在的陷阱。
最让我担心的两件事是模型代码的重复,使用两种不同的语言,需要保持同步,以及在部署时处理这个增加的复杂性。在评估这种方法时,我还应该考虑哪些其他可能的问题?
我正在研究的其他一些可能性是 1) 使 Scala 后端成为 RESTful 服务或 2) 实现消息队列。但是,我并不完全相信这两种选择,因为它们都需要更多的开发工作,而且在我看来,在这两种情况下,模型代码无论如何都会被有效地复制,无论是作为 RESTful API 的一部分还是作为消息的消息队列 - 我错了吗?如果其中一个选项更好,有什么好的方法可以解决它?
【问题讨论】:
-
Scala RESTful 服务是 imo 的必经之路。至少在成功的项目中,完全相同的问题是这样解决的。
-
您能否举一些例子并在答案中解释原因?
-
您是否考虑过使用 JRuby 并为模型代码使用一些通用库?
-
我过去曾尝试过 JRuby,但当时没有出色的结果 - 我现在不记得为什么了 - 是否有各种 gem 不能在 JRuby 中工作?
-
对于为什么有人对此投反对票,我感到非常困惑。需要解释一下吗?
标签: ruby-on-rails scala rest message-queue backend