Documentation
¶
Index ¶
- type ConsistencyConfig
- type ConsistencyLevel
- type ConsistencyMiddleware
- type LeadershipMiddleware
- func (lm *LeadershipMiddleware) LeaderRedirect(next func(forge.Context) error) func(forge.Context) error
- func (lm *LeadershipMiddleware) ReadOnlyRouting(next func(forge.Context) error) func(forge.Context) error
- func (lm *LeadershipMiddleware) RequireLeader(next func(forge.Context) error) func(forge.Context) error
- type MetricsMiddleware
- type QuorumMiddleware
- type ReadOnlyMiddleware
- type RedirectMiddleware
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ConsistencyConfig ¶
type ConsistencyConfig struct {
DefaultLevel ConsistencyLevel
MaxStaleness time.Duration
}
ConsistencyConfig contains consistency middleware configuration
type ConsistencyLevel ¶
type ConsistencyLevel int
ConsistencyLevel represents the consistency level for reads
const ( // ConsistencyLinearizable provides linearizable reads (strongest) ConsistencyLinearizable ConsistencyLevel = iota // ConsistencyBounded provides bounded staleness reads ConsistencyBounded // ConsistencyEventual allows eventually consistent reads (weakest) ConsistencyEventual )
func (ConsistencyLevel) String ¶
func (cl ConsistencyLevel) String() string
String returns string representation of consistency level
type ConsistencyMiddleware ¶
type ConsistencyMiddleware struct {
// contains filtered or unexported fields
}
ConsistencyMiddleware enforces consistency guarantees
func NewConsistencyMiddleware ¶
func NewConsistencyMiddleware( raftNode internal.RaftNode, config ConsistencyConfig, logger forge.Logger, ) *ConsistencyMiddleware
NewConsistencyMiddleware creates consistency middleware
type LeadershipMiddleware ¶
type LeadershipMiddleware struct {
// contains filtered or unexported fields
}
LeadershipMiddleware provides middleware for leadership enforcement
func NewLeadershipMiddleware ¶
func NewLeadershipMiddleware(service internal.ConsensusService, logger forge.Logger) *LeadershipMiddleware
NewLeadershipMiddleware creates a new leadership middleware
func (*LeadershipMiddleware) LeaderRedirect ¶
func (lm *LeadershipMiddleware) LeaderRedirect(next func(forge.Context) error) func(forge.Context) error
LeaderRedirect redirects to the leader if not leader
func (*LeadershipMiddleware) ReadOnlyRouting ¶
func (lm *LeadershipMiddleware) ReadOnlyRouting(next func(forge.Context) error) func(forge.Context) error
ReadOnlyRouting allows reads on any node but writes only on leader
func (*LeadershipMiddleware) RequireLeader ¶
func (lm *LeadershipMiddleware) RequireLeader(next func(forge.Context) error) func(forge.Context) error
RequireLeader enforces that the current node is the leader
type MetricsMiddleware ¶
type MetricsMiddleware struct {
// contains filtered or unexported fields
}
MetricsMiddleware adds consensus metrics to responses
func NewMetricsMiddleware ¶
func NewMetricsMiddleware(service internal.ConsensusService, logger forge.Logger) *MetricsMiddleware
NewMetricsMiddleware creates a new metrics middleware
func (*MetricsMiddleware) AddConsensusHeaders ¶
func (mm *MetricsMiddleware) AddConsensusHeaders(next func(forge.Context) error) func(forge.Context) error
AddConsensusHeaders adds consensus-related headers to responses
type QuorumMiddleware ¶
type QuorumMiddleware struct {
// contains filtered or unexported fields
}
QuorumMiddleware ensures cluster has quorum
func NewQuorumMiddleware ¶
func NewQuorumMiddleware(service internal.ConsensusService, logger forge.Logger) *QuorumMiddleware
NewQuorumMiddleware creates a new quorum middleware
func (*QuorumMiddleware) RequireQuorum ¶
RequireQuorum enforces that the cluster has quorum
type ReadOnlyMiddleware ¶
type ReadOnlyMiddleware struct {
// contains filtered or unexported fields
}
ReadOnlyMiddleware routes read-only requests to any node
func NewReadOnlyMiddleware ¶
func NewReadOnlyMiddleware(raftNode internal.RaftNode, logger forge.Logger) *ReadOnlyMiddleware
NewReadOnlyMiddleware creates read-only middleware
func (*ReadOnlyMiddleware) Handle ¶
func (rom *ReadOnlyMiddleware) Handle() func(forge.Context) error
Handle allows read-only requests on any node
func (*ReadOnlyMiddleware) HandleStrict ¶
func (rom *ReadOnlyMiddleware) HandleStrict() func(forge.Context) error
HandleStrict enforces leadership even for reads
func (*ReadOnlyMiddleware) HandleWithStaleReads ¶
func (rom *ReadOnlyMiddleware) HandleWithStaleReads() func(forge.Context) error
HandleWithStaleReads allows stale reads on followers
type RedirectMiddleware ¶
type RedirectMiddleware struct {
// contains filtered or unexported fields
}
RedirectMiddleware redirects requests to the leader
func NewRedirectMiddleware ¶
func NewRedirectMiddleware(raftNode internal.RaftNode, manager *cluster.Manager, logger forge.Logger) *RedirectMiddleware
NewRedirectMiddleware creates redirect middleware
func (*RedirectMiddleware) Handle ¶
func (rm *RedirectMiddleware) Handle() func(forge.Context) error
Handle redirects non-leader requests to the leader
func (*RedirectMiddleware) HandleWithAutoRedirect ¶
func (rm *RedirectMiddleware) HandleWithAutoRedirect() func(forge.Context) error
HandleWithAutoRedirect performs HTTP redirect
func (*RedirectMiddleware) HandleWithForward ¶
func (rm *RedirectMiddleware) HandleWithForward() func(forge.Context) error
HandleWithForward forwards request to leader (proxy)