从api获取大量数据

时间:2014-08-21 13:27:36

标签: java api rest

我正在调用Restful api,它返回超过10万条记录。如何在客户端处理大量数据?我不想立刻获得所有记录。

1 个答案:

答案 0 :(得分:3)

如果您是restful API的所有者,请重新设计它以支持分页。并使用页码以较小的部分请求信息。

如果您不是API的所有者,则实现中介服务器端服务,该服务的工作方式类似于具有分页支持的缓存。客户端使用此中介服务,发送带页码的请求并获取较小的数据部分。


<强>更新

假设您的返回大量记录的服务被命名为&#34; Black Box Service&#34;。

我建议创建额外的服务(让它的名字是:&#34; Mediator servie&#34;)从客户端获取所有请求,通过向&#34; Black Box发送请求来处理它们Service&#34;,缓存结果并将信息返回给客户端。

检查下图:

schema

假设介体服务地址为:http://www.yourserver.com/mediatorservice

然后,此中介服务的API应支持以下参数:

pageNumber - 请求的页数 recordsPerPage - 每页记录

并且对此中介服务的示例请求将如下所示:

http://www.yourserver.com/mediatorservice?pageNumber=1&recordsPerPage=25

此请求尝试从中介服务获取此页面上的25条记录(recordsPerPage = 25)的第一页(pageNumber = 1)。

Mediator服务有自己的数据库用于缓存目的。如果客户端请求范围内的记录:1 .. 100 000,则中介服务请求来自&#34;黑匣子服务的第一大数据&#34;并将这段数据存储在自己的数据库中。

所有其他连续请求将使用中介服务数据库中的此缓存数据块提供。

如果范围100 001 ...200 000中有请求,则中介服务会获取另一个巨大的数据块,并将其存储在自己的数据库中(如果之前没有这样做)。并使用此存储的数据来处理来自客户端的请求。

根据信息的性质,可能需要以不同方式处理缓存信息。有些信息可能会被缓存很长时间,有些则无法缓存。

存在许多缓存java框架,请检查它们以选择适合您需求的框架。