Documentation ¶
Index ¶
- Variables
- func NewDecayer(cfg *DecayerCfg, mgr *BasicConnMgr) (*decayer, error)
- type BasicConnMgr
- func (cm *BasicConnMgr) CheckLimit(systemLimit connmgr.GetConnLimiter) error
- func (cm *BasicConnMgr) Close() error
- func (cm *BasicConnMgr) GetInfo() CMInfo
- func (cm *BasicConnMgr) GetTagInfo(p peer.ID) *connmgr.TagInfo
- func (cm *BasicConnMgr) IsProtected(id peer.ID, tag string) (protected bool)
- func (cm *BasicConnMgr) Notifee() network.Notifiee
- func (cm *BasicConnMgr) Protect(id peer.ID, tag string)
- func (d BasicConnMgr) RegisterDecayingTag(name string, interval time.Duration, decayFn connmgr.DecayFn, ...) (connmgr.DecayingTag, error)
- func (cm *BasicConnMgr) TagPeer(p peer.ID, tag string, val int)
- func (cm *BasicConnMgr) TrimOpenConns(_ context.Context)
- func (cm *BasicConnMgr) Unprotect(id peer.ID, tag string) (protected bool)
- func (cm *BasicConnMgr) UntagPeer(p peer.ID, tag string)
- func (cm *BasicConnMgr) UpsertTag(p peer.ID, tag string, upsert func(int) int)
- type CMInfo
- type DecayerCfg
- type Option
Constants ¶
This section is empty.
Variables ¶
var DefaultResolution = 1 * time.Minute
DefaultResolution 是衰减追踪器的默认分辨率
Functions ¶
func NewDecayer ¶
func NewDecayer(cfg *DecayerCfg, mgr *BasicConnMgr) (*decayer, error)
NewDecayer 创建一个新的衰减标签注册表 参数:
- cfg: *DecayerCfg,衰减器配置
- mgr: *BasicConnMgr,连接管理器
返回:
- *decayer: 新创建的衰减器
- error: 如果创建过程中出现错误则返回错误
Types ¶
type BasicConnMgr ¶
type BasicConnMgr struct {
// contains filtered or unexported fields
}
BasicConnMgr 是一个连接管理器,当连接数超过高水位时会修剪连接。 新连接在被修剪之前会有一个宽限期。 修剪会在需要时自动运行,只有当距离上次修剪的时间超过10秒时才会执行。 此外,可以通过该结构体的公共接口显式请求修剪(参见 TrimOpenConns)。
配置参数见 NewConnManager。
func NewConnManager ¶
func NewConnManager(low, hi int, opts ...Option) (*BasicConnMgr, error)
NewConnManager 创建一个新的 BasicConnMgr 参数:
- low: int,低水位线,当连接数低于此值时不会触发修剪
- hi: int,高水位线,当连接数超过此值时触发修剪
- opts: ...Option,可选的配置选项
返回:
- *BasicConnMgr: 新创建的连接管理器
- error: 如果创建过程中出现错误则返回错误
func (*BasicConnMgr) CheckLimit ¶
func (cm *BasicConnMgr) CheckLimit(systemLimit connmgr.GetConnLimiter) error
CheckLimit 检查连接限制是否超过系统限制 参数:
- systemLimit: 系统连接限制器
返回:
- error: 如果超过限制则返回错误
func (*BasicConnMgr) Close ¶
func (cm *BasicConnMgr) Close() error
Close 关闭连接管理器 参数: 无 返回:
- error: 关闭过程中的错误
func (*BasicConnMgr) GetInfo ¶
func (cm *BasicConnMgr) GetInfo() CMInfo
GetInfo 返回此连接管理器的配置和状态数据 返回:
- CMInfo: 连接管理器的信息
func (*BasicConnMgr) GetTagInfo ¶
func (cm *BasicConnMgr) GetTagInfo(p peer.ID) *connmgr.TagInfo
GetTagInfo 获取与指定peer关联的标签信息,如果p指向未知peer则返回nil 参数:
- p: peer ID
返回:
- *connmgr.TagInfo: peer的标签信息
func (*BasicConnMgr) IsProtected ¶
func (cm *BasicConnMgr) IsProtected(id peer.ID, tag string) (protected bool)
IsProtected 检查指定peer ID和标签是否受保护 参数:
- id: peer ID
- tag: 标签名
返回:
- protected: 是否受保护
func (*BasicConnMgr) Notifee ¶
func (cm *BasicConnMgr) Notifee() network.Notifiee
Notifee 返回一个接收器,通过它通知器可以在事件发生时通知 BasicConnMgr 目前,通知器仅对连接事件{Connected, Disconnected}做出反应 返回:
- network.Notifiee: 通知接收器
func (*BasicConnMgr) Protect ¶
func (cm *BasicConnMgr) Protect(id peer.ID, tag string)
Protect 保护指定peer ID和标签 参数:
- id: peer ID
- tag: 标签名
func (BasicConnMgr) RegisterDecayingTag ¶
func (d BasicConnMgr) RegisterDecayingTag(name string, interval time.Duration, decayFn connmgr.DecayFn, bumpFn connmgr.BumpFn) (connmgr.DecayingTag, error)
RegisterDecayingTag 注册一个新的衰减标签 参数:
- name: string,标签名称
- interval: time.Duration,衰减间隔
- decayFn: connmgr.DecayFn,衰减函数
- bumpFn: connmgr.BumpFn,增加函数
返回:
- connmgr.DecayingTag: 新创建的衰减标签
- error: 如果注册过程中出现错误则返回错误
func (*BasicConnMgr) TagPeer ¶
func (cm *BasicConnMgr) TagPeer(p peer.ID, tag string, val int)
TagPeer 为指定peer关联一个字符串标签和整数值 参数:
- p: peer ID
- tag: 标签名
- val: 标签值
func (*BasicConnMgr) TrimOpenConns ¶
func (cm *BasicConnMgr) TrimOpenConns(_ context.Context)
TrimOpenConns 关闭尽可能多的peer连接,使peer数量等于低水位 peer按总值升序排序,优先修剪分数最低的peer,只要它们不在宽限期内 此函数会阻塞直到修剪完成 如果修剪正在进行,不会启动新的修剪,而是等待当前修剪完成后返回 参数:
- _: context.Context,上下文(未使用)
func (*BasicConnMgr) Unprotect ¶
func (cm *BasicConnMgr) Unprotect(id peer.ID, tag string) (protected bool)
Unprotect 取消对指定peer ID和标签的保护 参数:
- id: peer ID
- tag: 标签名
返回:
- protected: 是否仍受保护
type CMInfo ¶
type CMInfo struct { // LowWater 低水位线,如 NewConnManager 中所述 LowWater int // HighWater 高水位线,如 NewConnManager 中所述 HighWater int // LastTrim 上次触发修剪的时间戳 LastTrim time.Time // GracePeriod 配置的宽限期,如 NewConnManager 中所述 GracePeriod time.Duration // ConnCount 当前连接数 ConnCount int }
CMInfo 保存 BasicConnMgr 的配置和状态数据
type DecayerCfg ¶
DecayerCfg 是衰减器的配置对象
func (*DecayerCfg) WithDefaults ¶
func (cfg *DecayerCfg) WithDefaults() *DecayerCfg
WithDefaults 为 DecayerConfig 实例写入默认值,并返回自身以支持链式调用
cfg := (&DecayerCfg{}).WithDefaults() cfg.Resolution = 30 * time.Second t := NewDecayer(cfg, cm)
type Option ¶
type Option func(*config) error
Option 表示基础连接管理器的配置选项函数 参数:
- *config: 配置对象指针
返回值:
- error: 配置错误信息
func DecayerConfig ¶
func DecayerConfig(opts *DecayerCfg) Option
DecayerConfig 应用衰减器的配置 参数:
- opts: 衰减器配置选项
返回值:
- Option: 配置选项函数
func WithEmergencyTrim ¶
WithEmergencyTrim 用于在内存紧急情况下启用连接修剪的选项 参数:
- enable: bool,是否启用紧急修剪
返回值:
- Option: 配置选项函数
func WithSilencePeriod ¶
WithSilencePeriod 设置静默期 如果连接数量超过高水位线,连接管理器将在每个静默期执行一次清理 参数:
- p: 静默期时长
返回值:
- Option: 配置选项函数