Components of an MV3D Cluster

Although it's certainly possible to run a virtual world in a single server, that doesn't scale well. In order to scale, multiple servers can be set up in a cluster that will simulate a single virtual world. An example of a fully configured MV3D cluster looks something like this:

Not all components are required to be hosted on separate machines. It all depends on how much hardware is required to support the traffic in the virtual world.

The diagram is divided into 3 main components. The end user clients-- these are the people connecting to the virtual world from their client machines. MV3D Run Infrastructure-- this is the service that Mortal Coil Games provides to allow single sign on and access to the asset repository amongst other things. It is a cluster of servers hosted by Mortal Coil games and is unnecessary for anyone else to replicate. Finally, there's the virtual world cluster itself. These are all the servers used specifically to host the virtual world.

Let's go over the virtual world servers step by step. The first point of contact is a load balancer. Any off the shelf or open source load balancer will do. This is only required when there is more than one Player server. The Player Servers are the next in line. The clients connect through the load balancer to one of the Player Servers. These take care of relaying information about the world to the client. They are the single point of contact for clients.

The Player Servers get their world information from the Sim Servers. These are the main workhorses of a MV3D cluster. They do all the work of simulating the world. All objects in the world are contained within the Sim Servers. They are able to partition the world up and dynamically load balance it between them when configured properly. The Sim Servers are managed at a high level by the Realm Servers.

Realm Servers host the Realms, which are large sections of the virtual world. In fact, most virtual worlds will only need a single Realm. Realms keep track of all object ids within them and generally have the job of directing queries for where to find objects. Realm servers interact with MV3D's Directory Servers.

The other type of server that the Player Servers get information from is the Asset Server. Asset Servers don't actually store the data for assets, but instead keep information such as their id and how to acquire them. At the time of this writing, Clients do directly talk to AssetServices?, however, don't get that confused with Asset Servers. Asset Servers do run the AssetService, but they are authoritative for their assets. Player Servers should also run AssetServices? at this time which will cache Asset information to pass to the client. This is scheduled to change in #469. After that point, the client will only interact with the PlayerService. Asset Servers also interact with MV3D's Directory Servers.

Attachments