Rest 设计问题:聚合来自多个微服务的数据并显示在UI中的最佳方式

Rest 设计问题:聚合来自多个微服务的数据并显示在UI中的最佳方式,rest,design-patterns,microservices,Rest,Design Patterns,Microservices,我们有一个场景,需要聚合来自多个服务的数据并显示在UI中。当前场景是当代理登录时,我们需要显示分配给该代理的案例。案例信息需要从多个微服务中聚合。一次将有大约1K个案例分配给代理,所有这些都需要显示给代理,以便他可以根据特定案例数据执行排序 在这种情况下,显示数据的最佳方法是什么?我们是否应该为每种情况对多个服务进行API调用并聚合和显示?或者有更好的方法来实现这一点 否。您肯定不会在运行时调用多个API来聚合数据。即使并行调用API,也会造成巨大的延迟 您需要预先聚合案例详细信息,并使用流媒体

我们有一个场景,需要聚合来自多个服务的数据并显示在UI中。当前场景是当代理登录时,我们需要显示分配给该代理的案例。案例信息需要从多个微服务中聚合。一次将有大约1K个案例分配给代理,所有这些都需要显示给代理,以便他可以根据特定案例数据执行排序


在这种情况下,显示数据的最佳方法是什么?我们是否应该为每种情况对多个服务进行API调用并聚合和显示?或者有更好的方法来实现这一点

否。您肯定不会在运行时调用多个API来聚合数据。即使并行调用API,也会造成巨大的延迟

您需要预先聚合案例详细信息,并使用流媒体平台(如Kafka)将其缓存在分布式缓存系统(如Redis或memcached)中。另外,将预先聚合的案例详细信息存储在持久数据库中。基本上,它是一种物化视图

缓存将使您能够快速向用户提供案例详细信息,而无需任何明显的延迟。流媒体将帮助您保持缓存和数据库聚合的近实时更新。将物化视图存储在数据库中可以避免将所有内容存储在内存中。您可以使用LRU缓存。只有最近使用的数据才会在缓存中。若您需要显示任何不在缓存中的案例数据,您可以从数据库中读取它并将其存储在缓存中以备将来的请求


我建议您阅读这两篇Martin Kleppmann的文章,并且

否。您肯定不会调用多个API来在运行时聚合数据。即使并行调用API,也会造成巨大的延迟

您需要预先聚合案例详细信息,并使用流媒体平台(如Kafka)将其缓存在分布式缓存系统(如Redis或memcached)中。另外,将预先聚合的案例详细信息存储在持久数据库中。基本上,它是一种物化视图

缓存将使您能够快速向用户提供案例详细信息,而无需任何明显的延迟。流媒体将帮助您保持缓存和数据库聚合的近实时更新。将物化视图存储在数据库中可以避免将所有内容存储在内存中。您可以使用LRU缓存。只有最近使用的数据才会在缓存中。若您需要显示任何不在缓存中的案例数据,您可以从数据库中读取它并将其存储在缓存中以备将来的请求

我建议你阅读这两篇Martin Kleppmann的文章