如果后者提供排名所需的数据,排名系统中的一个微服务应如何与另一个微服务通信

How one microservice in Ranking system should communicate to another microservice if the later one gives data required for ranking

我正在设计一个微服务,它将根据用户采取的行动(例如对问题给出的正确答案的数量)对用户进行排名。

A --> 我正在设计的系统。它根据来自 B 的数据更新排名并保存在数据库中。

B ---> 向 A 提供数据的系统。基本上,它保存特定用户执行的操作。

微服务A根据B的数据更新排名。

我想每天更新一次用户排名。假设在午夜假设它不是关键数据,并且我希望 A 在将数据提供给 B 时避免计算用户对用户执行的每个操作的排名。

我相信我有两种选择。

  1. 从 A 到 B 进行 API 调用,并根据午夜时间戳找到所有新数据。
  2. 在 A 和 B 之间放置一个消息代理。B 作为生产者将生产消息,A 将使用它。

如果它们是有效的方法,请告诉我。如果是,哪个更好或者我们可以通过其他方式实现。

这两个选项都可以使用,但需要注意。

选项 A:每天 API 调用一次(可能是午夜,具体取决于区域设置)

  • 如果预计要获取的记录数不会增长太多,则可能没问题,否则不可行
  • 请注意,如果有太多用户需要获取他们的数据并进行计算,您可能会使其他服务过载
  • 这个选项复杂度较低,容易上手。如果开始时规模不大,可能是首选

选项 B:介于两者之间的消息代理

  • 确保配置的保留时间足够长
  • 由于消息被缓冲,它提供了更多的弹性
  • 如果您的操作数量和用户群快速增长,这会及时扩展得更好
  • 消息代理总是额外的复杂性,但也许您可以使用来自云的东西