每当我部署一个spring boot应用程序时,它都嵌入了tomcat容器。它依赖于容器可用。这是否意味着它们不符合12因素应用程序,取决于运行时注入Web服务器?
TCP路由对非http服务意味着什么?
端口绑定
通过端口绑定导出服务。 12因素的应用程序是 完全独立,不依赖于运行时注入 Web服务器进入执行环境以创建面向Web的 服务。
对于Pivotal Cloud Foundry,非HTTP服务需要TCP路由 为了重新塑造。
答案 0 :(得分:2)
当您在本地运行时,它是一个Spring启动应用程序,它使用default
个人资料运行。因此,Spring将在运行时利用您的端口和其他设置。
当您推送到云时,春季启动应用程序将使用cloud
配置文件运行。在cloud
配置文件中,端口设置由云指定,您提供的设置将被忽略。
在PCF中,Diego小区托管所有应用程序实例。迭戈小区有自己的CIDR块用于托管的应用程序。因此,您的应用实例将获得该范围内的IP。并且您无法通过其IP访问该应用程序。
Diego cell vm虽然拥有来自其运行的网络的CIDR范围的IP。 Diego cell还使用NAT-ing将app ip映射到Diego cell vm上的端口。这就是流量路由到您的应用的方式。
正如您所看到的,PCF中的Diego单元不能依赖您提供的端口。相反,它将在可能的地方运行应用程序,并将NAT运行到可用端口。
看看Diego Reference Architecture。
关于您的第二个问题,Cloud Foundry中的Go-Routers将请求路由到应用实例。默认情况下,仅在Go-Routers上启用http / https流量。您可以在Go-Routers上启用TCP路由。我相信,这是在PCF 1.9中增加的。 这是documentation。