我们有一个场景,我们需要聚合来自多个服务的数据并在UI中显示。当前场景是,当座席登录时,我们需要显示分配给该座席的案例。案例信息需要从多个微服务聚合。一次将有大约1K个案例分配给代理,所有的需求都需要显示给代理,以便他可以根据特定的案例数据执行排序。
在这种情况下,显示数据的最佳方法是什么?我们是否应该针对每种情况对多个服务进行API调用,并进行聚合和显示?或者有更好的方法来实现这一点。
发布于 2019-02-04 01:04:16
不是的。当然,您不会在运行时调用多个API来聚合数据。即使并行调用apis,也会有很大的延迟。
您需要预先聚合案例详细信息,并使用流媒体平台(例如Kafka)将其缓存到分布式缓存系统(例如Redis或memcached)中。此外,将预先聚合的案例详细信息存储在持久数据库中。基本上,它是一种物化视图。
缓存将使您能够将案例详细信息快速提供给用户,而不会有任何明显的延迟。流式传输将帮助您保持缓存和数据库聚合的近乎实时的更新。将实体化视图存储在数据库中将使您不必将所有内容都存储在内存中。您可以使用LRU缓存。只有最近使用过的数据才会出现在缓存中。如果您需要显示任何不在缓存中的案例数据,您可以从数据库中读取它,并将其存储在缓存中,以供将来的请求使用。
我推荐您阅读Martin Kleppmann的这两篇文章here和here
https://stackoverflow.com/questions/54504159
复制相似问题