-
Notifications
You must be signed in to change notification settings - Fork 49
Home
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.
Copyright 2013-2017 Comcast Cable Communications Management, LLC
Using Sirius
Getting started with Sirius
Configuring Sirius
How to Deploy Sirius
Reference Applications
Migrations and Release Notes
Migration Guide 1.1.x to 1.2.x
Release Notes 2.0.0
Migration Guide 1.2.x to 2.0.x
Developing Sirius
Getting Started
Contributing Guildelines
License
Releasing Sirius
Scaladocs
Test Timeout Failures
Transaction Log
Implementation
Live Compaction
waltool
Other