汇总各种来源的结果 - Java应用程序架构

时间:2011-07-26 14:13:41

标签: java architecture

我在google和stackoverflow中搜索了我的问题,但找不到一个好的解决方案。以下是描述

我们的Java Web应用程序显示来自本地数据库和外部Web服务API调用的搜索结果。因此,搜索逻辑应结合这些结果并将其显示在结果页面中。问题是,外部API调用返回的结果比本地数据库调用慢。性能对于我们的搜索结果至关重要,结果应该是实时的,即我们不应该将外部结果缓存或保留在本地数据库中。现在,我们跨越两个线程,一个用于DB调用,另一个用于外部API,并将这些结果组合并在屏幕上显示。但它会破坏我们应用程序的性能,特别是当我们调用多个外部API时。

这个问题是否有任何架构解决方案?

非常感谢任何帮助。 感谢。

1 个答案:

答案 0 :(得分:0)

您拥有数据之前无法显示数据。

1)您可以显示本地数据,当它们到来时,通过ajax添加其他数据。

2)如果有重复的问题,你可以在短时间内缓存外部答案(并显示它们已经老了,并且它们将被新答案取代)并且一旦新鲜的答案到达,就推新答案。

至少1),系统将响应,2)可以立即获得可用的答案,即使它不是最新的。

顺便说一句,如果外部资源需要很长时间才能回答,你确定他们的答案不是陈旧的(例如,如果他们收集了一些数据并等待休息,那么他们到目前为止收集的内容是否会过时)?所以也许(也许不是)短期坚持并不像你想象的那么糟糕。