service_layout - ryzom/ryzomcore GitHub Wiki


title: Service Layout description: An overview of services used in a production system published: true date: 2023-03-05T13:23:27.881Z tags: editor: markdown dateCreated: 2019-11-25T02:58:15.582Z

Global Components

  • MariaDB: Database for the login system and in-game web service.
  • Web Login: Login system.
  • Web AMS: Account management system.
  • Web Admin: Shard administration interface.
  • Web IG: In-game web services.
  • Admin Service: Service for administration of a domain.
  • Shard Unifier: Persistent storage and cross-shard access for a shard domain.
  • Shard Services: All services for a single shard.
  • Patchman Bridge: Server patch distribution system for a domain.
  • Patchman: Server patch installer for each domain on a physical server.

Global Arrangement

Global Level

For anything on the global level, you only need to run one instance of each service. Services at this level are shared between multiple domains and multiple shards. In general, you may want a separate global level for production and internal use.

  • MariaDB: One MariaDB server.
  • Web Admin: One PHP server, this connects to the Admin Service of each domain.
  • Web AMS: One PHP server.

Domain

A domain is a collection of shards. Several services are shared between multiple shards. Domain can be different games, or just different versions of a game.

  • Web Login: One PHP server per domain. This is not part of the global level, as it directly interacts with the SU of the domain, and domain database. Different domains might be different games with different login strategy. In the global context, only the user, permissions and domain tables are relevant. The shard table is now redundant, and is in the process of being integrated through already-existing structures in the domain-specific database.
  • Web IG: One PHP server per domain. In-game forums and mail for all the shards within this domain.
  • Shard Unifier: One set of services per domain. Connects all shards together.
  • Admin Service: One service per domain. Provides web admin tool with direct administrative access to all shards in this domain.
  • Patchman Bridge: One service per domain. Allows the shard services, unifier, and admin service to be deployed automatically. It's not possible to have a Patchman Bridge for multiple domains on one single server.
  • Patchman: One service on each physical server per domain. Controlled by the domain's Patchman Bridge. There can be multiple domains on a single server (just not the Bridge).

Shard

A shard could either be a mainland shard, or a ring shard. Shard composition is explained further.

  • Shard Services: All other services for a single shard. Spread over as many servers as needed.

Example

As an example, two domains 'live' and 'beta', three shards on live named 'apple', 'orange', and 'banana', two shards on beta named 'tomato' and 'potato'.

  • maria․example․com: (Virtual Machine.) MariaDB server.
  • core․example․com: (Virtual Machine.) Account management and admin tools PHP server.
  • live․example․com: (Virtual Machine.) Login and Web IG PHP server, Patchman Bridge, Patchman, Shard Unifier, and Admin Service for 'live' domain.
  • apple1․example․com: (Dedicated.) Patchman and Shard Services for 'apple' shard.
  • apple2․example․com: (Dedicated.) Patchman and Shard Services for 'apple' shard.
  • orange1․example․com: (Dedicated.) Patchman and Shard Services for 'orange' shard.
  • orange2․example․com: (Dedicated.) Patchman and Shard Services for 'orange' shard.
  • banana1․example․com: (Dedicated.) Patchman and Shard Services for 'banana' shard.
  • banana2․example․com: (Dedicated.) Patchman and Shard Services for 'banana' shard.
  • beta․example․com: (Virtual Machine.) Login and Web IG PHP server, Patchman Bridge, Patchman, Shard Unifier, and Admin Service for 'beta' domain.
  • tomato․example․com: (Dedicated.) Patchman and Shard Services for 'tomato' shard.
  • potato․example․com: (Dedicated.) Patchman and Shard Services for 'potato' shard.

Shard Components

  • FES (Frontent Service): Multiple, up to one for each fully available CPU core.
  • AIS (AI Service): Multiple, one for each set of continents.
  • EGS (Entities Game Service): One.
⚠️ **GitHub.com Fallback** ⚠️