微服务:数据共享与API组合



为了给你一点上下文,我正在开发一个游戏,一个在线足球经理,我有以下微服务:

  • 俱乐部
  • 季节

Clubs微服务负责俱乐部管理,Season负责赛季管理。

Season服务的职责之一是返回联赛排名,以及俱乐部名称和位置。在Season服务中,我只存储club_id,但为了满足返回积分榜的请求,我还需要位于Clubs服务中的俱乐部名称。

现在,我可以在Clubs服务中实现一个REST端点来返回俱乐部名称,但这些服务将不再松散耦合。

正如我从阅读中看到的,我有两个选择,它们是:

  • Season服务中有一个clubs缓存,用于处理club_idclub_name之间的关系(可以是数据库表(。在这种情况下,数据将被复制(在大多数情况下这是可以的(,但我需要与Clubs服务调度的域事件保持同步。

  • 另一种选择是创建另一个微服务作为API组合模式。因此,这个API将从两个服务中获取数据,丰富响应并发送回调用方。

现在,我不确定应该采取哪种方法。哪一个缺点较少?

两者都在Saga模式中进行了描述。两者各有利弊。您必须根据您的NFR进行选择。

最新更新