LoginSignup
0
0

More than 1 year has passed since last update.

Couchbase Server アーキテクチャー解説: クライアント・クラスター間コミュニケーションにおける独自性

Last updated at Posted at 2021-03-08

はじめに

本記事では、Couchbase Serverのアーキテクチャー解説記事の一つとして、主にクライアントとクラスター間のコミュニケーションについて解説します。その解説に進む前に、(クライアント・クラスター間接続を含む)Couchbase Serverにおけるネットワーク間通信の種類について簡単に整理します。

承前: コミュニケーション概要

Couchbase Serverは、クライアントからクラスター、ノードからノード、およびクラスターからクラスターへの通信を処理します。また、サードパーティ製品への接続も提供します。

クライアントとクラスター間

クライアントアプリケーションは、サーバー定義の(複数の)アクセスポイントを介してCouchbase Serverクラスターと通信します。各アクセスポイントは、非暗号化の通信と暗号化通信の両方にポートを提供します。

ノード間

クラスターノードは、データの複製、インデックスの維持、ノードの状態の確認、クラスター構成への変更の伝達などのために相互通信します。

クラスター間

Couchbase Server-クラスターは、クロスデータセンターレプリケーションを使用して相互に通信します。

コネクター

CouchbaseServer-クラスターはサードパーティ製品と通信します。コネクタ。Elasticsearch、Hadoop、Kafka、Spark、およびTalend用のコネクタが提供されています。ODBCおよびJDBC用のドライバーが提供されています。

クライアント接続における3つのフェーズ

クライアント接続は、認証と承認、検出(Discovery)、およびサービス接続の3つのフェーズで確立されます。

認証と承認

クライアントはユーザー名とパスワードで認証します。ユーザーは、Couchbase Serverで定義されたロールに関連付けられており、認証を介してロールを取得します。

検出(Discovery)

クラスターマップがクライアントに返されます。これは、現在のクラスタートポロジを示しています。クラスターマップは、クラスターを構成するノードのリスト、ノー​​ド間のサービス配置、およびノード間のデータ配置に関する情報を含みます。

クライアントは、これらの情報を持っているため、適切なノードへアクセスすることができます。これは、単に適切なサービスを提供するノードへアクセスできることを意味しているだけなく、データの作成や(検索クエリではなく、キー/IDによる)取得の際に、そのデータの管理を担当するノードへ直接アクセスができることを意味しています。

ここまでの処理は、ブートストラップと呼ばれます。

サービスへの接続

クラスターマップを取得すると、クライアントはサービスレベルの操作を実行するために必要な接続を確立します。

この時実行しようとする操作の種類・内容によって、承認が必要になる場合があります。ユーザーのロールが、要求しているリソースへのアクセスに対する適切な特権に関連付けられている場合、アクセスが許可されます。

クラスタートポロジが変更された場合、サービスへの接続要求の際に例外が発生する可能性があります。この場合、検出を再実行し、新しい接続で操作を再試行する必要があります。

最後に

本稿の解説の中では、特に「検出」のプロセスの部分は、他の分散アーキテクチャーを持つデータプラットフォームと比べて、Couchbase Serverに独自な部分だといえます。本記事で解説したCouchbaseにおけるプロセスとは異なり、多くの分散アーキテクチャーを持つデータベースでは、クライアントとのコミュニケーションを担当する特別なノードが存在しています。
この違いは、(メモリファーストアーキテクチャに加えて)Couchbase Serverが、低遅延・ハイスループットを実現する要素となっています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0