在微服务应用程序中打包公共代码

packing common code within a microservice application

我即将开始一个微服务项目的工作,它有一个共享的 postgres 数据库,由 hibernate 访问。我对感兴趣 。打包代码库的最佳方式是什么。

多个微服务将访问数据库,这可能会导致一个或多个微服务想要访问同一个 java DTO 对象。

我可以将所有 DTO 对象打包到公共 jar 中并授予微服务访问 jar 的权限,或者我在不同的微服务之间共享不同的 DTO,这可能会导致同一 DTO 的多个实例,但会保留单独的微服务代码库纯.

我通常的首选方法是构建一个通用的 jar 文件,以减少必须维护的代码量。

有没有学校解决这个问题?

同样的问题还有一些共同的常量也需要共享

微服务不共享数据库,或者更一般地说:

Microservices do not share a common state.

存在三种可能的情况:

一个: 您尝试拆分一个小用例。那么你只需要一个微服务。

二:数据管理是一个单独的问题。然后您应该创建一个独特的服务来处理数据。该服务随后将被您的其他服务使用。

三: 您正试图在一个数据库中管理多个不同的用例。然后,您的每项服务都会有一个专用数据库。

实际上,即使在执行 two 时,您可能仍会执行 three,因为您的微服务应保持功能(响应式且至少部分很有用),即使他们使用的服务由于某种原因而中断。

关于公共常量:它们可能需要冗余地打包到每个微服务中。不过,您可以共享一个公共库(阅读:maven artifact)。