4

我们正在开发以下设置:

rails webapp 允许用户对传递给 Scala 后端的任务发出请求以完成,这可能需要 10 秒或更长时间。发生这种情况时,用户用来发出请求的页面会使用 AJAX 定期轮询 rails 以查看任务是否完成,如果完成则返回结果。

从用户的角度来看,请求是同步的,除了他们的浏览器没有冻结而且他们得到了一个很好的旋转的东西。

后端需要的输入数据很大,结构复杂,输出也一样。我最初的计划是简单地让两个应用程序共享同一个数据库(将是 MongoDB),因此 rails 应用程序可以简单地将一个 id 写入一个“作业”表,该表将由作为守护进程运行的 scala 后端拾取,但我想得越多,我就越担心这种方法可能有很多潜在的陷阱。

最让我担心的两件事是模型代码的重复,使用两种不同的语言,需要保持同步,以及在部署时处理这个增加的复杂性。在评估这种方法时,我还应该考虑哪些其他可能的问题?

我正在研究的其他一些可能性是 1)使 Scala 后端成为 RESTful 服务或 2)实现消息队列。但是,我并不完全相信这两种选择,因为它们都需要更多的开发工作,而且在我看来,在这两种情况下,模型代码无论如何都会被有效地复制,无论是作为 RESTful API 的一部分还是作为消息的消息队列 - 我错了吗?如果这些选项中的一个更好,那么有什么好的方法可以解决它?

4

2 回答 2

3

我已经多次使用resque来解决类似的问题,而且我一直对它非常满意,它为您提供了实现作业队列所需的一切,并支持 redis。我强烈建议你看看它

于 2012-04-19T09:11:02.940 回答
0

不要误会我的意思,但是,对于这个项目,Rails 提供了哪些 Scala 没有的功能?

换句话说,你可以完全不用 Scala 而全部在 Rails 中完成吗?显然是的,但是您在 Scala 中开发后端是有原因的,对吧?现在,Scala 提供了什么 Rails 没有?

我并不是说你应该做其中一个,但维护重复的代码是在自找麻烦/复杂化。

如果您已经在该项目中投入了大量的 Ruby 代码,那么您将致力于 Rails,除非进行完整的 Twitter 式大修(听起来既不是一种选择,也不是所希望的)。

无论如何,不​​确定您将如何解决模型重复问题。使用 Mongo 后端确实可以为您购买 BSON 结果集,您可以将其与Spray结合,它们对 Akka 的出色实现、开箱即用的 REST 和 JSON 实用程序。

棘手的问题,听起来你陷入了两种范式之间!

于 2012-04-19T09:54:19.207 回答