我应该在微服务之间共享我的库吗?

时间:2020-07-01 16:19:46

标签: microservices clean-architecture

我获得了微服务的第一次经验,并且需要在重要的决策方面提供帮助。

示例:我们有

  • CustomerService(包含CustomerDTO)
  • InvoiceService(包含CustomerDTO,InvoiceDTO)
  • PrintService(包含CustomerDTO,InvoiceDTO)

如您所见,这里我有大量的代码重复,每次修改CustomerDTO时,都需要在3种不同的微服务中进行。

我可能的解决方案是将重复的类排除在一个库中,并在微服务之间共享该库。但是我认为这将打破微服务方法。

那么,解决我的问题的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

没有像大多数事物一样解决这一问题的正确方法。每种方法都各有利弊,具体取决于您的情况。

这可能是您的主要选择

  1. 创建新的公共服务:

    如果您的逻辑足够复杂,那么您就有许多需要此逻辑的服务,并且您有时间在忙于创建一个可以满足此需求的通用服务。这可能不是一件小事,因为您现在必须创建一个需要管理/部署/扩展的服务

  2. 只接受重复项:

    这似乎是违反直觉的,但是,如果逻辑足够小,则最好将其复制而不是将微服务与库耦合

  3. 创建库

    现实生活与教科书不同。我们经常受到时间和预算的限制。如果您的微服务足够小,并且您知道此逻辑不会改变太多,或者您只需要解决问题,那么重复将花费更多时间。采取这种方法。没有什么可说的,您有时间/预算无法解决这个问题。无数的博客文章会为此而尖叫,但是,不是您,也不知道您的项目情况。