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).