我们可以有用于后台批处理的微服务架构吗?



最近我开发了一个弹簧批处理应用程序,其中配置了 3 个作业。只需部署一个 jar 即可执行三个 3 作业。

如果我们得到另一个业务需求,我很乐意在现有配置中添加一个新作业,它会正常工作。我们不会为此作业创建单独的 jar。

我正在浏览一些微服务教程。我注意到我们为每个微服务创建了单独的代码存储库。 在春季批次中,我们仅将所有作业添加到一个罐子中,尽管它们是像小型微服务这样的独立作业。

我的问题是,我们是否也应该为后台批处理提供微服务类型的架构或代码存储库? 如果是,我们是否必须为每个作业创建单独的存储库? 如果不是,那为什么?

提前谢谢。

将多个独立的作业打包在一个罐子中首先违背了微服务方法。没有什么可以阻止您为所有作业使用单个代码存储库,但由于以下原因,我不会将它们打包在一个 jar 中:

  • 独立生命周期:如果修复作业中的大作业,则无需重新部署包含所有其他(不受影响的(作业的单个整体 jar
  • 版本控制:作业可能以不同的速度发展。拥有一个包含不同版本不同作业的罐子并不理想
  • 占用空间小:就网络使用而言,必须部署一个小 jar 来更新单个作业比每次都传输一个胖 jar 更好、更高效。
  • 以及所有其他让一件事做一件事并做好的好理由

最新更新