0

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.

ロジックに問題はありません。ここでの問題は、hbase が再試行をタイムアウトする前に HttpClient がタイムアウトすることです。その後、私の Web サービス API コンシューマーは応答を返しません。

質問 -

サーバーのタイムアウトが http 接続自体よりも長くなる可能性がある場合、ここでのベスト プラクティスは何ですか? この場合、Web サービスをクライアントに適切に応答させるにはどうすればよいでしょうか?

4

1 に答える 1

1

スキャン オブジェクトのキャッシュを適切な値に設定します。もう 1 つのことは、ユーザーに結果を表示するために Web サービスを使用しているため、一度に数行 (またはレコード) のみを表示する必要があると想定していることです。Hbase PageFilter を使用すると、毎回指定された数の行のみを取得し、一度にすべての行を取得するのを待つ必要がなくなります。

于 2012-12-19T18:39:05.397 に答える