【问题标题】:Back-end server for Play 2 framework appPlay 2 框架应用的后端服务器
【发布时间】:2013-02-24 18:46:45
【问题描述】:

我正在计划一个网络应用程序,用户可以在其中上传和处理他们的文件。该应用程序的细节与我的问题无关,但我们假设该应用程序将处理 mp3 音频文件。我将把我的应用程序分成两个不同的部分:前端和后端。

前端应用程序将是一个向用户提供 html 页面的普通 Web 应用程序。通常,用户将上传他的文件并填写一个 html 表单以指定他想对文件执行哪些操作。这些文件最初将上传到存储设施,例如 Amazon S3,然后由后端服务器处理。我正在使用 Play 2.0.4 框架来开发前端应用程序,这对我来说非常顺利。我设法实现了用户授权,起草了大部分 UI,还实现了文件上传到 S3。该应用程序目前部署在 Heroku 上,没有任何问题。

对于我的后端服务器,我正在考虑再次使用 Play 2 框架。后端服务器将从前端服务器接收有关创建新作业的通知(http 请求)。作业规范将包括存储中原始用户文件的链接和描述作业的参数。该作业应添加到队列中。现在最重要的部分是将实际的处理工作委托给第三方程序,这肯定是一个编译的命令行实用程序,例如SoX 用于音频处理的情况,由好人使用编程语言编写他们的选择。据我所知,可以从 java 调用外部程序,传递命令行参数并收集结果。处理完成后,后端服务器会将处理后的文件上传回存储,并向前端应用程序发送通知(http请求),前端应用程序将存储处理后文件的链接并稍后显示给用户时间。为了能够使用命令行实用程序,我将使用 Typesafe 堆栈安装将后端应用程序部署到 Amazon EC2 实例。

以下是有关此基本计划的一些问题:

  1. Play 2 是后端的合理选择,还是我应该寻找替代方案?其中一个似乎是 CGI,根据 Wikipedia 的说法,它“是一种标准方法,用于 Web 服务器软件将 Web 内容的生成委托给可执行文件。”不幸的是,我没有这方面的经验。
  2. 使用 Play 实现作业队列应该没有问题吗?
  3. 是否可以在 EC2 上安装命令行实用程序并从 Play 调用它?
  4. 在 EC2 上安装 Typesafe 堆栈是否会出现问题?这篇文章简要描述了我打算做什么https://www.assembla.com/spaces/bufferine/wiki/Typesafe_stack_on_Amazon_EC2
  5. 假设将来应用程序会增长,我将如何在 EC2 上的多个实例之间分配作业?我应该在我的前端和后端之间创建一个单独的工作平衡应用程序吗?

我将不胜感激任何建议!谢谢!

注意:我在 Play 2 框架中使用 Java api,因为我不熟悉 Scala 语言。

【问题讨论】:

    标签: java amazon-ec2 playframework-2.0 playframework-2.1 sox


    【解决方案1】:

    您可以考虑使用 Akka 进行处理,它内置在 Play2 中。它将帮助您轻松管理任务,如果与高级功能一起使用,甚至可以节省硬件资源。有一个 Java API 可以满足您的所有需求。并且在后端应用程序中没有必要,如果您需要更多功能,您可以使用两个相同的实例更好地扩展。 Play 和 Akka 是无状态的,您只需添加新实例即可扩展。要使其在 EC2 上运行,只需使用 play dist 命令即可。

    是的,您可以在 EC2 中安装任何您想要的东西并从您的应用程序中调用它。

    你可能喜欢:

    同样,但在 scala 中

    【讨论】:

    • 那些 scala 链接很棒!它看起来非常接近我需要的东西。是否有可能在 Java 中做类似的事情,还是 Scala 独有的?
    • Iteratees 在 Play Java 中不可用,但您应该能够使用 Akka 生成非常接近的东西。您还可以在项目中混合使用 Java 和 Scala(一种软学习的方式)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 2018-03-21
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多