繁体   English   中英

如何跨微服务拥有通用的 DTO 或实体

[英]How to have common DTOs or entities across Microservices

假设我有 5 个不同的微服务。 每个都使用一个公共 DTO,即 UserDTO.java 或实体 User.java。

如果所有人都可以访问这些 DTO,我想出了两种方法

  1. 将所有这些 DTO 放在所有微服务中

  2. 要创建一个项目,说Project-commons并保留所有常见的 DTO,然后在所有微服务中添加该项目的依赖项

我知道跨微服务共享通用 DTO 会扼杀微服务的概念/原则,但我想知道还有其他可用的方法吗?

实际上,只要您严格控制该库的版本,共享一个公共代码库并不会消除将更改隔离到一个微服务的概念/原则。 这样,一个微服务团队可以决定它需要共享库中的新功能,并且可以增加库的版本号并添加新功能。 使用该库的现有微服务不会受到影响,除非它们独立决定开始使用该库的较新版本。

所以这就是我们要做的。 我们有在我们的微服务中共享的 jar 文件,但我们将这些 jar 文件的特定版本推送到 Nexus 并按每个微服务中的版本号引用这些 jar 文件。

请注意,此概念与依赖于第三方组件(如 Apache Commons 库)的两个微服务没有区别。 仅仅因为 Apache 推出了新版本的库并不意味着任何人的二进制文件都会发生变化。 每个依赖于该库的代码库都可以决定是否以及何时迁移到新版本,而与另一个代码库可能使用的版本或库的最新版本无关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM