如何在微服务架构中的微服务之间共享Java模型

fat*_*ma 5 java spring-boot microservices

我正在设计新应用程序的架构,选择了微服务架构,在架构中我注意到我有不同微服务使用的模型。我想知道是否有一种方法可以在微服务之间共享模型代码,而不必在每个微服务中编写模型代码。

顺便说一下,我正在为我的应用程序使用spring boot框架。

Kar*_*cki 8

您应该只共享定义微服务API的模型,例如Protobuff .proto文件或从中生成的Java类。

通常,这可以通过创建一个单独的项目或将您的微服务项目转换为一个多模块项目来完成,其中模块之一是带有接口定义的瘦API模块。

在微服务之间共享代码没有错,但是您必须小心。共享太多的内部实现细节,最终您将获得分布式的整体架构,而不是微服务


小智 8

您可以创建一个单独的具有通用模型的项目,创建该项目的 jar 并在其他微服务中添加该 jar 的依赖项。

但我有实践经验,维护这个通用项目是一场噩梦,因为每次更改都必须创建一个新版本并更新所有微服务的构建脚本。

在我看来,我们不应该在微服务之间共享模型。

  • 我知道我这次讨论迟到了。但是,如果您决定不使用单独的项目来处理所有模型,并且决定在每个微服务中重用每个模型,那么您最终会遇到同样的问题。当模型更改时,您必须更改每个微服务的所有模型文件,这最终会增加工作量,然后只需更新每个微服务的依赖项即可。 (3认同)

Meb*_*Joe 6

在微服务架构中,每一个都是绝对独立的,并且必须隐藏内部实现的细节。

如果您共享该模型,则您将耦合微服务并失去其中一个最大优势,即每个团队都可以不受限制地开发其微服务,并且无需了解其他微服务如何发展。请记住,您甚至可以在每种语言中使用不同的语言,如果您开始耦合微服务,这将很困难。

https://softwareengineering.stackexchange.com/questions/290922/shared-domain-model-between-different-microservices