Federated Clusters

Heroic has support for federating requests, which allows multiple independent clusters to serve clients through a single, global interface.

In a federated cluster, requests are routed to shards, and each shard is responsible for a distinct chunk of the available data. If all nodes in a single shard become unavailable, the data for that shard is unavailable. Shards are identified by a set of tags, two nodes are said to belong to the same shard if their cluster tags are identical. You can see more about this in the cluster documentation.

A client querying any heroic node in a federation will cause it to fan out to all known shards and merge the result.

Federations tries to be as transparent as possible in the face of problems. Each request that fans out to a shard has the potential to fail, preventing that data to become unavailable.

In the face of errors, successful shards will be returned as normal. The failing shards will be specifically reported as such, and it is left to the client to decide what to do next.