ROAD (Realtime Online Audio Distribution) is a scalable distributed audio processing system. Basically it consists of clients for end users and a backend, which can be installed on one or several host machines (which then build a ROAD cluster). Clients connect to the ROAD Service, which cares for processing audio jobs.
The ROAD Service is a Windows service which implements a web service to provide the Service API, which is accessed by all ROAD clients.
It's responsible for
- Serving the ROAD REST interface
- Serving the ROAD socket interface
- Managing ROAD jobs' data locally for jobs hosted there and for the whole ROAD cluster via database
- Creating and controlling worker processes on its machine
- Running the scheduler to create scheduled jobs in time
- Maintaining status, live data, client sync and other kinds of subscriptions and distributing notifications between Workers and clients
- Relaying REST (http) requests as well as subscriptions (socket) and notifications to and from other ROAD Service instances within the same ROAD cluster
- Persisting data from and to a central database
ROAD is basically a Service and all its dependent components (Worker, Filters, database, etc.): This is the ROAD backend. This can be extended to several ROAD backend installations, which are connected by a network and by sharing one MongoDB database instance: This is a ROAD cluster.
Main responsibility of the ROAD Service is to provide interfaces, maintain the database access and create ROAD Workers on demand, which then do the actual audio processing.
The ROAD Service provides several interfaces (APIs), which allow arbitrary clients to connect and make use of ROAD's capabilities. Some clients are part of the basic ROAD package, others are extra products and it's even possible to develop custom clients or access ROAD interfaces in other products.
Top Level Architecture
End user clients can be based on web technologies or be implemented as native applications. These can access the ROAD service to send configuration or control commands or to get status information. These interfaces are web based and are hosted by the ROAD service.
Hosting web clients is not part of the actual ROAD infrastructure and so not shown in this picture.
The ROAD cluster consists of a set of host machines, each having a ROAD backend instance installed, which share one central database. Each backend provides a Service, which serves the interfaces. On demand it creates Worker processes on its machine, which each then processes a ROAD job (e.g. a recording from a local audio device input).
All arrows indicated in this pictures are examples showing possible connections.
Every client might connect to every backend.
Every backend might connect to DPE as well as to web streams, which might be hosted in the organization or being publicly available.
For resources like audio devices, a ROAD backend instance needs to installed on that local machine.
Backend instances can be connected to a cluster by sharing a ROAD database. Clients then can connect to any of the ROAD hosts, which will relay to others as needed.