与Spring和Kotlin在微服务架构中共享数据类



假设您有两个微服务在相互交谈,它们都作为契约共享数据类。虽然你不想在每个微服务项目中重复所有合同,但分享它们的最佳方式是什么?

正如我们所看到的,只有两种选择:

  • 复制共享合约,同时也复制代码
  • 编译第一方库并导入

我的团队不久前也遇到了同样的情况,我们决定采用第二点的变体
我们使用了Maven多模块项目,因此一个微服务生成了库,然后由第二个微服务导入。

Maven多模块项目解释如下:
https://www.baeldung.com/maven-multi-module

project1 > project2依赖关系不是一个好主意,因为它可能在未来发生变化,最终您将不得不重构整个东西。

我想做的是创建一个共享库,发布到内部Nexus或artifactory,然后你可以将其作为依赖项添加到你的项目中,这样你就有了这样的东西:

library > project1
library > project2

另一个需要考虑的想法是,如果您只共享数据传输对象,则使用类似于协议缓冲区的东西。这具有版本控制和前向兼容性的额外优势。

最新更新