【问题标题】:How one microservice in Ranking system should communicate to another microservice if the later one gives data required for ranking如果另一个微服务提供排名所需的数据,排名系统中的一个微服务应如何与另一个微服务通信
【发布时间】:2020-07-01 15:40:40
【问题描述】:

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

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

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

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

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

我相信我有两种选择。

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

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

【问题讨论】:

    标签: microservices system-design


    【解决方案1】:

    这两个选项都可以使用,但有一些注意事项。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-24
      • 2021-05-02
      • 2020-04-27
      • 2018-03-23
      • 2018-03-04
      • 2020-11-24
      • 1970-01-01
      相关资源
      最近更新 更多