Cam*_*spo 2 mesos kubernetes spring-cloud docker-swarm
通常,应用程序开发人员(以 J2EE 为例)在设计应用程序时不会优先考虑与基础结构相关的问题。很难与传统的非可编程基础设施交互。传统的方法是构建一个 .war 文件,然后可以在应用程序服务器(如 JBoss)中运行该文件。Spring 等传统框架(新版 Spring Cloud 除外)都以此为前提。现在,如果有一个容错的、弹性的部署运行时可用,例如由 Kubernetes 提供,那么似乎以同样的方式编写业务应用程序会忽略运行时提供的诸如调度之类的功能。一个具体的问题:应用程序从运行时(即 Kubernetes、Mesos 等)API 中对话(并从中受益)是典型的吗?如果是这样,你能举出一个很好的例子吗?
不,Kubernetes 的重点是您的应用程序不必“意识到”它。(Mesos 有更多“应用程序需要了解我们”的理念。)
在 Kubernetes 中,每个 pod 都会启动并监听一个端口。该应用程序不会注册它的存在,甚至不会告诉它是什么版本。当它需要与另一个服务通信时,它使用 DNS(甚至一个固定的服务 IP)来为该下游服务寻找 LB。
通常,应用程序开发人员在设计应用程序时不会优先考虑与基础设施相关的问题
一般来说,只有两件事需要担心:
1)使您的服务无状态,因此您将状态推送到边缘(数据库和/或客户端)。这允许 Kubernetes 通过运行更多副本来“扩展”您的应用程序。有状态服务几乎不可能扩展。
2) 将你的应用分解成多个“微服务”,这样你就可以在不扩展“客户登录”功能的情况下扩展“产品视图”功能。
3) 可选:转向12factor应用程序。