gpt4 book ai didi

php - 微服务客户端循环依赖

转载 作者:行者123 更新时间:2023-12-03 12:12:48 24 4
gpt4 key购买 nike

在微服务架构中,使用客户端包在服务之间进行通信,我们遇到了两个客户端包相互依赖的问题,从而产生了循环依赖。
我们正试图为此找出最佳解决方案,我想知道是否有人能够帮助或指出我们正确的方向。
这是场景:

  • 汽车和保险两项服务
  • 两个客户端包,CarClient 和 InsuranceClient。

  • 每当任何服务需要与 Car 服务通信时,它都应该使用 CarClient 包来完成。每当任何服务需要与 Insurance 服务通信时,它都应该使用 InsuranceClient 包。
    CarClient 包有一个数据传输对象 (DTO) Car它的属性之一是 insurance .此属性的类型是 InsuranceClient 包中提供的 DTO, CarInsurance .
    问题是当 CarInsurance DTO 需要访问 CarClient 包中可用的枚举, CarTypeEnum .现在我们有两个相互依赖的包。
    Microservice Clients Circular Dependency
    我能想到的可能解决方案:
  • 这是由于糟糕的设计。重新设计服务和包以防止这种循环依赖。
  • 将枚举移动到单独的包中,因此,两个客户端都可以依赖这些包,但客户端不会相互依赖。

  • 任何帮助表示赞赏。

    最佳答案

    您不应该在服务之间共享任何代码,因为这违背了它们 100% 独立的全部目的。
    在 MS 架构中,CarDTO 仅具有与汽车相关的属性。如果您需要有关保险的信息,可以单独调用保险服务以获取只有保险属性(property)的 InsuranceDTO。
    调用任一服务时,您将使用某个键将它们联系在一起。 IE。您将使用从客户服务处获得的 customerId 调用汽车服务,并且您的 CarDTO 将有一个 carId,然后您可以使用 customerId/carId 调用保险服务以获取 InsuranceDTO。

    关于php - 微服务客户端循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63942654/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com