Skip to content
Jim edited this page Feb 24, 2014 · 16 revisions

What is Sirius

Sirius is a distributed in memory datastore library that handles ordering and distribution of updates across a cluster of nodes. Sirius uses the Multi-Paxos algorithm to order the updates and to genreate consensus within the cluster. Along with Multi-Paxos Sirius uses a catch up algorithm to achieve eventual consistency across the cluster. A Sirius cluster is able to tolerate ⌈n/2⌉ - 1 (where n is the number of nodes in a cluster) of concurrently failing nodes in a cluster and still continue to function. Once beyond this failure threshold, no updates to the datastore can be accepted until the number of failing nodes is back to or under the threshold.

After an update has been ordered by Sirius it is added to the persisent storage in a transaction log and applied to the in memory state as defined by the application. Sirius comes with an implementation of the transaction log that is useful in many use cases. There is also a reference application that will be a useful reference in creating your own applications.

The state maintained by Sirius can be queried by submitting a request similar to that for updates. The main difference is that this request is executed locally and does not need to be distributed. This local query provides high performance reads of the in-memory state, as all nodes in the cluster have copies of the entire state.

Sirius is intended to provide a means to replicate in-memory state consistently across a cluster. The main use case for Sirius is to provide high volume and high performance reads to a set of reference data that is replicated to a cluster of application computers, where the volume of writes is significantly smaller than the number of reads. Sirius itself is a flexible library and it has a number of other use cases.

#Additional features In addition to providing the ability of a Sirius node to be fully participating node in a cluster, a Sirius node can be configured to act as a "follower" of the cluster. The follower node provides a read-only instance of the in-memory state. Follower nodes can be useful in advanced configurations, such as those involving multiple clusters.

#Next steps For a hands-on guide to setting up a basic Sirius cluster, we recommend reading the "Getting started with Sirius" page. The details for Sirius configuration are on the "Configuring Sirius" page. Advanced deployment details are in the "How to deploy Sirius" page. For those who wish to delve into the technical details of the system the "How Sirius works" page is the starting point for exploring the internal details.