How servers relate to each other
There are two ways of thinking about relationships between servers in a distributed versioning environment; understanding these distinctions is important for using server commands correctly:
- From the point of view of intended use
- In the context of client-server architecture
From the point of view of intended use, the servers are either personal servers or shared servers:
- A personal server runs on an individual user’s machine; a shared server is the server in which individual users store their changes so that other users have access to these changes.
- A personal server is intended to be used by a single user, while a shared server is intended to be used by multiple users concurrently.
In the next diagram, Client 1 and Client 2 are using the shared server concurrently; both are interacting with the shared server via their respective personal servers.
Client 1 interacts with Server 1 — a personal server — which in turn interacts with the shared server. Likewise with Client 2.
In the context of client-server architecture, the servers are either local servers or remote servers:
- A local server is a server running on the same machine as your client.
- A remote server is a server your local server is talking to in order to do what it needs to do.
In the next diagram, Client 1 and Server 1 are running on the same machine.
From the point of the view of Client 1, Server 1 is a local server and Server 2 is a remote server.
Throughout this guide, the name we use to refer to a server depends on which name makes sense in the context of the discussion.