部署Spring Boot项目时PCF在内部如何工作

时间:2019-04-16 03:08:36

标签: spring-boot tomcat pivotal-cloud-foundry pcf

PCF将运行嵌入在Spring启动jar中的Tomcat,还是运行自己的tomcat。在PCF中,我们从不提及端口号。在经典方法中,我们以不同的端口号启动3个Tomcat实例,并在此之前具有apache服务器。 PCF是否以相同的方式工作。

2 个答案:

答案 0 :(得分:2)

这是一个相当广泛的问题,所以我将以相当广泛的答复来回答,但是如果您倾向于进一步研究,可以将您链接到可以找到更多详细信息的地方。

  

在部署Spring Boot项目时PCF在内部如何工作   PCF将运行嵌入在Spring启动jar中的Tomcat还是运行自己的tomcat。

当您运行cf push -p my/cool/file.jar(甚至是file.war)时,cf cli从该存档中提取所有内容并将其推送到CF。 CF存储您的应用程序文件,然后上演您的应用程序。

在暂存期间,Java构建包运行。它查看所有推送的文件,并尝试确定如何处理它们。它知道如何处理几种不同类型的应用程序[1],包括标准WAR文件和Spring Boot应用程序。该构建包将检查您的应用程序,以查看其在[2]中的支持类型之一,然后选择第一个匹配项。

选择应用程序类型后,它将运行并安装运行应用程序所需的内容。对于Spring Boot应用程序,基本上就是JVM。对于WAR文件,它将安装Tomcat和JVM。此外,它还会写出CF启动应用所需的配置和启动命令。

至此,分阶段完成,您将拥有所谓的“液滴”。如果您对暂存工作流程还有其他疑问,请阅读此处以获取更多详细信息[3]。

此时,将启动该应用程序。平台接收已创建的小滴,并执行构建包指定的命令以启动应用程序[4]。如果一切顺利,则您的应用程序将启动并在CF上运行。

  

在PCF中,我们从不提及端口号。

正确。该平台将告诉您应用程序应侦听的端口。对于Java应用程序,您无需执行任何操作。 Java buildpack将处理配置Spring Boot或Tomcat以在正确的端口上启动和侦听的情况。

对于Spring Boot应用程序,您可以查看启动命令以了解其运行方式。对于Tomcat,它发生在Java buildpack [5]生成的server.xml中。

  

在经典方法中,我们以不同的端口号启动3个Tomcat实例,并在此之前具有apache服务器。 PCF是否以相同的方式工作。

是,不是。您运行的每个应用程序可以具有多个实例。如果将应用程序扩展为具有三个实例,则大致类似于经典方法中具有3个Tomcat实例。

主要区别是前面没有Apache Web服务器。在Cloud Foundry上,这不是必需的,因为它具有自己的负载均衡器Gorouter [6],该负载均衡器处理代理到您的应用程序的流量并在可用的应用程序实例之间进行负载均衡。

这是CF新手常犯的经典错误。他们尝试复制经典架构,并在不需要时将反向代理鞋钉到他们的应用程序中。这是CF的好处之一。它以可扩展的方式处理将流量路由到您的应用程序,使您有更多时间专注于应用程序。

答案 1 :(得分:0)

不。简单的答案是您的应用程序jar的每个实例都在PCF内自己的容器中运行。因此,使用相同的端口号不会产生冲突。