pop*_*der 7 java cloud deployment tomcat playframework-2.0
我创建了我的第一个Play应用程序.哪种生产最适合的部署方法?我应该将整个项目复制到生产服务器并运行play start吗?或者我应该从我的应用程序中进行战争并部署在tomcat/jboss中?哪种方式最推荐?与其轨道类型的行为相比,与它混淆.请注意,这应该是一个大数据应用程序,也可能在以后服务器加载请求.所以我们也在考虑可扩展性,可用性和性能方面.该应用程序决定部署在云中.
谢谢.
Mik*_*ins 20
正如其他人所说,使用该dist命令是为一次性应用程序部署Play的最简单方法.但是,详细说明,我在这里有一些其他的选择和我的经验:
当我有一个经常更新的应用程序时,我通常会在服务器上安装Play并通过Git执行更新.这样做,每次更新后,我只是运行play stop(停止正在运行的服务器),有时我运行play clean清除任何可能已损坏的库或二进制文件,然后我运行play stage以确保所有先决条件都存在并执行编译,然后最后play start到运行服务器以获取更新的应用程序.看起来很多,但通过快速的bash脚本很容易实现自动化.
另一种方法是将Play部署在Apache,Nginx等前端Web服务器之后.如果您想要执行某种负载平衡,这非常有用,但不需要,因为Play与自己的服务器捆绑在一起.文档:http://www.playframework.com/documentation/2.1.1/HTTPServer
使用play2war插件创建WAR存档是另一种部署方式,但除非您将其提供给已经拥有基于您提到的这些servlet容器构建的主要基础结构的人(正如许多大公司所做的那样),否则我不会推荐它.使用servlet容器增加了Play应该自然删除的复杂程度(因此集成服务器).我知道使用这种方法比前面描述的两种方法没有显着的性能提升.
当然,总有play dist一个为您创建包,您上传到服务器并play start从那里运行.这可能是最简单的选择.文档:http://www.playframework.com/documentation/2.1.1/ProductionDist
为了提高性能和可扩展性,Play中的Netty服务器将非常适合您的需求.这是一个声誉良好的链接,显示Netty具有所有框架中最快的性能和"股票"Play应用程序,位于该领域的中间位置,但在性能方面领先于Rails/Django:http://www.techempower .com/blog/2013/04/05/frameworks-round-2 /.
不要忘记,如果您需要更多负载平衡以及可用性,您可以随时更改部署体系结构,以便在前端服务器后面运行,如上所述.Play是一个微不足道的变化.我仍然不推荐使用WAR部署选项,除非像我说的那样,您已经安装了大量已安装的servlet容器,有人强迫您为其提供服务.
可伸缩性和性能还与其他因素有很多关系,例如您使用缓存,数据库配置,并发使用(Play擅长)以及底层硬件或云平台的质量.例如,Instagram和Pinterest每天为数百万人提供Python/Django堆栈,这些堆栈在所有流行的基准测试中表现平平.它们通过大量缓存和高性能数据库(通常是大型应用程序中的瓶颈)来缓解这种情况.
冒这个答案的风险太长了,我只想补充一点.我也常常担心性能和可扩展性,认为我需要最强大的堆栈和配置来运行我的应用程序.事实并非如此,除非你像谷歌或Facebook那样说话,每个算法必须经过精心调整,因为它每天会被轰炸十亿次.硬件(或云)资源很便宜,但开发人员/系统管理员时间不是.您应该考虑在原始性能比较中部署应用程序的易用性和可维护性,即使在Play的情况下,性能最佳的部署配置也可以说是最简单的选项.