Overview of Pools

Running a virtual world on a single server is great, but as the number of users or size of the world increases, eventually there won't be enough processing power to do the simulation. In order to manage distributing worlds across multiple servers, MV3D introduces a concept called Pools. Pools are used to provide redundancy between multiple servers and also to partition data and simulation across a cluster. There are three main types of pools.

Clusters

Clusters are the highest level of pool in MV3D. They essentially shard the Sharded Pools. However, that's not entirely correct. Clusters maintain an ID Dispenser which is responsible for giving out IDs to objects in the Sharded Pools. They are used in Realms and Asset Groups and their ID is generally the first number of an object ID or asset ID.

Sharded Pools

The purpose of Sharded Pools is to distribute data across multiple servers for purposes of load balancing. Sharded Pools don't actually host any of this data, that's for the Redundant Pools to do. However, they provide direction and ensure that the data is divided up amongst any number of available servers. This distribution of data is automatic, but it isn't like the real time load balancing provided by the Sim Service in that it is more fixed. Once a bit of data is assigned to a server, it will generally stick to that server.

Redundant Pools

Redundant pools actually host real data. Their purpose is to ensure that every item they contain is hosted on more than one server. In fact, every item they host is duplicated across all servers that the pool exists on.

Attachments