Chapter 2. Architecture

Table of Contents

2.1. Types Of Nodes
2.2. Consistency and Failure Resistance
2.3. Basic Properties Of The Core
2.4. Core Internal Architecture Survey

2.1. Types Of Nodes

The Massiv Core library basicaly counts with three types of nodes (note that more Massiv nodes may run on the same physical node - computer):

  • Servers collaborate on the world simulation.

  • Clients enable players to connect to the simulation, interact with the imaginative world and provide them a presentation of the actual state of the world. Note that while the Demo distinguishes privileged and unprivileged clients, this distinction is implemented at “application” level, i.e. it's feature of the Demo, not of the Massiv Core.

  • Data service nodes provide dynamic download of binary and textual data that can't be efficiently represented by an object.

Figure 2.1. Massiv deployment diagram - example
Massiv deployment diagram - example

The picture shows one of many possible deployment diagrams for a Massiv application involving five servers, four clients and one data service. You can observe several issues from the diagram:

  • The servers are located in potentially different broadcast domains (or clusters). The domains are graphically represented by bubbles.

  • Not each server has an explicit connection to every other server. Virtually they are connected with each other, but physically not all of these connections are maintained all the time and are reestablished on demand.

  • Each client that is connected to the simulation may be connected to at most one server (plus the data service).

[Note]Note

Each Massiv node doesn't of course necessarily have to run on a different computer. But even for such a local application, the individual processes will communicate via TCP/IP with each other.

The advantages of the fact that the servers don't have to belong to the same cluster (broadcast domain) were already mentioned in the introduction.