From a developer perspective, it is useful to know how all of the components of Couchbase Server come together. A Couchbase Server node consists of:
ns_server is the main process that runs on each node. As it says in it's source repository summary, it is the supervisor. One of these runs on each node and then spawns processes, which then later spawn more processes.
ebucketmigrator component of
ns_server is responsible for handling the
redistribution of information within the cluster nodes during
Menelaus is really two components, which are part of the ns_server component. The main focus of menelaus is providing the RESTful interface to working with a cluster. Built atop that RESTful interface is a very rich, sophisticated jQuery based application which makes REST calls to the server.
Though Couchbase Server is different than memcached, it does leverage the core of memcached. The core includes networking and protocol handling.
The bulk of Couchbase Server is implemented in two components:
Couchbase Server engine (
This is loaded through the memcached core and the bucket_engine. This core component provides persistence in an asynchronous fashion and implements the TAP protocol.
The bucket engine provides a way of loading instances of engines under a single memcached process. This is how Couchbase Server provides multitenancy.
A memcached proxy, moxi "speaks" vBucket hashing (implemented in libvbucket) and can talk to the REST interface to get cluster state and configuration, ensuring that clients are always routed to the appropriate place for a given vBucket.
Across multiple cloud instances, VMs or physical servers, all of these components come together to become a couchbase cluster.