过滤 REST API 响应和单一责任

问题描述 投票:0回答:1

有一个在线赌场应用程序想要根据特定玩家的游戏类型获取经过过滤的帐户列表,这些玩家可根据如下请求获得注册奖金:

GET/players/accounts?playerId=123,gameType=roulette

还有两个微服务:账户、游戏。 帐户服务有一个玩家ID、帐户类型ID、帐户编号的列表。 游戏服务有一个gameType、accountTypeId列表

在高负载微服务架构中将此应用程序与微服务集成的架构解决方案应该是什么?

我的选择:

  1. 选项#1 如果您按照开头所述向帐户服务提出请求,则违反了单独责任原则。因为帐户服务需要向游戏服务发出第二个请求。因为要过滤帐户列表,他需要按游戏类型提供帐户类型的键:值。
  2. 选项#2 对微服务架构的研究催生了网关 API 模式,该模式表示您需要构建一个聚合服务来发出请求并收集响应。这是正确的决定吗?你能补充一些优点和缺点吗?您看到什么替代方案?
architecture microservices domain-driven-design integration api-design
1个回答
0
投票

这是另一种解决方案。

假设通常每个微服务都有自己的数据库。如果您知道您的微服务 A 将查询大量微服务 B,因为需要其中的一些数据,另一种选择是将相关数据从 B 复制到 A。这样,B 仍然是其数据的“真实来源”,但 A 变得更加自主。

此选项带来了另一个问题,即 B 和 A 之间的数据一致性。最常用的同步技术是每当 B 内的数据被修改时,从 B 向 A 发送一个事件。该事件有一个有效负载,其中包含更新数据所需的所有必要信息A面。
该解决方案显然需要设置一个事件/消息总线,其中 A 订阅 B 的域事件。

© www.soinside.com 2019 - 2024. All rights reserved.