在前端使用 2 个或更多微服务响应的最佳方法是什么 [关闭]

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

我们有 2 个微服务,第一个用于用户列表,第二个用于状态列表。我们必须显示带有州名称的用户列表。

我认为可能有两种方式:

方法一:

使用循环并通过多次点击状态微服务来获取每个用户的状态。

问题:我们可能有一个超过 10 万用户的列表,我认为访问状态服务 10 万次不太好。

方法 2

获取所有用户和所有状态,然后使用循环合并这两个数据。

问题:因为我们可能有超过 100k 的用户,如果我们有 1,000 个州。然后我们必须执行循环 100k x 1k = 1000k 次。

还有其他方法吗?我不太清楚我们是否可以使用 RabbitMQ 或 Kafka 实现这一目标

截图:

node.js angular azure-functions rabbitmq microservices
2个回答
-1
投票

我不是专家,但我认为最好的方法是:

promise.all([getAllUser(), getAllStates()]).then((userList, stateList) => {
   let stateDict= {};
    for(let userIndex in userList){
        let user = userList[userIndex];
        if(!stateDict[user['state_id']]){
           stateDict[user['state_id']] = stateList.find((item)=> item.id == user['state_id'])
        }
       //You can change the merging logic for your wish
        userList[userIndex]= {...stateDict[user['state_id']],...user  }
    }

})

这里会有最大值:

100 k + 1k = 101k
循环


-1
投票

我认为您将获得的最佳答案是使用微服务

Pattern: Client-side UI composition
。您将在本文中获得所有解释https://microservices.io/patterns/ui/client-side-ui-composition.html

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