【问题标题】:Microservice communication微服务通信
【发布时间】:2018-05-07 23:49:49
【问题描述】:

想象一下:

  • 您有两个称为 team 和 player 的微服务,每个都有自己的独立数据库 (postgres)。
  • 我需要在球队和球员之间建立关联,所以我需要将此关系存储在球员内部,并带有球队 ID 属性。

我有两个选择:

1) 使用 kafka,对于插入数据库的每个团队,我都会发送一个事件,玩家会监听此事件并在玩家微服务中更新自己的团队表。因此,玩家微服务将拥有有关团队和玩家实体的信息,以便建立它们之间的关系。

我们在数据复制和完整性方面存在一些缺陷。可以使用事件溯源和 cqrs 来避免。

2) 调用微服务团队,以便在视图中列出团队、建立关联并发布到玩家微服务。

缺点:调用 http 团队服务可能会宕机。

为了归档依赖关系并在微服务之间建立关系,在微服务之间进行通信的正确方法是什么。第 1 步复制的数据是否合理?

【问题讨论】:

    标签: microservices


    【解决方案1】:

    我会说选项 1 是有利的。然后,您将保持服务解耦/独立。它还可以扩展,因为其他未来的服务可以订阅相同的事件。

    我认为数据复制不是这样的问题。我更喜欢DDD 方法,即各个服务在自己的上下文中控制自己的数据。然后可以将服务变得尽可能简单,以满足其特定目的。

    【讨论】:

    • 是否有更多选项而不是接近 1?这样的关系是最好的吗?
    猜你喜欢
    • 2020-06-16
    • 2022-10-02
    • 2018-06-30
    • 2020-11-18
    • 2017-01-28
    • 2017-06-25
    • 1970-01-01
    相关资源
    最近更新 更多