Documentation
¶
Overview ¶
Application scenarios: - Define the service-instance selection contract used by discovery-aware RPC clients. - Separate selection algorithms, filters, and completion feedback from concrete providers. - Provide one shared option model for force-routing, metadata hints, and custom node filters.
适用场景: - 定义 discovery 感知型 RPC 客户端使用的服务实例选择契约。 - 将选择算法、过滤器和完成反馈与具体 provider 解耦。 - 为强制路由、metadata 提示和自定义节点过滤提供统一选项模型。
Index ¶
Constants ¶
const ( SelectorKey = "framework.selector" SelectorBuilderKey = "framework.selector.builder" )
Variables ¶
var ErrNoAvailable = errors.New("selector: no available service instance")
ErrNoAvailable indicates that no service instance is currently selectable.
ErrNoAvailable 表示当前没有可选的服务实例。
Functions ¶
This section is empty.
Types ¶
type DoneFunc ¶
DoneFunc reports request completion feedback back to the selector.
DoneFunc 用于把请求完成反馈回传给选择器。
type DoneInfo ¶
type DoneInfo struct {
Err error
ReplyMD ReplyMetadata
BytesSent bool
BytesReceived bool
Latency time.Duration
}
DoneInfo describes the request result observed by the selector.
DoneInfo 描述选择器观测到的请求结果。
type NodeFilter ¶
type NodeFilter func(instance transportcontract.ServiceInstance) bool
NodeFilter filters candidate service instances before selection.
NodeFilter 用于在选择前过滤候选服务实例。
type ReplyMetadata ¶
ReplyMetadata defines the metadata view exposed to selectors after one request.
ReplyMetadata 定义请求完成后暴露给选择器的 metadata 视图。
type SelectOption ¶
type SelectOption func(*SelectOptions)
SelectOption mutates select options.
SelectOption 用于修改选择选项。
func WithFilter ¶
func WithFilter(filter NodeFilter) SelectOption
WithFilter appends one custom node filter.
WithFilter 追加一个自定义节点过滤器。
func WithForceInstance ¶
func WithForceInstance(instance transportcontract.ServiceInstance) SelectOption
WithForceInstance forces the selector to use one specific instance.
WithForceInstance 强制选择器使用指定实例。
func WithMetadata ¶
func WithMetadata(key, value string) SelectOption
WithMetadata attaches one metadata hint used during selection.
WithMetadata 追加一个选择阶段使用的 metadata 提示。
type SelectOptions ¶
type SelectOptions struct {
ForceInstance *transportcontract.ServiceInstance
Filters []NodeFilter
Metadata map[string]string
}
SelectOptions describes the selector input options.
SelectOptions 描述选择器输入选项。
type Selector ¶
type Selector interface {
Select(ctx context.Context, instances []transportcontract.ServiceInstance, opts ...SelectOption) (selected transportcontract.ServiceInstance, done DoneFunc, err error)
}
Selector chooses one service instance from a candidate set.
Selector 用于从候选集合中选择一个服务实例。
type SelectorAlgorithm ¶
type SelectorAlgorithm string
SelectorAlgorithm describes the selector algorithm identifier.
SelectorAlgorithm 描述选择算法标识。
const ( SelectorNoop SelectorAlgorithm = "noop" SelectorRandom SelectorAlgorithm = "random" SelectorWRR SelectorAlgorithm = "wrr" SelectorP2C SelectorAlgorithm = "p2c" SelectorP2CEWMA SelectorAlgorithm = "p2c_ewma" )
type SelectorBuilder ¶
type SelectorBuilder interface {
Build() Selector
}
SelectorBuilder builds a selector instance.
SelectorBuilder 用于构建选择器实例。
type WeightedNode ¶
type WeightedNode interface {
ServiceInstance() transportcontract.ServiceInstance
Weight() float64
}
WeightedNode describes a candidate that exposes both instance data and weight.
WeightedNode 描述同时暴露实例信息和权重的候选节点。