我们有一个场景,需要聚合来自多个服务的数据并在UI中显示。当前方案是代理登录时,我们需要显示分配给该代理的案例。案例信息需要从多个微服务中汇总。一次将大约一千个案件分配给业务代表,并且所有需求都将显示给业务代表,以便他可以根据某些案件数据进行排序。
在这种情况下显示数据的最佳方法是什么?我们应该针对每种情况对多个服务进行API调用并进行汇总和显示吗?或者有更好的方法来实现这一目标。
答案 0 :(得分:1)
不。您当然不会在运行时调用多个API来聚合数据。即使您将api并行调用,这也会带来巨大的延迟。
您需要预先汇总案例详细信息,并使用流式平台(例如Kafka)将其缓存在分布式缓存系统(例如Redis或memcached)中。另外,将预汇总的案例详细信息存储在持久性数据库中。基本上,这是一种物化视图。
通过缓存,您可以快速将案例详细信息提供给用户,而不会出现任何明显的延迟。流式传输将帮助您近乎实时地更新缓存和数据库聚合。将物化视图存储在数据库中将使您不必将所有内容存储在内存中。您可以使用LRU缓存。只有最近使用的数据才会在缓存中。如果您需要显示不在缓存中的任何案例数据,则可以从数据库中读取数据并将其存储在缓存中,以备将来请求。