我们正在开发以下设置:
rails webapp 允许用户对传递给 Scala 后端的任务发出请求以完成,这可能需要 10 秒或更长时间。发生这种情况时,用户用来发出请求的页面会使用 AJAX 定期轮询 rails 以查看任务是否完成,如果完成则返回结果。
从用户的角度来看,请求是同步的,除了他们的浏览器没有冻结而且他们得到了一个很好的旋转的东西。
后端需要的输入数据很大,结构复杂,输出也一样。我最初的计划是简单地让两个应用程序共享同一个数据库(将是 MongoDB),因此 rails 应用程序可以简单地将一个 id 写入一个“作业”表,该表将由作为守护进程运行的 scala 后端拾取,但我想得越多,我就越担心这种方法可能有很多潜在的陷阱。
最让我担心的两件事是模型代码的重复,使用两种不同的语言,需要保持同步,以及在部署时处理这个增加的复杂性。在评估这种方法时,我还应该考虑哪些其他可能的问题?
我正在研究的其他一些可能性是 1)使 Scala 后端成为 RESTful 服务或 2)实现消息队列。但是,我并不完全相信这两种选择,因为它们都需要更多的开发工作,而且在我看来,在这两种情况下,模型代码无论如何都会被有效地复制,无论是作为 RESTful API 的一部分还是作为消息的消息队列 - 我错了吗?如果这些选项中的一个更好,那么有什么好的方法可以解决它?