Documentation
¶
Index ¶
- type BalanceAnalysis
- type ClusterSizeRecommendation
- type Manager
- func (m *Manager) AddNode(nodeID, address string, port int) error
- func (m *Manager) GetClusterInfo() *internal.ClusterInfo
- func (m *Manager) GetClusterSize() int
- func (m *Manager) GetHealthyNodes() int
- func (m *Manager) GetLeader() *internal.NodeInfo
- func (m *Manager) GetNode(nodeID string) (*internal.NodeInfo, error)
- func (m *Manager) GetNodeStats() map[string]any
- func (m *Manager) GetNodes() []internal.NodeInfo
- func (m *Manager) HasQuorum() bool
- func (m *Manager) RecordHeartbeat(nodeID string) error
- func (m *Manager) RemoveNode(nodeID string) error
- func (m *Manager) Start(ctx context.Context) error
- func (m *Manager) Stop(ctx context.Context) error
- func (m *Manager) UpdateNode(nodeID string, info internal.NodeInfo) error
- func (m *Manager) UpdateNodeRole(nodeID string, role internal.NodeRole) error
- func (m *Manager) UpdateNodeStatus(nodeID string, status internal.NodeStatus) error
- type ManagerConfig
- type MembershipChange
- type MembershipChangeStatus
- type MembershipChangeType
- type MembershipManager
- func (mm *MembershipManager) AddNode(ctx context.Context, nodeInfo internal.NodeInfo) error
- func (mm *MembershipManager) CanSafelyRemoveNode(nodeID string) (bool, string)
- func (mm *MembershipManager) CleanupOldChanges(maxAge time.Duration)
- func (mm *MembershipManager) GetPendingChanges() []MembershipChange
- func (mm *MembershipManager) RemoveNode(ctx context.Context, nodeID string) error
- func (mm *MembershipManager) UpdateNode(ctx context.Context, nodeInfo internal.NodeInfo) error
- func (mm *MembershipManager) ValidateClusterSize(proposedSize int) error
- type NodeLocation
- type NodeMatchIndex
- type NodeState
- type QuorumInfo
- type QuorumManager
- func (qm *QuorumManager) CalculateQuorumSize(clusterSize int) int
- func (qm *QuorumManager) CalculateReplicationFactor() int
- func (qm *QuorumManager) CheckIndexCommitted(replicatedIndexes map[string]uint64) (uint64, bool)
- func (qm *QuorumManager) GetFaultTolerance() int
- func (qm *QuorumManager) GetMinimumNodesForQuorum(totalNodes int) int
- func (qm *QuorumManager) GetNodesByMatchIndex(matchIndexes map[string]uint64) []NodeMatchIndex
- func (qm *QuorumManager) GetQuorumInfo() QuorumInfo
- func (qm *QuorumManager) GetQuorumMargin() int
- func (qm *QuorumManager) GetQuorumStatus() map[string]any
- func (qm *QuorumManager) HasQuorum() bool
- func (qm *QuorumManager) IsQuorumHealthy() bool
- func (qm *QuorumManager) RecommendClusterSize() map[int]ClusterSizeRecommendation
- func (qm *QuorumManager) ValidateClusterResilience() []string
- func (qm *QuorumManager) ValidateQuorumForRemoval(nodeIDs []string) (bool, string)
- func (qm *QuorumManager) WouldHaveQuorum(healthyNodesAfterChange int, totalNodesAfterChange int) bool
- type RackInfo
- type RebalanceAction
- type RebalanceActionType
- type RebalanceConfig
- type RebalanceManager
- func (rm *RebalanceManager) AnalyzeBalance() BalanceAnalysis
- func (rm *RebalanceManager) Disable()
- func (rm *RebalanceManager) Enable()
- func (rm *RebalanceManager) IsEnabled() bool
- func (rm *RebalanceManager) Rebalance(ctx context.Context) (*RebalanceResult, error)
- func (rm *RebalanceManager) Start(ctx context.Context) error
- type RebalanceResult
- type RegionInfo
- type TopologyManager
- func (tm *TopologyManager) GetNodesInRack(rack string) []string
- func (tm *TopologyManager) GetNodesInRegion(region string) []string
- func (tm *TopologyManager) GetNodesInZone(zone string) []string
- func (tm *TopologyManager) GetTopologyDistribution() map[string]any
- func (tm *TopologyManager) GetTopologyView() TopologyView
- func (tm *TopologyManager) IsTopologyAware() bool
- func (tm *TopologyManager) RegisterNodeLocation(location NodeLocation) error
- func (tm *TopologyManager) UnregisterNode(nodeID string)
- func (tm *TopologyManager) ValidateTopology() []string
- type TopologyView
- type ZoneInfo
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BalanceAnalysis ¶
BalanceAnalysis contains balance analysis results.
type ClusterSizeRecommendation ¶
type ClusterSizeRecommendation struct {
ClusterSize int
QuorumSize int
FaultTolerance int
Notes string
}
ClusterSizeRecommendation contains cluster size recommendations.
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager implements cluster management.
func NewManager ¶
func NewManager(config ManagerConfig, logger forge.Logger) *Manager
NewManager creates a new cluster manager.
func (*Manager) GetClusterInfo ¶
func (m *Manager) GetClusterInfo() *internal.ClusterInfo
GetClusterInfo returns cluster information.
func (*Manager) GetClusterSize ¶
GetClusterSize returns the size of the cluster.
func (*Manager) GetHealthyNodes ¶
GetHealthyNodes returns the number of healthy nodes.
func (*Manager) GetNodeStats ¶
GetNodeStats returns statistics about the nodes.
func (*Manager) RecordHeartbeat ¶
RecordHeartbeat records a heartbeat from a node.
func (*Manager) RemoveNode ¶
RemoveNode removes a node from the cluster.
func (*Manager) UpdateNode ¶
UpdateNode updates node information.
func (*Manager) UpdateNodeRole ¶
UpdateNodeRole updates a node's role.
func (*Manager) UpdateNodeStatus ¶
func (m *Manager) UpdateNodeStatus(nodeID string, status internal.NodeStatus) error
UpdateNodeStatus updates a node's status.
type ManagerConfig ¶
type ManagerConfig struct {
NodeID string
HealthCheckInterval time.Duration
HealthTimeout time.Duration
}
ManagerConfig contains cluster manager configuration.
type MembershipChange ¶
type MembershipChange struct {
ID string
Type MembershipChangeType
NodeInfo internal.NodeInfo
Initiated time.Time
Status MembershipChangeStatus
}
MembershipChange represents a pending membership change.
type MembershipChangeStatus ¶
type MembershipChangeStatus int
MembershipChangeStatus represents the status of a membership change.
const ( // MembershipChangeStatusPending is waiting to be applied. MembershipChangeStatusPending MembershipChangeStatus = iota // MembershipChangeStatusInProgress is currently being applied. MembershipChangeStatusInProgress // MembershipChangeStatusCommitted has been committed. MembershipChangeStatusCommitted // MembershipChangeStatusFailed has failed. MembershipChangeStatusFailed )
func (MembershipChangeStatus) String ¶
func (s MembershipChangeStatus) String() string
String returns string representation of change status.
type MembershipChangeType ¶
type MembershipChangeType int
MembershipChangeType represents the type of membership change.
const ( // MembershipChangeAdd adds a node to the cluster. MembershipChangeAdd MembershipChangeType = iota // MembershipChangeRemove removes a node from the cluster. MembershipChangeRemove // MembershipChangeUpdate updates node information. MembershipChangeUpdate )
func (MembershipChangeType) String ¶
func (t MembershipChangeType) String() string
String returns string representation of change type.
type MembershipManager ¶
type MembershipManager struct {
// contains filtered or unexported fields
}
MembershipManager manages cluster membership changes.
func NewMembershipManager ¶
func NewMembershipManager(manager *Manager, logger forge.Logger) *MembershipManager
NewMembershipManager creates a new membership manager.
func (*MembershipManager) CanSafelyRemoveNode ¶
func (mm *MembershipManager) CanSafelyRemoveNode(nodeID string) (bool, string)
CanSafelyRemoveNode checks if a node can be safely removed.
func (*MembershipManager) CleanupOldChanges ¶
func (mm *MembershipManager) CleanupOldChanges(maxAge time.Duration)
CleanupOldChanges removes old completed/failed changes.
func (*MembershipManager) GetPendingChanges ¶
func (mm *MembershipManager) GetPendingChanges() []MembershipChange
GetPendingChanges returns all pending membership changes.
func (*MembershipManager) RemoveNode ¶
func (mm *MembershipManager) RemoveNode(ctx context.Context, nodeID string) error
RemoveNode proposes removing a node from the cluster.
func (*MembershipManager) UpdateNode ¶
UpdateNode proposes updating node information.
func (*MembershipManager) ValidateClusterSize ¶
func (mm *MembershipManager) ValidateClusterSize(proposedSize int) error
ValidateClusterSize validates that cluster size is within bounds.
type NodeLocation ¶
NodeLocation represents a node's physical/logical location.
type NodeMatchIndex ¶
NodeMatchIndex represents a node's match index.
type NodeState ¶
type NodeState struct {
Info internal.NodeInfo
LastHeartbeat time.Time
LastContact time.Time
FailureCount int
Healthy bool
// contains filtered or unexported fields
}
NodeState represents the state of a node in the cluster.
type QuorumInfo ¶
type QuorumInfo struct {
TotalNodes int
HealthyNodes int
QuorumSize int
HasQuorum bool
MajorityIndex int
}
QuorumInfo contains quorum information.
type QuorumManager ¶
type QuorumManager struct {
// contains filtered or unexported fields
}
QuorumManager manages quorum calculations and checks.
func NewQuorumManager ¶
func NewQuorumManager(manager *Manager, logger forge.Logger) *QuorumManager
NewQuorumManager creates a new quorum manager.
func (*QuorumManager) CalculateQuorumSize ¶
func (qm *QuorumManager) CalculateQuorumSize(clusterSize int) int
CalculateQuorumSize calculates the quorum size for a given cluster size.
func (*QuorumManager) CalculateReplicationFactor ¶
func (qm *QuorumManager) CalculateReplicationFactor() int
CalculateReplicationFactor returns effective replication factor.
func (*QuorumManager) CheckIndexCommitted ¶
func (qm *QuorumManager) CheckIndexCommitted(replicatedIndexes map[string]uint64) (uint64, bool)
CheckIndexCommitted checks if a log index has been replicated to quorum.
func (*QuorumManager) GetFaultTolerance ¶
func (qm *QuorumManager) GetFaultTolerance() int
GetFaultTolerance returns the number of nodes that can fail.
func (*QuorumManager) GetMinimumNodesForQuorum ¶
func (qm *QuorumManager) GetMinimumNodesForQuorum(totalNodes int) int
GetMinimumNodesForQuorum returns minimum nodes needed for quorum.
func (*QuorumManager) GetNodesByMatchIndex ¶
func (qm *QuorumManager) GetNodesByMatchIndex(matchIndexes map[string]uint64) []NodeMatchIndex
GetNodesByMatchIndex returns nodes sorted by their match index.
func (*QuorumManager) GetQuorumInfo ¶
func (qm *QuorumManager) GetQuorumInfo() QuorumInfo
GetQuorumInfo returns detailed quorum information.
func (*QuorumManager) GetQuorumMargin ¶
func (qm *QuorumManager) GetQuorumMargin() int
GetQuorumMargin returns how many nodes above quorum we have.
func (*QuorumManager) GetQuorumStatus ¶
func (qm *QuorumManager) GetQuorumStatus() map[string]any
GetQuorumStatus returns a detailed status of quorum health.
func (*QuorumManager) HasQuorum ¶
func (qm *QuorumManager) HasQuorum() bool
HasQuorum checks if the cluster currently has quorum.
func (*QuorumManager) IsQuorumHealthy ¶
func (qm *QuorumManager) IsQuorumHealthy() bool
IsQuorumHealthy checks if quorum is healthy (more than minimum).
func (*QuorumManager) RecommendClusterSize ¶
func (qm *QuorumManager) RecommendClusterSize() map[int]ClusterSizeRecommendation
RecommendClusterSize recommends optimal cluster sizes.
func (*QuorumManager) ValidateClusterResilience ¶
func (qm *QuorumManager) ValidateClusterResilience() []string
ValidateClusterResilience validates overall cluster resilience.
func (*QuorumManager) ValidateQuorumForRemoval ¶
func (qm *QuorumManager) ValidateQuorumForRemoval(nodeIDs []string) (bool, string)
ValidateQuorumForRemoval checks if removing nodes would maintain quorum.
func (*QuorumManager) WouldHaveQuorum ¶
func (qm *QuorumManager) WouldHaveQuorum(healthyNodesAfterChange int, totalNodesAfterChange int) bool
WouldHaveQuorum checks if quorum would exist after a change.
type RackInfo ¶
type RackInfo struct {
Name string
Zone string
NodeCount int
Nodes []string
Healthy int
Unhealthy int
}
RackInfo contains information about a rack.
type RebalanceAction ¶
type RebalanceAction struct {
Type RebalanceActionType
SourceNode string
TargetNode string
Description string
Applied bool
Error error
}
RebalanceAction represents a single rebalance action.
type RebalanceActionType ¶
type RebalanceActionType int
RebalanceActionType represents the type of rebalance action.
const ( // RebalanceActionMoveLeader moves leadership. RebalanceActionMoveLeader RebalanceActionType = iota // RebalanceActionAddReplica adds a replica. RebalanceActionAddReplica // RebalanceActionRemoveReplica removes a replica. RebalanceActionRemoveReplica // RebalanceActionTransferSnapshot transfers a snapshot. RebalanceActionTransferSnapshot )
func (RebalanceActionType) String ¶
func (t RebalanceActionType) String() string
String returns string representation of action type.
type RebalanceConfig ¶
type RebalanceConfig struct {
Enabled bool
AutoRebalance bool
Threshold float64 // Imbalance threshold (0.0 - 1.0)
CheckInterval time.Duration
}
RebalanceConfig contains rebalance configuration.
type RebalanceManager ¶
type RebalanceManager struct {
// contains filtered or unexported fields
}
RebalanceManager manages cluster rebalancing operations.
func NewRebalanceManager ¶
func NewRebalanceManager( manager *Manager, topology *TopologyManager, quorum *QuorumManager, config RebalanceConfig, logger forge.Logger, ) *RebalanceManager
NewRebalanceManager creates a new rebalance manager.
func (*RebalanceManager) AnalyzeBalance ¶
func (rm *RebalanceManager) AnalyzeBalance() BalanceAnalysis
AnalyzeBalance analyzes cluster balance.
func (*RebalanceManager) Disable ¶
func (rm *RebalanceManager) Disable()
Disable disables rebalancing.
func (*RebalanceManager) IsEnabled ¶
func (rm *RebalanceManager) IsEnabled() bool
IsEnabled returns whether rebalancing is enabled.
func (*RebalanceManager) Rebalance ¶
func (rm *RebalanceManager) Rebalance(ctx context.Context) (*RebalanceResult, error)
Rebalance performs a rebalance operation.
type RebalanceResult ¶
type RebalanceResult struct {
StartTime time.Time
EndTime time.Time
Duration time.Duration
ActionsToken int
Success bool
Error error
Actions []RebalanceAction
}
RebalanceResult contains the result of a rebalance operation.
type RegionInfo ¶
type RegionInfo struct {
Name string
NodeCount int
ZoneCount int
Nodes []string
Healthy int
Unhealthy int
}
RegionInfo contains information about a region.
type TopologyManager ¶
type TopologyManager struct {
// contains filtered or unexported fields
}
TopologyManager manages cluster topology and node relationships.
func NewTopologyManager ¶
func NewTopologyManager(manager *Manager, logger forge.Logger) *TopologyManager
NewTopologyManager creates a new topology manager.
func (*TopologyManager) GetNodesInRack ¶
func (tm *TopologyManager) GetNodesInRack(rack string) []string
GetNodesInRack returns all nodes in a rack.
func (*TopologyManager) GetNodesInRegion ¶
func (tm *TopologyManager) GetNodesInRegion(region string) []string
GetNodesInRegion returns all nodes in a region.
func (*TopologyManager) GetNodesInZone ¶
func (tm *TopologyManager) GetNodesInZone(zone string) []string
GetNodesInZone returns all nodes in a zone.
func (*TopologyManager) GetTopologyDistribution ¶
func (tm *TopologyManager) GetTopologyDistribution() map[string]any
GetTopologyDistribution returns distribution statistics.
func (*TopologyManager) GetTopologyView ¶
func (tm *TopologyManager) GetTopologyView() TopologyView
GetTopologyView returns a complete view of the cluster topology.
func (*TopologyManager) IsTopologyAware ¶
func (tm *TopologyManager) IsTopologyAware() bool
IsTopologyAware returns true if topology information is being tracked.
func (*TopologyManager) RegisterNodeLocation ¶
func (tm *TopologyManager) RegisterNodeLocation(location NodeLocation) error
RegisterNodeLocation registers a node's location.
func (*TopologyManager) UnregisterNode ¶
func (tm *TopologyManager) UnregisterNode(nodeID string)
UnregisterNode removes a node from topology.
func (*TopologyManager) ValidateTopology ¶
func (tm *TopologyManager) ValidateTopology() []string
ValidateTopology validates cluster topology for fault tolerance.