为了给你一点上下文,我正在开发一个游戏,一个在线足球经理,我有以下微服务:
- 俱乐部
- 季节
Clubs
微服务负责俱乐部管理,Season
负责赛季管理。
Season
服务的职责之一是返回联赛排名,以及俱乐部名称和位置。在Season
服务中,我只存储club_id
,但为了满足返回积分榜的请求,我还需要位于Clubs
服务中的俱乐部名称。
现在,我可以在Clubs
服务中实现一个REST端点来返回俱乐部名称,但这些服务将不再松散耦合。
正如我从阅读中看到的,我有两个选择,它们是:
-
在
Season
服务中有一个clubs
缓存,用于处理club_id
和club_name
之间的关系(可以是数据库表(。在这种情况下,数据将被复制(在大多数情况下这是可以的(,但我需要与Clubs
服务调度的域事件保持同步。 -
另一种选择是创建另一个微服务作为API组合模式。因此,这个API将从两个服务中获取数据,丰富响应并发送回调用方。
现在,我不确定应该采取哪种方法。哪一个缺点较少?
两者都在Saga模式中进行了描述。两者各有利弊。您必须根据您的NFR进行选择。