RealityServer Features

Features

The RealityServer Queue Manager has been created to support most common non-interactive use cases. While RealityServer is frequently used in interactive contexts, often it is required instead to perform a job to completion and then return the results at some later time. This approach has a lot of advantages in terms of managing server load and GPU hosting costs.

Using the queue manager, you can submit a job to be executed, consisting of a specific command to run with a set of parameters along with a set of tasks to be performed with the results once the job is complete. Specific RealityServer instances (not nesessarily the one that submitted the job) can then listen to the queue for work to perform.

Listening RealityServer instances pull a single job off the queue at a time, run the command with the given parameters and then perform the tasks defined once the command has finished. Multiple RealityServer instances can listen to the queue to decrease processing times and get through jobs faster.

Here are some of the key features provided with the queue manager:

  • Easy to setup
  • AWS SQS and S3 integrations
  • Advanced message queuing protocol (AMQP) integration
  • Submit jobs directly from RealityServer
  • Jobs simply run existing commands
  • Multiple completion tasks
  • Scale up easily with more servers

This allows you to build out a queue based RealityServer deployment with very little additional work. There is no need to use a separate application server (though of course you can still do this) or develop any queuing logic yourself.

Currently RealityServer provides queue manager functionality focused on working with Amazon Web Services (see below). However additional integrations are under development for services such as Microsoft Azure and generic AMQP compatible queuing services.

Amazon Web Services Integration

Amazon Web Services offers a wide range of pre-configured services to get your applications up and running quickly. The SQS service is an ideal, robust queuing system that can be used with the queue manager. It is easy to setup and manage and also allows for integration with other AWS services such as CloudWatch which can be combined with Auto Scaling to build an automated solution for managing your queue workloads.

S3 provides a great means of storing results of your jobs results in a way that can be immediately served to users. S3 can also be easily integrated with CloudFront or other Content Delivery Networks (CDN) to ensure efficient distribution of your job results to a geographically diverse set of locations.

In the future the AWS integration used by the queue manager may be exposed to other RealityServer features. To allow for this AWS integrations are configured separately from the queue manager in their own dedicated configuration section. Please refer to the Amazon Web Services Directives section of the RealityServer Configuration guide for full details. All configuration is performed in your realityserver.conf file.

Advanced Message Queuing Protocol Integration

AMQP is an open standard application layer protocol for message-oriented middleware. The defining features of AMQP are message orientation, queuing, routing (including point-to-point and publish-and-subscribe), reliability and security. AMQP mandates the behavior of the messaging provider and client to the extent that implementations from different vendors are interoperable, in the same way as SMTP, HTTP, FTP, etc. have created interoperable systems. AMQP is the core protocol used by the popular RabbitMQ message broker. As with other message queue integrations, AMQP queues are configured separately from the queue manager in their own dedicated configuration section. Please refer to the AMQP Directives section of the RealityServer Configuration guide for full details. All configuration is performed in your realityserver.conf file.