代码之家  ›  专栏  ›  技术社区  ›  user320587

在两个微服务之间共享域模型的最佳实践

  •  1
  • user320587  · 技术社区  · 8 年前

    关于如何在两个微服务之间共享域模型,是否有任何最佳实践或指导原则?

    我有一个微服务(1),它提供与所有CRUD资源(例如,订单)交互的端点,还有一个微服务(2),它在资源(订单)上执行特定的非CRUD任务。微服务(2)几乎需要所有订单属性来执行其操作。在这种情况下,创建域模型的公共共享库并在两个服务之间共享有意义吗?从技术上讲,我可以将1和2结合在一起,但微服务(2)需要支持可扩展性,因为它占用大量内存和CPU。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Ward Clark    8 年前

    据我所知,这两个服务似乎需要共享相同的数据,您正在考虑共享用于读取/修改此数据的库。

    它们似乎属于同一个“有界上下文”,因此最好将它们视为一个独特的服务。

    如果您真的无法将它们的数据和逻辑分开,那么最好将它们放在一起。

    我不认为相同微服务中的组件必须遵循相同的部署模式:它们将是相同的微服务,由相同的团队管理,总是一起部署,共享相同的源存储库,但它们将使用不同的策略部署,因为只有第二个组件需要高可扩展性。

    所以,相同的有界上下文,相同的服务,但不同的组件。

    我没有太多的经验,所以把这作为我个人的想法。