我基于微服务架构构建了一个应用程序,我现在有两个服务,它们都有一些通用代码。
这样做的传统方法是什么?(不同的项目、模块等)我还想要一个关于如何在 git 存储库中处理它们的参考资料(对于所有人?对于每个人?)
我基于微服务架构构建了一个应用程序,我现在有两个服务,它们都有一些通用代码。
这样做的传统方法是什么?(不同的项目、模块等)我还想要一个关于如何在 git 存储库中处理它们的参考资料(对于所有人?对于每个人?)
在过去的项目中,常见的依赖项放在他们自己的模块中。在我的情况下,它通常是一个 JAR 打包的 maven 项目。
是否使用多模块 maven 项目或独立项目的决定取决于依赖项目是否足够相似以适合一个多模块项目。我认为将通用代码放在自己的项目中可能会带来更大的灵活性。
将接口代码(处理 HTTP 的代码)与业务逻辑分开总是一个好主意。本质上,微服务变成了一些 HTTP 接口代码,将对象/数据传入和传出它自己模块中的业务逻辑代码。然后,业务逻辑代码可以用于其他甚至可能与 HTTP 无关的项目,例如某处执行清理或操作自动化任务的守护进程。
我觉得您应该将这两个服务合并在一起,使其成为一个服务。微服务架构背后的理念是服务应该能够相互独立部署并且完全自治。单个服务应该能够在不影响其客户的情况下更改/发展其实现。
如果听起来两个服务共享相同的代码库,那么对它的任何更改/改进都将导致部署两个服务,这些服务原本是独立的,并且偏离了微服务架构试图建立的前提。