【发布时间】:2014-12-16 22:57:55
【问题描述】:
在关于端口绑定的 12 Factor 文章中 http://12factor.net/port-binding 有一个要求,每个应用程序 是独立的,没有注入运行时,例如雄猫。为了 建议这样做的原因是什么...对于微服务的独立应用程序有什么优势?
【问题讨论】:
标签: java paas 12factor microservices
在关于端口绑定的 12 Factor 文章中 http://12factor.net/port-binding 有一个要求,每个应用程序 是独立的,没有注入运行时,例如雄猫。为了 建议这样做的原因是什么...对于微服务的独立应用程序有什么优势?
【问题讨论】:
标签: java paas 12factor microservices
要了解有关端口绑定和自包含应用程序的规则,从设计用于运行 12 要素应用程序的平台(例如 Heroku 或 Deis)的角度来看会很有帮助。
这些平台正在流程级别扩展应用程序。当流程扩大时,平台会尝试将这些额外的工作人员放在路由网格后面,以便他们可以开始服务流量。如果应用程序不是自包含的,例如,使用 mod_jk 与前端 Apache 服务器紧密耦合,则无法通过运行更多独立的工作进程来扩展。
端口绑定的存在是为了解决平台级别的“端口代理”问题。如果每个应用程序工作人员都在端口 80 上进行侦听,则会发生冲突。为了解决这个问题,端口绑定是应用程序在平台分配的端口上侦听的约定——并作为$PORT 环境变量传入。这可以确保 a) 应用程序工作人员在正确的端口上进行侦听,并且 b) 平台知道将发往该工作人员的流量路由到哪里。
【讨论】:
我认为这是因为当需要扩展您的应用时,它为您提供了极大的灵活性。如果您使用 tomcat,则必须复制您的 .war 并将其放入另一个 tomcat 中,然后将您的请求负载平衡到其中任何一个。
相反,如果您的应用程序有一个自包含的 http 服务器,那么您只需在另一个端口上运行另一个实例,而忘记所有那些 tomcat 的东西。您仍然需要对任一应用实例的请求进行负载平衡,但看起来更直接。
【讨论】: