Documentation
¶
Index ¶
- Constants
- Variables
- func NewExtension(opts ...internal.ConfigOption) forge.Extension
- func NewExtensionWithConfig(config Config) forge.Extension
- type AdminAPIConfig
- type AdvancedConfig
- type AppendEntriesRequest
- type AppendEntriesResponse
- type BadgerOptions
- type BatchOp
- type BatchOpType
- type BoltOptions
- type ClusterInfo
- type ClusterManager
- type Command
- type Config
- type ConfigOption
- type ConsensusEvent
- type ConsensusEventType
- type ConsensusService
- type ConsensusStats
- type Discovery
- type DiscoveryConfig
- type ElectionConfig
- type EntryType
- type EventsConfig
- type Extension
- func (e *Extension) Apply(ctx context.Context, cmd Command) error
- func (e *Extension) Dependencies() []string
- func (e *Extension) GetClusterInfo() ClusterInfo
- func (e *Extension) GetLeader() string
- func (e *Extension) GetRole() NodeRole
- func (e *Extension) GetStats() ConsensusStats
- func (e *Extension) Health(ctx context.Context) error
- func (e *Extension) IsLeader() bool
- func (e *Extension) Metrics() map[string]any
- func (e *Extension) Read(ctx context.Context, query any) (any, error)
- func (e *Extension) Register(app forge.App) error
- func (e *Extension) Reload(ctx context.Context) error
- func (e *Extension) Service() *Service
- func (e *Extension) Start(ctx context.Context) error
- func (e *Extension) Stop(ctx context.Context) error
- type HealthCheck
- type HealthConfig
- type HealthStatus
- type HealthStatusEvent
- type InstallSnapshotRequest
- type InstallSnapshotResponse
- type KeyValue
- type LeaderElectedEvent
- type LeadershipChecker
- type LogEntry
- type LoggingConfig
- type MembershipChangedEvent
- type Message
- type MessageType
- type MetricsConfig
- type NodeChangeEvent
- type NodeChangeType
- type NodeInfo
- type NodeRole
- type NodeStatus
- type ObservabilityConfig
- type PeerConfig
- type QuorumStatusEvent
- type RaftConfig
- type RaftNode
- type RaftStats
- type RequestVoteRequest
- type RequestVoteResponse
- type ResilienceConfig
- type RoleChangedEvent
- type SecurityConfig
- type Service
- func (s *Service) AddNode(ctx context.Context, nodeID, address string, port int) error
- func (s *Service) Apply(ctx context.Context, cmd Command) error
- func (s *Service) GetClusterInfo() ClusterInfo
- func (s *Service) GetClusterManager() ClusterManager
- func (s *Service) GetDiscovery() Discovery
- func (s *Service) GetHealthStatus(ctx context.Context) HealthStatus
- func (s *Service) GetLeader() string
- func (s *Service) GetRaftNode() RaftNode
- func (s *Service) GetRole() NodeRole
- func (s *Service) GetStateMachine() StateMachine
- func (s *Service) GetStats() internal.ConsensusStats
- func (s *Service) GetStorage() Storage
- func (s *Service) GetTerm() uint64
- func (s *Service) GetTransport() Transport
- func (s *Service) HealthCheck(ctx context.Context) error
- func (s *Service) IsLeader() bool
- func (s *Service) Read(ctx context.Context, query any) (any, error)
- func (s *Service) RemoveNode(ctx context.Context, nodeID string) error
- func (s *Service) Snapshot(ctx context.Context) error
- func (s *Service) Start(ctx context.Context) error
- func (s *Service) StepDown(ctx context.Context) error
- func (s *Service) Stop(ctx context.Context) error
- func (s *Service) TransferLeadership(ctx context.Context, targetNodeID string) error
- func (s *Service) UpdateConfig(ctx context.Context, config Config) error
- type Snapshot
- type SnapshotEvent
- type StateMachine
- type Storage
- type StorageConfig
- type TracingConfig
- type Transport
- type TransportConfig
Constants ¶
const ( RoleFollower = internal.RoleFollower RoleCandidate = internal.RoleCandidate RoleLeader = internal.RoleLeader )
Constants - Node Roles.
const ( StatusActive = internal.StatusActive StatusInactive = internal.StatusInactive StatusSuspected = internal.StatusSuspected StatusFailed = internal.StatusFailed )
Constants - Node Status.
const ( EntryNormal = internal.EntryNormal EntryConfig = internal.EntryConfig EntryBarrier = internal.EntryBarrier EntryNoop = internal.EntryNoop )
Constants - Entry Types.
const ( MessageTypeAppendEntries = internal.MessageTypeAppendEntries MessageTypeRequestVote = internal.MessageTypeRequestVote MessageTypeInstallSnapshot = internal.MessageTypeInstallSnapshot MessageTypeHeartbeat = internal.MessageTypeHeartbeat )
Constants - Message Types.
const ( NodeChangeTypeAdded = internal.NodeChangeTypeAdded NodeChangeTypeRemoved = internal.NodeChangeTypeRemoved NodeChangeTypeUpdated = internal.NodeChangeTypeUpdated )
Constants - Node Change Types.
const ( BatchOpSet = internal.BatchOpSet BatchOpDelete = internal.BatchOpDelete )
Constants - Batch Op Types.
const ( ConsensusEventNodeStarted = internal.ConsensusEventNodeStarted ConsensusEventNodeStopped = internal.ConsensusEventNodeStopped ConsensusEventNodeJoined = internal.ConsensusEventNodeJoined ConsensusEventNodeLeft = internal.ConsensusEventNodeLeft ConsensusEventNodeFailed = internal.ConsensusEventNodeFailed ConsensusEventNodeRecovered = internal.ConsensusEventNodeRecovered ConsensusEventLeaderElected = internal.ConsensusEventLeaderElected ConsensusEventLeaderStepDown = internal.ConsensusEventLeaderStepDown ConsensusEventLeaderTransfer = internal.ConsensusEventLeaderTransfer ConsensusEventLeaderLost = internal.ConsensusEventLeaderLost ConsensusEventRoleChanged = internal.ConsensusEventRoleChanged ConsensusEventBecameFollower = internal.ConsensusEventBecameFollower ConsensusEventBecameCandidate = internal.ConsensusEventBecameCandidate ConsensusEventBecameLeader = internal.ConsensusEventBecameLeader ConsensusEventClusterFormed = internal.ConsensusEventClusterFormed ConsensusEventClusterUpdated = internal.ConsensusEventClusterUpdated ConsensusEventQuorumAchieved = internal.ConsensusEventQuorumAchieved ConsensusEventQuorumLost = internal.ConsensusEventQuorumLost ConsensusEventMembershipChanged = internal.ConsensusEventMembershipChanged ConsensusEventLogAppended = internal.ConsensusEventLogAppended ConsensusEventLogCommitted = internal.ConsensusEventLogCommitted ConsensusEventLogCompacted = internal.ConsensusEventLogCompacted ConsensusEventLogTruncated = internal.ConsensusEventLogTruncated ConsensusEventSnapshotStarted = internal.ConsensusEventSnapshotStarted ConsensusEventSnapshotCompleted = internal.ConsensusEventSnapshotCompleted ConsensusEventSnapshotFailed = internal.ConsensusEventSnapshotFailed ConsensusEventSnapshotRestored = internal.ConsensusEventSnapshotRestored ConsensusEventHealthy = internal.ConsensusEventHealthy ConsensusEventUnhealthy = internal.ConsensusEventUnhealthy ConsensusEventDegraded = internal.ConsensusEventDegraded ConsensusEventRecovering = internal.ConsensusEventRecovering ConsensusEventConfigUpdated = internal.ConsensusEventConfigUpdated ConsensusEventConfigReloaded = internal.ConsensusEventConfigReloaded )
Constants - Event Types.
Variables ¶
var ( ErrNotLeader = internal.ErrNotLeader ErrNoLeader = internal.ErrNoLeader ErrNotStarted = internal.ErrNotStarted ErrAlreadyStarted = internal.ErrAlreadyStarted ErrNodeNotFound = internal.ErrNodeNotFound ErrClusterNotFound = internal.ErrClusterNotFound ErrNoQuorum = internal.ErrNoQuorum ErrInvalidTerm = internal.ErrInvalidTerm ErrStaleTerm = internal.ErrStaleTerm ErrLogInconsistent = internal.ErrLogInconsistent ErrSnapshotFailed = internal.ErrSnapshotFailed ErrCompactionFailed = internal.ErrCompactionFailed ErrElectionTimeout = internal.ErrElectionTimeout ErrInvalidPeer = internal.ErrInvalidPeer ErrPeerExists = internal.ErrPeerExists ErrPeerNotFound = internal.ErrPeerNotFound ErrInsufficientPeers = internal.ErrInsufficientPeers ErrInvalidConfig = internal.ErrInvalidConfig )
Error exports.
var ( NewNotLeaderError = internal.NewNotLeaderError NewNoLeaderError = internal.NewNoLeaderError NewTimeoutError = internal.NewTimeoutError NewNoQuorumError = internal.NewNoQuorumError NewStaleTermError = internal.NewStaleTermError IsNotLeaderError = internal.IsNotLeaderError IsNoLeaderError = internal.IsNoLeaderError IsNoQuorumError = internal.IsNoQuorumError IsStaleTermError = internal.IsStaleTermError IsRetryable = internal.IsRetryable IsFatal = internal.IsFatal )
Error helper functions.
var ( DefaultConfig = internal.DefaultConfig WithNodeID = internal.WithNodeID WithClusterID = internal.WithClusterID WithBindAddress = internal.WithBindAddress WithPeers = internal.WithPeers WithTransportType = internal.WithTransportType WithDiscoveryType = internal.WithDiscoveryType WithStorageType = internal.WithStorageType WithStoragePath = internal.WithStoragePath WithTLS = internal.WithTLS WithMTLS = internal.WithMTLS WithConfig = internal.WithConfig WithRequireConfig = internal.WithRequireConfig )
Config functions.
Functions ¶
func NewExtension ¶
func NewExtension(opts ...internal.ConfigOption) forge.Extension
NewExtension creates a new consensus extension with functional options.
func NewExtensionWithConfig ¶
NewExtensionWithConfig creates a new consensus extension with a complete config.
Types ¶
type AdminAPIConfig ¶
type AdminAPIConfig = internal.AdminAPIConfig
type AdvancedConfig ¶
type AdvancedConfig = internal.AdvancedConfig
type AppendEntriesRequest ¶
type AppendEntriesRequest = internal.AppendEntriesRequest
type AppendEntriesResponse ¶
type AppendEntriesResponse = internal.AppendEntriesResponse
type BadgerOptions ¶
type BadgerOptions = internal.BadgerOptions
type BatchOpType ¶
type BatchOpType = internal.BatchOpType
type BoltOptions ¶
type BoltOptions = internal.BoltOptions
type ClusterInfo ¶
type ClusterInfo = internal.ClusterInfo
type ClusterManager ¶
type ClusterManager = internal.ClusterManager
type ConfigOption ¶
type ConfigOption = internal.ConfigOption
type ConsensusEvent ¶
type ConsensusEvent = internal.ConsensusEvent
type ConsensusService ¶
type ConsensusService = internal.ConsensusService
type ConsensusStats ¶
type ConsensusStats = internal.ConsensusStats
type DiscoveryConfig ¶
type DiscoveryConfig = internal.DiscoveryConfig
type ElectionConfig ¶
type ElectionConfig = internal.ElectionConfig
type EventsConfig ¶
type EventsConfig = internal.EventsConfig
type Extension ¶
type Extension struct {
*forge.BaseExtension
// contains filtered or unexported fields
}
Extension implements forge.Extension for distributed consensus.
func (*Extension) Dependencies ¶
Dependencies returns extension dependencies.
func (*Extension) GetClusterInfo ¶
func (e *Extension) GetClusterInfo() ClusterInfo
GetClusterInfo returns cluster information.
func (*Extension) GetStats ¶
func (e *Extension) GetStats() ConsensusStats
GetStats returns consensus statistics.
func (*Extension) Reload ¶
Reload reloads the extension configuration (implements HotReloadableExtension).
type HealthCheck ¶
type HealthCheck = internal.HealthCheck
type HealthConfig ¶
type HealthConfig = internal.HealthConfig
type HealthStatus ¶
type HealthStatus = internal.HealthStatus
type HealthStatusEvent ¶
type HealthStatusEvent = internal.HealthStatusEvent
type InstallSnapshotRequest ¶
type InstallSnapshotRequest = internal.InstallSnapshotRequest
type InstallSnapshotResponse ¶
type InstallSnapshotResponse = internal.InstallSnapshotResponse
type LeaderElectedEvent ¶
type LeaderElectedEvent = internal.LeaderElectedEvent
type LeadershipChecker ¶
type LeadershipChecker struct {
// contains filtered or unexported fields
}
LeadershipChecker provides middleware support for checking leadership.
func NewLeadershipChecker ¶
func NewLeadershipChecker(service ConsensusService) *LeadershipChecker
NewLeadershipChecker creates a new leadership checker.
func (*LeadershipChecker) GetLeader ¶
func (lc *LeadershipChecker) GetLeader() string
GetLeader returns the current leader node ID.
func (*LeadershipChecker) IsLeader ¶
func (lc *LeadershipChecker) IsLeader() bool
IsLeader returns true if this node is the leader.
func (*LeadershipChecker) RequireLeader ¶
func (lc *LeadershipChecker) RequireLeader() error
RequireLeader returns an error if this node is not the leader.
func (*LeadershipChecker) RequireQuorum ¶
func (lc *LeadershipChecker) RequireQuorum() error
RequireQuorum returns an error if there is no quorum.
type LoggingConfig ¶
type LoggingConfig = internal.LoggingConfig
type MembershipChangedEvent ¶
type MembershipChangedEvent = internal.MembershipChangedEvent
type MessageType ¶
type MessageType = internal.MessageType
type MetricsConfig ¶
type MetricsConfig = internal.MetricsConfig
type NodeChangeEvent ¶
type NodeChangeEvent = internal.NodeChangeEvent
type NodeChangeType ¶
type NodeChangeType = internal.NodeChangeType
type NodeStatus ¶
type NodeStatus = internal.NodeStatus
type ObservabilityConfig ¶
type ObservabilityConfig = internal.ObservabilityConfig
type PeerConfig ¶
type PeerConfig = internal.PeerConfig
type QuorumStatusEvent ¶
type QuorumStatusEvent = internal.QuorumStatusEvent
type RaftConfig ¶
type RaftConfig = internal.RaftConfig
type RequestVoteRequest ¶
type RequestVoteRequest = internal.RequestVoteRequest
type RequestVoteResponse ¶
type RequestVoteResponse = internal.RequestVoteResponse
type ResilienceConfig ¶
type ResilienceConfig = internal.ResilienceConfig
type RoleChangedEvent ¶
type RoleChangedEvent = internal.RoleChangedEvent
type SecurityConfig ¶
type SecurityConfig = internal.SecurityConfig
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
Service implements internal.ConsensusService.
func NewConsensusService ¶
func NewConsensusService(config internal.Config, logger forge.Logger, metrics forge.Metrics) (*Service, error)
NewConsensusService creates a new consensus service.
func (*Service) GetClusterInfo ¶
func (s *Service) GetClusterInfo() ClusterInfo
GetClusterInfo returns cluster information.
func (*Service) GetClusterManager ¶
func (s *Service) GetClusterManager() ClusterManager
GetClusterManager returns the cluster manager.
func (*Service) GetDiscovery ¶
GetDiscovery returns the discovery service.
func (*Service) GetHealthStatus ¶
func (s *Service) GetHealthStatus(ctx context.Context) HealthStatus
GetHealthStatus returns detailed health status.
func (*Service) GetRaftNode ¶
GetRaftNode returns the Raft node.
func (*Service) GetStateMachine ¶
func (s *Service) GetStateMachine() StateMachine
GetStateMachine returns the state machine.
func (*Service) GetStats ¶
func (s *Service) GetStats() internal.ConsensusStats
GetStats returns consensus statistics.
func (*Service) GetStorage ¶
GetStorage returns the storage backend.
func (*Service) GetTransport ¶
GetTransport returns the transport.
func (*Service) HealthCheck ¶
HealthCheck performs a health check.
func (*Service) RemoveNode ¶
RemoveNode removes a node from the cluster.
func (*Service) TransferLeadership ¶
TransferLeadership transfers leadership to another node.
type SnapshotEvent ¶
type SnapshotEvent = internal.SnapshotEvent
type StateMachine ¶
type StateMachine = internal.StateMachine
type StorageConfig ¶
type StorageConfig = internal.StorageConfig
type TracingConfig ¶
type TracingConfig = internal.TracingConfig
type TransportConfig ¶
type TransportConfig = internal.TransportConfig