java - 为什么 12 Factor 应用程序应该是独立的?

标签 java paas 12factor microservices

在关于端口绑定(bind)的 12 因素文章中 http://12factor.net/port-binding要求每个应用程序 是独立的,没有注入(inject)运行时,例如 Tomcat 。为了 这样做的原因是什么...微服务的独立应用程序有哪些优势?

最佳答案

要了解有关端口绑定(bind)和独立应用程序的规则,从设计用于运行 12 因素应用程序的平台的角度来看问题会很有帮助,例如 HerokuDeis .

这些平台正在进程级别扩展应用程序。当进程扩大时,平台会尝试将这些额外的工作人员放置在路由网格后面,以便他们可以开始服务流量。如果应用不是独立的,例如,使用 mod_jk 与前端 Apache 服务器紧密耦合——则无法通过运行更多独立的工作进程来扩展。

端口绑定(bind)的存在是为了解决平台级别的“端口代理”问题。如果每个应用程序 worker 都在端口 80 上监听,则会发生冲突。为解决这个问题,端口绑定(bind)是一种约定,应用程序借此在平台分配的端口上进行监听——并作为 $PORT 环境变量传入。这可确保 a) 应用程序工作人员在正确的端口上监听,以及 b) 平台知道将发往该工作人员的流量路由到何处。

关于java - 为什么 12 Factor 应用程序应该是独立的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26491425/

相关文章:

java ModuleLayer : ModuleLayer. Controller 添加方法不起作用

java - Java中中缀表达式的正则表达式问题

java - Java 正则表达式库是否针对任何字符进行了优化。*?

azure - 辅助角色与 Azure Batch

java - 12 因素应用程序 - 依赖泄漏

spring-boot - 在 Spring Boot 中使用 dotenv 文件

java - 可选择在 map 和 orElseGet 中使用通用通配符

python - 如何在 OpenShift 上使用 mongohq 或 mongolab

architecture - 依赖隔离意义

java - CloudBees XML 配置与命令行工具