The Genvid Services

Genvid Service Cluster

Fig. 5 presents 4 different types of data transitioning across the cluster, between the game, the cluster, and the client. Each type of data is associated with a set of services run by the workers.

The Streaming Services

Both the audio/video streams and the game data streams are handled by the Streaming Services. It starts by receiving data from the game and encoding it in a format suitable for streaming. The audio/video data is then sent directly to the livestreaming platform, while the game data is published through our messaging bus toward the streaming endpoint and the viewers. The section Generalized Streams gives more details of the stream composition.

The Channel Services

The Channel Services handle bi-directional communication between the game and the viewers. Because of the highly asymmetric nature of the connections, the type of exchanges between the two are carefully chosen and parameterized to allow the game to provide a good streaming experience even under high load. Events can be published to all viewers from the game, or the game can receive a periodic summary of all the events submitted by the viewers, or by other part of the system if requested. More details on the events channels are available in the section Scalable Event Channels.

The Control Service

The Control Service is the point of entry for the game to the other services. It allows the game to register a new stream and request for new channel endpoint. This service also gives access to an administrative interface giving information about the health of the cluster and allowing it to be administrated. Some of the events happening on the Control Service are also published on the Channel Services, allowing to retrieve them from this public interface.

The Login Service

The login service allows the client to query the cluster about the current streams playing (if any) and to request a new entry point for the Streaming Service.