Grid

A Grid is simply a group of Agents and its setup is as simple as specifying an already running Agent as a peer to a future Agent.

The order in which you start or specify peers is irrelevant, Agents will reach convergence on their own and keep track of their connectivity status with each other.

After a Grid is configured, when a spawn call is issued to any Grid member it will be served by any of its Agents based on the desired distribution strategy and not necessarily by the one receiving it.

Strategies

Horizontal (default)

spawn calls will be served by the least burdened Agent, i.e. the Agent with the least utilization of its slots.

This strategy helps to keep the overall Grid health good by spreading the workload across as many nodes as possible.

Vertical

spawn calls will be served by the most burdened Agent, i.e. the Agent with the most utilization of its slots.

This strategy helps to keep the overall Grid size (and thus cost) low by utilizing as few Grid nodes as possible.

It will also let you know if you have over-provisioned as extra nodes will not be receiving any workload.

Examples

Server

In one terminal run:

bin/scnr_agent

In another terminal run:

bin/scnr_agent --port=7332 --peer=127.0.0.1:7331

In another terminal run:

bin/scnr_agent --port=7333 --peer=127.0.0.1:7332

(It doesn’t matter who the peer is as long as it’s part of the Grid.)

Now we have a Grid of 3 Agents.

The point of course is to run each Agent on a different machine in real life.

Client

Same as Agent client.