Documentation
¶
Overview ¶
Package p2c provides Power of Two Choices load balancing selector. The P2C algorithm picks two random instances and selects the one with lower load. Load calculation considers: pending requests, failure rate, latency EWMA. Eg:
P2C(二选一)负载均衡选择器包,提供基于负载感知的选择算法。 P2C 算法随机选择两个实例,然后选择负载较低的那个。 负载计算考虑:待处理请求、失败率、延迟 EWMA。 Eg:
// 注册 Provider app.Register(p2c.NewProvider()) // 使用选择器 selector := c.MustMake(discoverycontract.SelectorKey).(discoverycontract.Selector) instance, doneFunc, _ := selector.Select(ctx, instances)
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type InstanceStats ¶
type InstanceStats struct {
// contains filtered or unexported fields
}
InstanceStats tracks load metrics for a single instance.
InstanceStats 跟踪单个实例的负载指标。
type P2CSelector ¶
type P2CSelector struct {
// contains filtered or unexported fields
}
P2CSelector implements discoverycontract.Selector with Power of Two Choices algorithm.
P2CSelector 使用 P2C 算法实现 discoverycontract.Selector 接口。
func NewP2CSelector ¶
func NewP2CSelector() *P2CSelector
NewP2CSelector creates a new P2C selector instance.
NewP2CSelector 创建新的 P2C 选择器实例。
func (*P2CSelector) Select ¶
func (s *P2CSelector) Select(ctx context.Context, instances []transportcontract.ServiceInstance, opts ...discoverycontract.SelectOption) ( selected transportcontract.ServiceInstance, done discoverycontract.DoneFunc, err error, )
Select picks an instance using P2C algorithm with load awareness. Core logic: Pick two random instances, compare their scores, pick lower load.
Select 使用 P2C 算法选择实例,考虑负载感知。 核心逻辑:随机选择两个实例,比较它们的分数,选择负载较低的那个。
type Provider ¶
type Provider struct{}
Provider registers the P2C selector contract.
Provider 注册 P2C 选择器契约。
func NewProvider ¶
func NewProvider() *Provider
NewProvider creates a new P2C selector provider instance.
NewProvider 创建新的 P2C 选择器 Provider 实例。
func (*Provider) Boot ¶
func (p *Provider) Boot(c runtimecontract.Container) error
Boot is a no-op for P2C selector provider.
Boot P2C 选择器 Provider 无启动逻辑。
func (*Provider) DependsOn ¶
DependsOn returns the keys this provider depends on. P2C selector has no dependencies.
DependsOn 返回该 provider 依赖的 key。 P2C selector 无依赖。
func (*Provider) IsDefer ¶
IsDefer returns true, selector can be deferred until first use.
IsDefer 返回 true,选择器可延迟初始化直到首次使用。
func (*Provider) Name ¶
Name returns the provider name "selector.p2c".
Name 返回 Provider 名称 "selector.p2c"。