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

Microservices 如果一个微服务提供排名所需的数据,排名系统中的一个微服务应如何与另一个微服务通信,microservices,system-design,Microservices,System Design,我正在设计一个微服务,它将根据用户的行为对用户进行排名,比如对问题给出正确答案的数量 A-->我正在设计的系统。它根据来自B的数据更新排名,并保存在数据库中 B--->向A提供数据的系统。基本上,它保存特定用户执行的操作 Microservice A根据B提供的数据更新排名 我想每天更新一次用户排名。假设在午夜,这不是关键数据,我希望A在向B提供数据时避免计算用户执行的每个操作的排名 我相信我有两个选择 从A到B进行API调用,并根据午夜的时间戳查找所有新数据 在a和B之间放置一个消息代理。作为

我正在设计一个微服务,它将根据用户的行为对用户进行排名,比如对问题给出正确答案的数量

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

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

Microservice A根据B提供的数据更新排名

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

我相信我有两个选择

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

  • 请让我知道这些方法是否有效。如果是,哪一个更好,或者我们可以用另一种方法实现。

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

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

    • 若要获取的记录数预计不会增长太多,那个么这可能是正常的,否则就不可行
    • 如果有那么多用户需要获取数据和计算,那么您可能会使其他服务过载
    • 此选项的复杂性较低,易于启动。如果一开始规模不大,可能会优先考虑
    选项B:中间的MessageBroker

    • 确保以一种方式配置保留期,使其能够持续足够长的时间
    • 因为消息是缓冲的,所以它提供了更多的弹性
    • 如果您的行动数量和用户群快速增长,这将在时间上更好地扩展
    • MessageBroker总是会增加复杂性,但也许您可以使用云计算中的某些东西