scala - 需要关于 Web 应用程序的设计/架构的意见

标签 scala push lift

我正在开发一个 Web 应用程序,它需要从一些本地和一些非本地资源获取数据,然后显示它。由于从这些资源中获取数据可能需要任意时间,我正在考虑使用参与者概念,以便每个参与者负责从各自的资源中获取数据。请求线程将等待每个参与者完成其任务,然后使用 ajax 仅更新依赖于该数据的网页部分。通过这种方式,用户将在收到数据后立即开始查看数据,而不是等待所有数据完成后再查看数据。

我正计划为此研究 scala/lift 框架。我已经在网上阅读了一些关于 scala/lift 的文章,并想探索这是否是解决这个问题的正确方法,以及 scala/lift 是否是不错的选择平台。我以前在 Java 和 C# 工作过。欢迎任何意见、评论和建议。

谢谢, 加里

最佳答案

看看像Java的JMS这样的消息队列技术。消息队列允许您异步且可靠地处理长时间运行的后台任务。这是 Flickr 和 YouTube 等网站用来异步进行媒体转码的技术。您可以使用 Java EE 服务器或 JMS 技术,例如 Apache 的 ActiveMQ ,然后将您的 Scala/Lift 代码置于其上。

Richard Monson-Haefel 的 book on JMS覆盖得很好。

有关网站扩展和构建的更多一般帮助,请查看 Todd Hoff 的优秀博客,highscalability.com/ .有一些关于使用消息队列以这种方式卸载长时间运行的任务的很好的指示。

顺便说一句,Twitter 将 Scala 用于您正在考虑的事情。这是一个 interview与他们的一些开发人员;他们描述了他们使用 Scala 的一种方式:

Robey Pointer: A lot of our architecture is based on letting Rails do what it does best, which is the AJAX, the web front ends, the website—what the user sees. Anything we can offload out of the request/response cycle, we do. So we queue those tasks into a messaging system and have back-end daemons handle them.

关于scala - 需要关于 Web 应用程序的设计/架构的意见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1777977/

相关文章:

javascript - 我们如何在 lift 中使用 net.liftweb.http.js.JsCmds.Script 对象?

scala - LiftWeb 框架 - 覆盖 LiftRules.sessionInactivityTimeout

scala - 使用 Akka 的 Scheduler 调度一个函数每秒运行一次

Scala sbt 运行 - "Unsupported major.minor version 52.0"

scala - Spark数据帧中两行之间的差异

linux - 将 Github repo 推送到其他现有帐户(而不是默认帐户)?

scala - 如何在准引号中拼接各种类型的符号?

android - 错误 : unable to read askpass response from '/home/.cache/Google/AndroidStudio2021.1/tmp/intellij-git-askpass-local.sh' in ubuntu android studiio

firebase - Flutter - 在没有 firebase 身份验证的情况下将 firebase 通知推送给特定用户

scala - 电梯入门