微服务通信

时间:2017-11-24 01:33:52

标签: microservices

想象一下:

  • 你有两个名为team and player的微服务,每个微服务都有你自己的和分离的数据库(postgres)。
  • 我需要在团队和玩家之间进行关联,所以我需要将此关系存储在具有团队ID属性的玩家中。

我有两个选择:

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

我们在这里有一些关于数据复制和完整性的缺点。可以使用事件源和cqrs来避免。

2)调用微服务团队以便在视图中列出团队,进行关联并发布给玩家微服务。

缺点:调用http团队服务可能会失效。

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

1 个答案:

答案 0 :(得分:1)

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

我认为数据复制不是一个问题。我更喜欢DDD方法,即各个服务在自己的上下文中控制自己的数据。然后,服务可以根据需要进行,以满足其特定目的。