Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Play framework 2.1应用程序部署_Java_Tomcat_Deployment_Playframework 2.0_Cloud - Fatal编程技术网

Java Play framework 2.1应用程序部署

Java Play framework 2.1应用程序部署,java,tomcat,deployment,playframework-2.0,cloud,Java,Tomcat,Deployment,Playframework 2.0,Cloud,我已经创建了我的第一个Play应用程序。哪种部署方法最适合生产?我是否应该将整个项目复制到生产服务器并运行play start?或者我应该对我的应用程序进行一场战争并部署在tomcat/jboss中?哪一种是最推荐的方式?与rails类型的行为相比,对它感到困惑。请注意,这应该是一个大数据应用程序,并且它可能会在以后为加载的请求提供服务器。因此,我们也在考虑可伸缩性、可用性和性能方面。此应用程序决定部署在云中 谢谢。您不需要使用Play的控制台来运行应用程序,它会消耗一些资源,其主要目标是在开发

我已经创建了我的第一个Play应用程序。哪种部署方法最适合生产?我是否应该将整个项目复制到生产服务器并运行play start?或者我应该对我的应用程序进行一场战争并部署在tomcat/jboss中?哪一种是最推荐的方式?与rails类型的行为相比,对它感到困惑。请注意,这应该是一个大数据应用程序,并且它可能会在以后为加载的请求提供服务器。因此,我们也在考虑可伸缩性、可用性和性能方面。此应用程序决定部署在云中


谢谢。

您不需要使用Play的控制台来运行应用程序,它会消耗一些资源,其主要目标是在开发阶段快速启动

最好的选择是按照文档中的说明使用。由于这一点,您甚至不需要在目标机器上安装Play,因为
dist
创建了包含所有必需元素的现成独立应用程序(也是内置服务器,因此您不需要在任何容器中使用WAR部署它)


如果您计划使用云,您还应该查看Heroku或CloudBees提供的服务,它允许您只需。。。通过git存储库推送更改,这是一种非常舒适的方式,请检查,向下滚动到链接:部署到。。。有关更多详细信息。

如其他人所述,使用
dist
命令是为一次性应用程序部署Play的最简单方法。然而,为了详细说明,我这里有一些其他的选择和我的经验:

  • 当我有一个经常更新的应用程序时,我通常在服务器上安装Play并通过Git执行更新。这样做,每次更新后,我只需运行
    play stop
    (停止运行的服务器),有时我会运行
    play clean
    清除任何可能损坏的库或二进制文件,然后运行
    play stage
    以确保所有先决条件都存在并执行编译,然后最后
    播放start
    ,为更新后的应用程序运行服务器。看起来很多,但通过快速bash脚本很容易实现自动化

  • 另一种方法是在前端web服务器(如Apache、Nginx等)后面部署Play。如果您想执行某种负载平衡,这是非常有用的,但这不是必需的,因为Play与自己的服务器捆绑在一起。文件:

  • 使用play2war插件创建WAR归档是另一种部署方式,但我不推荐这样做,除非您将其提供给已经拥有基于您提到的这些servlet容器构建的主要基础设施的人(就像许多大公司一样)。使用servlet容器增加了Play本质上应该消除的复杂性(因此集成服务器)。据我所知,与前面描述的两种方法相比,使用这种方法没有显著的性能提升

  • 当然,始终存在为您创建包的
    playdist
    ,您可以将包上载到服务器并从那里运行
    playdstart
    。这可能是最简单的选择。文件:

对于性能和可扩展性,Netty服务器将充分发挥作用,以满足您的需要。这里有一个很好的链接,显示NETY的所有框架的最快的性能和一个“股票”播放应用程序出现在该领域的某个地方,但是在性能方面比Rails或Django领先: 别忘了,如果您需要更多的负载平衡等可用性,您可以随时更改部署体系结构,以便在前端服务器后面运行,如上所述。这是一个微不足道的变化与发挥。我仍然不推荐WAR部署选项,除非,如我所说,您已经使用了大量servlet容器,有人强迫您为应用程序提供服务

可伸缩性和性能还与其他因素有很大关系,比如缓存的使用、数据库配置、并发性的使用(这一点玩得很好)以及底层硬件或云平台的质量。例如,Instagram和Pinterest每天在Python/Django堆栈上为数百万人提供服务,该堆栈在所有流行的基准测试中都表现平平。它们通过大量缓存和高性能数据库(这通常是大型应用程序的瓶颈)缓解了这一问题


冒着回答太长的风险,我只想补充最后一件事。一、 我也曾为性能和可伸缩性而烦恼,认为我需要最强大的堆栈和配置来运行我的应用程序。这种情况已经不复存在,除非你像谷歌或Facebook那样,每一个算法都必须进行微调,因为它每天都会被轰炸十亿次。硬件(或云)资源很便宜,但开发人员/系统管理员的时间却不便宜。你应该考虑在原始性能比较中部署你的应用程序的易用性和可维护性,即使在播放的情况下,最好的部署配置也可以说是最简单的选择。

谢谢,非常详细的答案……)顺便说一下,我正在使用MongoDB来处理这个应用程序。谢谢!此外,MongoDB很好,但与任何数据库一样,它在性能上仍然有局限性。某些类型的查询比关系数据库需要更长的时间,但用于可伸缩性的切分要容易得多。取决于数据的结构化/非结构化程度。一切都是技术上的权衡:-)