vBucketサーバマップはクライアントからCouchbase ServerへのREST/JSONのリクエストにより操作します。REST/JSONのURLは、ユーザーアプリケーションから初期設定パラメータとしてクライアントライブラリに与える必要があります。クライアントアプリケーションはREST/JSONの接続情報を"追跡用URL"として起動時に設定します。REST/JSONの"ブートストラッピング"と追跡用URLに関する情報は次のリンクを参照してください。8章Couchbase 管理 REST API
最終的に、ブートストラップ手順に従うと、クライアントライブラリは、次のようなREST/JSONのURLになります。
http://HOST:PORT/pools/default/bucketsStreaming/BUCKET_NAME
例:
http://couchbase1:8080/pools/default/bucketsStreaming/default
上記URLへのリクエスト結果はJSON形式で以下のようになります:
{ "name" : "default", "bucketType" : "couchbase", ... "vBucketServerMap" : { "hashAlgorithm" : "CRC", "numReplicas" : 1, "serverList" : ["10.1.2.14:11210"], "vBucketMap" : [[0,-1],[0,-1],[0,-1],[0,-1],[0,-1] : ] } }
REST/JSONのURLにHTTPベーシック認証が適用されている場合、クライアントライブラリから正しくHTTP/RESTリクエストが行えるように、クライアントアプリケーションは(必要に応じて)ユーザ/パスワードの情報を指定する必要があります。
REST/JSONのURLは、Couchbase RESTサーバーがvBucketサーバーマップを返した後も、HTTP RESTの接続をクローズしないという点で、"ストリーミング"になっています。Couchbaseは接続を開いたままにし、クラスタの変更(新しいサーバノードが、追加、削除される、および/またはvBucketsが異なるサーバに再割り当てされる)があるときに、クライアントライブラリに新しいマップをストリームし続けます。Couchbaseストリーミングアプローチでは、新しいvBucketサーバーマップのJSONメッセージは、4つの改行文字("\ n\ n\ n\ n")で区切られています。
上記のセクションでは、"bucket単位の"REST/JSON URLと呼んでいるものについて説明しています。つまり、各ポートベースのbucketには、次の形式のストリーミングREST/JSON URLがあります:
http://HOST:PORT/pools/default/bucketsStreaming/BUCKET_NAME
SASL認証を使用するbucket用に異なる形式のREST/JSON URLがあります。このSASL REST/JSON URLは以下の形式です:
http://HOST:PORT/pools/default/saslBucketsStreaming
出力サンプル:
{"buckets":[ {"name":"default", "nodeLocator":"vbucket", "saslPassword":"", "nodes":[ {"clusterMembership":"active","status":"healthy","hostname":"10.1.4.11:8091", "version":"1.6.1rc1","os":"x86_64-unknown-linux-gnu", "ports":{"proxy":11211,"direct":11210}}, {"clusterMembership":"active","status":"healthy","hostname":"10.1.4.12:8091", "version":"1.6.1pre_21_g5aa2027","os":"x86_64-unknown-linux-gnu", "ports":{"proxy":11211,"direct":11210}}], "vBucketServerMap":{ "hashAlgorithm":"CRC","numReplicas":1, "serverList":["10.1.4.11:11210","10.1.4.12:11210"], "vBucketMap":[[0,-1],[1,-1],...,[0,-1],[0,-1]]}} ] }
SASL REST/JSONレスポンスとbucket単位のREST/JSONレスポンスの主な違いは、SASL REST/JSONレスポンスは複数のbucketを記述できることです。SASL REST/JSONレスポンスでは、これらの複数のbucketは、"buckets"配列の要素となっています。