在微服务之间传输数据
Transferring data between microservices
我正在 Spring Boot 的帮助下从用 Java 编写的整体中提取微服务。我们计划将整个整体划分为几个较小的微服务。
我必须启用单体和新微服务之间的通信,因为它需要来自新微服务(它有自己的数据库)的实体来执行某些操作。我想公开 REST 端点,但我将不得不复制实体。
可以接受吗?
如果是这样,那么基于从微服务中检索实体的整体式 REST 控制器应该放在与存储库相同的层中吗?
这种解决方案会增加应该避免的耦合,还有其他方法吗?
对于您认为可能对本文有所帮助的任何回复和文章,我将不胜感激。提前谢谢你。
这完全取决于您的用例。没有通用的解决方案,维护一个放置共享资源的存储库是完全可以的。
如果您对微服务非常严格,它会自行维护实体。传输数据时,您将使用不关心数据结构的中间格式,如 JSON 或 XML。微服务生活在它自己的世界里,只处理他的用例。如果另一项服务发生更改并且实体发生更改,则其他服务不应受到此更改的影响。每个服务应该只拥有它需要的数据,其他一切都不是他关心的。
因此我不会使用中央存储库,但如前所述,在用例中这是可行的方法。也许一些特定的端点可以帮助您解决这个问题。
我正在 Spring Boot 的帮助下从用 Java 编写的整体中提取微服务。我们计划将整个整体划分为几个较小的微服务。
我必须启用单体和新微服务之间的通信,因为它需要来自新微服务(它有自己的数据库)的实体来执行某些操作。我想公开 REST 端点,但我将不得不复制实体。
可以接受吗? 如果是这样,那么基于从微服务中检索实体的整体式 REST 控制器应该放在与存储库相同的层中吗? 这种解决方案会增加应该避免的耦合,还有其他方法吗?
对于您认为可能对本文有所帮助的任何回复和文章,我将不胜感激。提前谢谢你。
这完全取决于您的用例。没有通用的解决方案,维护一个放置共享资源的存储库是完全可以的。
如果您对微服务非常严格,它会自行维护实体。传输数据时,您将使用不关心数据结构的中间格式,如 JSON 或 XML。微服务生活在它自己的世界里,只处理他的用例。如果另一项服务发生更改并且实体发生更改,则其他服务不应受到此更改的影响。每个服务应该只拥有它需要的数据,其他一切都不是他关心的。
因此我不会使用中央存储库,但如前所述,在用例中这是可行的方法。也许一些特定的端点可以帮助您解决这个问题。