我正在尝试在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服务优雅地响应客户端?
答案 0 :(得分:1)
将扫描对象的兑现设置为合理的值。另一件事,因为您使用Web服务向用户显示结果,我假设您一次只能显示几行(或记录)。您可以使用Hbase PageFilter,这样您每次只能获得指定的行数,而不必等待一次性获取所有行。