API Reference Beethoven v0.3.1

Modules

A Decentralized failover and peer-to-peer node finder for Elixir. Allows Elixir nodes to find each other automatically. Once connected, they can coordinate to delegate roles and tasks between the nodes in the cluster. Written using only the Elixir and Erlang standard library.

Set of modules for handling allocation of work between cluster nodes.

Behaviour to create an agent for data ingress into Beethoven.Allocator.

Crunches signal data and generates an allocation score for the current node.

Dispatches the URI of the node with the least amount of work.

GenServer to handle ingress of signal data.

Allocator service to aggregate how busy nodes are within the cluster. Utilizes Beethoven.AllocAgent behaviour to egress data into the allocator.

Azure Platform awareness for the node. If the app is not in Azure, genserver will response :no_azure to all calls.

Beacon Server is used to help other Beethoven node find the cluster. This is the TCP Listener the Beethoven.Locator server will check for.

Core Service for Beethoven. Watches other nodes within the cluster and cascade updates across the beethoven PIDs as needed.

A modified version of the built-in GenServer. Specialized for Beethoven's No-Master design; this GenServer will initialize a Mnesia table on creation. These tables act as the primary state for the distributed process. Supports most GenServer logic and callbacks.

Module to handle scanning IPV4 addresses within a network.

GenServer to handle searching for other Beethoven nodes or clusters. This Locator server's goal is to find a BeaconServer on another node. Once connected, they will communicate with each other via the Beethoven.SeekChat module.

Generic Library to simplify certain Mnesia tasks.

Server PID that manages role assignment across the cluster. Leveraging the Mnesia integration with DistrServer, these processes will be ephemeral and keep all state within Mnesia.

Module to simplify the interface between nodes during the locator Seeking flow.

Beethoven Allocator signals for the Beethoven service itself.

Test role to test RoleServer operations.

Example role that leverages DistrServer instead of GenServer.

Module for generic utilities.