Skip to content

service_layout

Jan Boon edited this page Nov 25, 2019 · 26 revisions

title: Service Layout description: An overview of services used in a production system published: true date: 2019-11-25T03:18:54.764Z tags:

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 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.

  • Web Login: One PHP server per domain. (Shouldn't this be global too?)
  • 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.
  • Patchman: One service on each physical server per domain. Controlled by the domain's Patchman 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, Shard Unifier, and Admin Service for 'live' domain.
  • apple․example․com: (Dedicated.) Shard Services for 'apple' shard.
  • orange․example․com: (Dedicated.) Shard Services for 'orange' shard.
  • banana․example․com: (Dedicated.) Shard Services for 'banana' shard.
  • beta․example․com: (Virtual Machine.) Login and Web IG PHP server, Shard Unifier, and Admin Service for 'beta' domain.
  • tomato․example․com: (Dedicated.) Shard Services for 'tomato' shard.
  • potato․example․com: (Dedicated.) 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.
Clone this wiki locally