我应该如何管理多个微服务之间的依赖关系(使用maven)?

问题描述 投票:0回答:1

我正在尝试构建一个 SpringBoot 微服务架构,例如 ShopSystem,它依赖于其他微服务(例如“Customer”)。作为依赖管理工具,我使用 Maven,客户创建一个 JPA 存储库,但现在当我尝试将客户依赖项放入商店系统 pom.xml 时,商店系统尝试创建另一个客户存储库。因此商店服务不会启动,因为已经存在客户存储库。 我希望商店系统中存在客户依赖性,因为我在商店中使用“Customer.class”作为 CustomerService-Methods 的返回类型,例如检索 customerId、客户的购物车等。

我应该如何处理这些服务之间的依赖关系,或者我应该只返回 customerId,由于信息隐藏、关注点分离,这将是一个整数......

如果有必要了解问题并且它们在单独的 SpringBoot 应用程序进程中运行,则这些服务通过 Rest 与 OpenFeign 连接。

我见过一些带有parent.pom的东西,但我不确定这是否能解决我的问题,对我来说这似乎不是一个干净的解决方案。

我试图排除 customer.jar 中的“数据库”包,因为我只想从服务中删除一个特定的类,而不需要其他任何东西,但这并不像我想象的那样有效。如果这可行,这是正确的做法还是应该在实践中避免这样做,因为在我看来,这将是解决我的问题的最简单的解决方案?

java spring maven jpa
1个回答
0
投票

在微服务架构中,内部服务逻辑或数据库模型不应该暴露给其他微服务。

在客户服务中定义 REST API 合约,公开必要的操作,例如检索客户详细信息。在 Customer 和

CustomerDTO
服务中创建 DTO 类,例如
ShopSystem
,并在
OpenFeign
服务中使用
ShopSystem
客户端来使用 API。 DTO 对象仅包含
ShopSystem
需要的必要字段,例如
customerId
等。

ShopSystem
不直接依赖于客户服务的数据库或内部实现。

© www.soinside.com 2019 - 2024. All rights reserved.