OBKV-HBaseの高可用性は、通信経路全体の高可用性に依存しています。OBServerの高可用性に加え、通信経路上のProxyおよびClientの高可用性も必要です。OBKV-HBaseは、データベースサーバー側でOceanBaseの高可用性機能を継承しており、デプロイメントでは直接接続モードとProxyモードをサポートしています。
OBServerの高可用性
OceanBaseデータベースは、クラスタ内のマルチレプリカによるディザスタリカバリやアービトレーションに基づくディザスタリカバリ、およびクラスタ間のフィジカルスタンバイ・データベースによるディザスタリカバリなど、多様なサービス高可用性技術を備えています。詳細な紹介と使用方法については、OceanBaseの高可用性の章を参照してください。
通信経路の高可用性
Proxyモードの高可用性
ODP(OceanBase Database Proxy)は、OceanBaseデータベース専用のプロキシサーバーです。 ODPの高可用性機能は、次の2つの側面があります:
- ODPサービスの高可用性機能の実装 障害発生後にODPサービスを迅速に復旧できます。
- OceanBaseデータベースの高可用性の保証
OceanBaseデータベースノードの障害を検出・識別し、ブラックリストに追加することで、適切なルーティングによりアプリケーション側からデータベースの障害を隠蔽します。データベースノードの障害が回復すると、速やかにOBServerノードをブラックリストから削除してルーティング対象に戻し、各マシンのリソースを最大限に活用します。
直接接続モードの高可用性
OBKV-HBaseの直接接続モードとは、クライアントのリクエストがサーバー側の対応するOBServerに直接配送され、ODPによる転送が不要な場合を指します。分散システムにおいて、メッセージを正しい処理ノードに最終的に配送するためには、メッセージのアドレッシング問題を解決する必要があります。アドレッシング問題における最も一般的な方法は、分散システムのルーティングテーブルをキャッシュし、メッセージ配送前にルーティングテーブルを照会することです。
ODPモードでは、ODPを独立したコンポーネントとしてデプロイします。クライアントはルーティングについて気にする必要がなく、一定のロードバランシングアルゴリズムまたはコンポーネントを利用してメッセージをODPに送信し、ODPがルーティングに基づいてアドレッシングを行います。利点として、クライアントへの依存度が低く、メッセージプロトコルに準拠していればODPはアドレッシングできます。欠点として、別途デプロイが必要なため、通常はクライアントやデータベースサーバーと同一の物理ノード上には配置されず、メッセージ転送によるネットワークオーバヘッドが発生します。
直接接続モードの考え方は、ルーティング機能をクライアント内部に組み込むことです。これにより、メッセージのルーティングはクライアントプロセス内で完了し、メッセージは直接対応するデータベース処理ノードに配送されるため、メッセージ転送とネットワークオーバヘッドを回避できます。しかし、ルーティング機能がクライアント内部で直接実装されているため、クライアントへの依存度が比較的高くなります。
OBKV-HBaseのクライアントも、ODPと同様の高可用性機能を備えています:
- OBKV-HBaseクライアントはルーティング情報をキャッシュします。OBServerのスケーリング、障害、負荷分散などによってルーティングが変わった場合は、ルーティングテーブルの更新とメッセージの再試行によって、サーバー側の変更がアプリケーションに与える影響を抑え、サービスの継続を図ります。
- OBKV-HBaseのクライアントはConfigServerのURLを設定しており、OBKV-HBaseはConfigServerからRslistを取得してキャッシュし、その後Rslistのノードからルーティング情報を取得します。Rslistに変更があった場合、OBServerは対応するRslistをConfigServerにプッシュします。