DotNext.Net.Cluster by Roman Sakno

<PackageReference Include="DotNext.Net.Cluster" Version="3.2.1" />

 RaftCluster<TMember>

Represents transport-independent implementation of Raft protocol.
protected struct MemberCollectionBuilder<TMember> where TMember : IRaftClusterMember, IDisposable

Represents collection of cluster members stored in the memory of the current process.

protected sealed delegate MemberCollectionMutator<TMember> : MulticastDelegate where TMember : IRaftClusterMember, IDisposable

Represents mutator of a collection of cluster members.

protected sealed delegate MemberCollectionMutator<TMember, T> : MulticastDelegate where TMember : IRaftClusterMember, IDisposable

Represents mutator of a collection of cluster members.

protected struct MemberHolder<TMember> where TMember : IRaftClusterMember, IDisposable

Represents cluster member.

public IPersistentState AuditTrail { get; set; }

Associates audit trail with the current instance.

public TimeSpan ElectionTimeout { get; }

Gets election timeout used by the local member.

protected bool IsLeaderLocal { get; }

Indicates that local member is a leader.

public TMember Leader { get; }

Gets leader of the cluster.

protected virtual ILogger Logger { get; }

Gets logger used by this object.

public IReadOnlyCollection<TMember> Members { get; }

Gets members of Raft-based cluster.

protected MetricsCollector Metrics { get; set; }

Establishes metrics collector.

public long Term { get; }

Gets Term value maintained by local member.

protected CancellationToken Token { get; }

Gets token that can be used for all internal asynchronous operations.

An event raised when leader has been changed.

Represents an event raised when the local node completes its replication with another node.

protected Task ChangeMembersAsync<T>(MemberCollectionMutator<TMember, T> mutator, T arg, CancellationToken token)

protected Task ChangeMembersAsync(MemberCollectionMutator<TMember> mutator)

protected TMember FindMember(Predicate<TMember> criteria)

Finds cluster member using predicate.

protected TMember FindMember<TArg>(Func<TMember, TArg, bool> criteria, TArg arg)

Finds cluster member using predicate.

protected ValueTask<TMember> FindMemberAsync(Func<TMember, CancellationToken, ValueTask<bool>> criteria, CancellationToken token)

Finds cluster member asynchronously using predicate.

public Task<bool> ForceReplicationAsync(TimeSpan timeout, CancellationToken token = default)

Forces replication.

protected Task<Result<bool>> ReceiveEntriesAsync<TEntry>(TMember sender, long senderTerm, ILogEntryProducer<TEntry> entries, long prevLogIndex, long prevLogTerm, long commitIndex, CancellationToken token) where TEntry : IRaftLogEntry

Handles AppendEntries message received from remote cluster member.

protected Task<Result<bool>> ReceivePreVoteAsync(long nextTerm, long lastLogIndex, long lastLogTerm, CancellationToken token)

Receives preliminary vote from the potential Candidate in the cluster.

protected Task<bool> ReceiveResignAsync(CancellationToken token)

Revokes leadership of the local node.

protected Task<Result<bool>> ReceiveSnapshotAsync<TSnapshot>(TMember sender, long senderTerm, TSnapshot snapshot, long snapshotIndex, CancellationToken token) where TSnapshot : IRaftLogEntry

Handles InstallSnapshot message received from remote cluster member.

protected Task<Result<bool>> ReceiveVoteAsync(TMember sender, long senderTerm, long lastLogIndex, long lastLogTerm, CancellationToken token)

Votes for the new candidate.

public virtual Task StartAsync(CancellationToken token)

Starts serving local member.

public virtual Task StopAsync(CancellationToken token)

Stops serving local member.

Turns this node into regular state when the node can be elected as leader.