Architecture overview#

Data flow#

An Audio2Face Cluster, in its simplest configuration, consists of a single A2F microservice and a single A2F Controller. These two services are tightly coupled, meaning that scaling one requires scaling the other. However, it’s possible to utilize A2F without its controller.

The overall architecture of an A2F Cluster deployment is illustrated below:

A2F Cluster with a single gRPC client

A2F Cluster with a single gRPC client#

The double arrow connection represents a gRPC stream, which bridges the asynchronous API of A2F into a bi-directional synchronous API. The single arrow connection is a single stream to either send or receive the data.

The Audio2Face (A2F) service is intricately designed with both a gRPC server to handle incoming data streams and a client component to forward these streams to subsequent microservices (MS) in the pipeline. This dual functionality allows A2F to interact seamlessly within a complex service network. To enhance usability when deployed standalone, the A2F Controller plays a pivotal role. It serves both as the origin and the destination of the A2F outputs, transforming the singular directional streams into a more accessible bi-directional API. This transformation by the A2F Controller facilitates easier integration and management, making it straightforward to deploy in diverse environments without requiring additional interfacing components.

Default Ports#

Docker Compose Default Configs#

  • The default port between A2F Controller (client) and Audio2Face (server) is 50000

  • The default port between Audio2Face (client) and A2F Controller (server) is 51000

  • The default port between Client (client) and A2F Controller (server) is 52000

Kubernetes Default Configs#

  • The default port between A2F Controller (client) and Audio2Face (server) is 50010

  • The default port between Audio2Face (client) and A2F Controller (server) is 51010

  • The default port between Client (client) and A2F Controller (server) is 52010