Client library authors should enable their user applications to specify multiple URLs into the Couchbase cluster for redundancy. Ideally, the user application would specify an odd number of URLs, and the client library should compare responses from every REST/JSON URL until is sees a majority of equivalent cluster configuration responses. With an even number of URLs which provide conflicting cluster configurations (such as when there's only two couchbase servers in the cluster and there's a split-brain issue), the client library should provide an error to the user application rather than attempting to access items from wrong nodes (nodes that have been Failover'ed out of the cluster).
The libvBucket C library has an API for comparing two
configurations to support these kinds of comparisons. See the
As an advanced option, the client library should keep multiple REST/JSON streams open and do continual "majority vote" comparisons between streamed configurations when there are re-configuration events.
As an advanced option, the client library should "learn" about multiple cluster nodes from its REST/JSON responses. For example, the user may have specified just one URL into a multi-node cluster. The REST/JSON response from that one node will list all other nodes, which the client library can optionally, separately contact. This allows the client library to proceed even if the first URL/node fails (as long as the client library continues running).