Web服务最佳实践 - 服务器超时超过http客户端超时

时间:2012-12-19 12:05:13

标签: web-services rest hbase

我正在尝试在hbase之上构建一个Web服务,因此代码看起来大致如下:

@GET
@Path("/blabla")
@Override
public List<String> getEvents($$$params$$$) {
    ......
    //calling hbase query the events
    ......
}

当Hbase服务关闭时,hbase Java API会继续重试连接到Hbase区域服务器util,最终会超时并抛出RT异常:

NoServerForRegionException: Unable to find region for event,,99999999999999 after 10 tries.

逻辑没有问题,我的问题是HttpClient在hbase超时重试之前超时。然后我的Web服务API使用者没有得到任何响应,很难看。

问题 -

如果服务器的超时可能比http连接本身长,那么这里的最佳做法是什么?在这种情况下如何让Web服务优雅地响应客户端?

1 个答案:

答案 0 :(得分:1)

将扫描对象的兑现设置为合理的值。另一件事,因为您使用Web服务向用户显示结果,我假设您一次只能显示几行(或记录)。您可以使用Hbase PageFilter,这样您每次只能获得指定的行数,而不必等待一次性获取所有行。