2012-12-19 40 views
0

我試圖建立在HBase的頂部的Web服務,使代碼看起來大致如下:Web服務的最佳實踐 - 服務器超時長於HTTP客戶端超時

@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

設置爲您掃描對象的cashing一些合理的價值。另一件事,因爲您正在使用Web服務向用戶顯示結果,我假設您一次只能顯示幾行(或多個記錄)。您可以使用Hbase PageFilter,以便每次只獲取指定的行數,而不必等待一次獲取所有行。