Skip to content

Latest commit

 

History

History
30 lines (16 loc) · 2.78 KB

第十一章节.md

File metadata and controls

30 lines (16 loc) · 2.78 KB

CHAPTER 11

Port Binding

因素7表明云原声应用通过端口绑定的方式暴露服务

避免web容器决定端口

Web应用程序,尤其是那些已经在企业中运行的应用程序,通常在某种服务器容器中执行。Java世界充满了像Tomcat、JBoss、Liberty和Web-Sphere这样的容器。其他web应用程序可能在其他容器中运行,如Microsoft Internet Information Server(IIS)

在非云环境中,web应用程序被部署到这些容器中,然后容器负责在应用程序启动时为其分配端口

在管理自己的web服务器的企业中,一种极为常见的模式是在同一容器中承载多个应用程序,通过端口号(或URL层次)将应用程序分隔开来,然后使用DNS在该服务器周围提供用户友好的外观。例如,您可能有一个名为appserver的(虚拟或物理)主机,以及许多已分配端口8080到8090的应用程序。为了避免让用户记住端口号,DNS用来将app1这样的域名与appsever:8080,aap2与appserver:8081相关联,等等

避免微观管理端口分配

拥抱平台即服务(platform-as-a-service)允许开发人员和devops不再需要执行这种微观管理。您的云提供商应该为您管理端口分配,因为它可能还管理路由、扩展、高可用性和容错,所有这些都需要云提供商管理网络的某些方面,包括将主机名路由到端口以及将外部端口号映射到容器-内部端口

端口绑定最初的12个因素之所以使用export这个词,是因为它假定云原生应用程序是自包含web容器的,并且从不注入任何类型的外部应用程序服务器或容器

现有企业应用程序的实用性和性质可能会使以这种方式构建应用程序变得困难或不可能。因此,限制性稍小的准则是,应用程序和应用程序服务器之间必须始终保持1:1的相关性。换句话说,您的云提供商可能支持web应用容器,但它不太可能支持在同一容器中托管多个应用程序,因为这使得持久性、可扩展性和可恢复性变得几乎不可能

现代应用程序的端口绑定对开发人员的影响相当简单:您的应用程序可能以http://localhost:12001运行在开发人员本机上,在QA中,它可能运行在http://192.168.1.10:2000上,生产环境运行在http://app.company.com。使用导出端口绑定开发的应用程序支持这种特定于环境的端口绑定,而无需更改任何代码

应用即后端服务

最后,为允许外部化的运行时端口绑定而开发的应用程序可以充当另一个应用程序的支持服务。这种灵活性,加上在云上运行的所有其他好处,是非常强大的

项目主页