開発者の観点から、Couchbaseの全てのコンポーネントがどのように連携するのかを知っておくと便利です。1つのCouchbaseノードは以下の要素で構成されます
ns_server
これは、各ノード上で実行されるメインプロセスです。ソースリポジトリの概要が示すように、これはスーパーバイザーです。これらのうち1つが、各ノード上で実行された後、プロセスを生成し、そのプロセスがさらに別のプロセスを起動します。
menelaus
menelausは本当はns_serverリポジトリの一部である2つのコンポーネントです。menelauseの主な役割は、クラスタを利用する際のRESTfulなインタフェースを提供することです。サーバに対してREST呼出を行う、非常にリッチで複雑なjQueryベースのアプリケーション上に構築されています。
memcached
Couchbaseはmemcachedとは異なるものの、memcachedの核となる部分を活用しています。それは、ネットワーキングやプロトコル処理などです。
couchbaseの主要部分は2つのコンポーネントで実装されています:
Couchbaseエンジン(ep-engine
)
これはmemcachedの主要機能とbucket_engineを使ってロードされます。このコアコンポーネントは、非同期的な永続性を提供し、TAPプロトコルを実装しています。
バケットエンジン
バケットのエンジンは、単一のmemcachedプロセスの下で複数のエンジンのインスタンスをロードする方法を提供します。これが、Couchbaseがマルチテナントを提供する方法です。
vbucketmigrator
TAPクライアントは効果的に、ns_serverが1つまたは複数のvBucketmigratorプロセスを起動する方法をベースに、あるノードから別のノードにデータを複製または転送します。
Moxi
memcachedのプロキシであるmoxiは、vBucketのハッシュ化の方法を知っていて、RESTインタフェースを利用しクラスタの状態や設定を取得することが出来ます。あるvBucketにアクセスするクライアントが常に正しい場所にルーティングされることを保障します。
複数のクラウドインスタンス、仮想マシンまたは物理サーバで、これらのコンポーネントは全てうまく連携し、一つのCouchbaseクラスタとなることが出来ます。