|Quorum<S extends Remote,C extends QuorumClient<S>>||
A quorum is a collection of services instances comprising the same logical service.
|QuorumActor<S extends Remote,C extends QuorumClient<S>>|
|QuorumClient<S extends Remote>||
A non-remote interface for a client which monitors the state of a quorum.
An interface for informational quorum events.
An interface for receiving informational quorum events.
|QuorumMember<S extends Remote>||
A non-remote interface for a service which will participate in a quorum as a member service (as opposed to a client service that merely watches the quorum).
Event data equivalent to the
A non-remote interface containing only and all distributed quorum state change messages for this
|QuorumWatcher<S extends Remote,C extends QuorumClient<S>>||
An interface that watches for changes in the distributed quorum state.
|ServiceLookup<S extends Remote>|
|AbstractQuorum<S extends Remote,C extends QuorumClient<S>>||
Abstract base class handles much of the logic for the distribution of RMI calls from the leader to the follower and for the HA write pipeline.
Simple event impl.
|AbstractQuorumClient<S extends Remote>||
Base class for
|AbstractQuorumMember<S extends Remote>||
Abstract base class for a
Abstract base class for testing using a
A mock object providing the shared quorum state for a set of
|MockQuorumFixture.MockQuorum<S extends Remote,C extends QuorumMember<S>>||
Event implementation class.
Wraps the token/join transitions in a testable manner.
Stress test suite for
Aggregates test suites in increasing dependency order.
Test the quorum semantics for a highly available quorum of 3 services.
Test suite for the
Test the quorum semantics for a singleton quorum.
A type-safe enumeration for informational quorum events.
Enumeration of event types for the events described by the
An instance of this class is thrown when the caller is awaiting a quorum event and the quorum is asynchronously closed.
An exception related to
This package defines interfaces and implementations for a quorum of highly
available services. Each quorum has a replication factor k, which
must be an odd integer. A quorum with
k := 1 is a singleton
quorum and is not highly available. Highly available quorums have
k := 3 or greater.
Persistent bigdata® services have a lastCommitTime in each root block.
For the purpose of a highly available service, this timestamp provides a summary
of the persistent state of the quorum. When
(k+1)/2 services in the
quorum vote for the same lastCommitTime, a simple majority exists and the quorum
can meet. The quorum will elect a leader, which will assign a quorum token,
and followers. Each quorum token is distinct. Applications can read and write
on a quorum while it is met (all writes must be directed to the quorum leader).
If the quorum breaks, then the token is cleared and operations will fail.
A quorum is inherently robust. Writes are replicated from the leader to the followers using a write pipeline so each service in the quorum has the same persistent state. If a service in a highly available quorum fails, the quorum will not break (unless the leader fails, in which case the quorum will meet again with the remaining services).
Copyright © 2006–2019 SYSTAP, LLC DBA Blazegraph. All rights reserved.