SpringCloud—应用程序开发人员在kubernetes中运行应用程序意味着什么?

yrwegjxp  于 2021-06-26  发布在  Mesos
关注(0)|答案(1)|浏览(405)

通常,应用程序开发人员(以j2ee为例)在设计应用程序时不会优先考虑与基础设施相关的问题。很难与传统的不可编程基础设施进行接口。传统的方法是构建一个.war文件,然后可以在jboss等应用服务器上运行。像spring这样的传统框架(除了springcloud的新风格)将此作为前提。现在,如果kubernetes提供了一个容错的弹性部署运行时,那么用同样的方法编写业务应用程序似乎会忽略运行时提供的诸如调度之类的功能。一个具体的问题:对于应用程序来说,从运行时(即kubernetes、mesos等)api谈论(并从中受益)是典型的吗?如果是的话,你能举个好例子吗。我发现的大多数资源都集中在操作方面,而不是开发人员。

u3r8eeie

u3r8eeie1#

不,kubernetes的重点是你的应用程序不必“意识到”它(mesos有更多的“应用程序需要了解我们”理念。)
在kubernetes中,每个pod只是启动并监听一个端口。该应用程序不注册它的存在,甚至不告诉它是什么版本。当它需要与另一个服务对话时,它使用dns(甚至是一个固定的服务ip)来查找该下游服务的lb。
通常,应用程序开发人员在设计应用程序时不会优先考虑与基础设施相关的问题
一般来说,只有两件事需要担心:
1) 使您的服务成为无状态的,这样就可以将状态推到边缘(数据库和/或客户机)。这允许kubernetes通过运行更多副本来“扩展”你的应用程序。有状态服务几乎不可能扩展。
2) 将你的应用分成多个“微服务”,这样你就可以扩展“产品视图”功能而不必扩展“客户登录”功能。
3) 可选:使用12factor应用程序。

相关问题