首页 > 解决方案 > Spring Boot - 每个 pod 运行一个特定的后台作业

问题描述

我来自 PHP/Python/JS 环境,其中将 Web 应用程序的多个实例作为单独的进程和异步任务(如队列处理)作为单独的脚本运行是一种标准。

例如。在k8s环境下,会有

这种方法很好地匹配云性质,其中工作负载可以在较少数量的强大机器和许多功能较弱的机器上调度,并允许非常精细地控制自动缩放(例如,基于特定队列中的消息数量)。

此外,开发人员和 DevOps 责任之间也有明确的分离。

最近,我尝试使用Java Spring Boot应用程序复制相同的设置,但失败了。

尽管 Java 框架说它们是“云原生”,但似乎所有文档仍然围绕单体应用程序构建,它在单独的线程中处理所有消费者和 cron 调度。

这个问题的明确答案是微服务,但这超出了范围。

我需要的是在云中为每个 pod 部署应用程序的单独部分(如仅 1 个队列侦听器),同时保持整体代码架构。

所以,问题是:

如何设计我的 Spring Boot 应用程序,以便:

我找到了几种方法来实现这样的目标,但我希望必须有一些“或多或少的标准方式”。


我想到的替代解决方案:

我主要想通过这种设置实现的是:

我是否遗漏了什么,或者只是以这种方式编写 Java 服务器应用程序不是标准的?谢谢!

标签: javaspringspring-bootkubernetes

解决方案


我不明白你的帖子的本质。您想要一个具有“单体代码架构”的应用程序。然后将其部署到几个 pod,但实际上只有部分应用程序在运行。你为什么不把你想要特别的部分分开来成为他们自己的应用程序呢?

这可能是因为我来自 Java 背景,还没有部署过单体脚本应用程序。


推荐阅读