Documentation
¶
Index ¶
Constants ¶
View Source
const ( LBUnknown = iota LBRoundRobbin LBRoundRobbinWeight LBRandom LBRandomWeight )
Variables ¶
This section is empty.
Functions ¶
func DefaultCompare ¶
func DefaultCompare(a, b interface{}) int
Types ¶
type BaseLoadBalance ¶
type BaseLoadBalance struct { Compare Compare LockLoadBalance // contains filtered or unexported fields }
func (*BaseLoadBalance) Add ¶
func (lb *BaseLoadBalance) Add(factor interface{}, invoker interface{})
func (*BaseLoadBalance) AddInvokers ¶
func (lb *BaseLoadBalance) AddInvokers(invokers ...interface{})
func (*BaseLoadBalance) Remove ¶
func (lb *BaseLoadBalance) Remove(invoker interface{})
type DummyLocker ¶
type DummyLocker struct{}
func (*DummyLocker) Lock ¶
func (l *DummyLocker) Lock()
func (*DummyLocker) RLock ¶
func (l *DummyLocker) RLock()
func (*DummyLocker) RUnlock ¶
func (l *DummyLocker) RUnlock()
func (*DummyLocker) Unlock ¶
func (l *DummyLocker) Unlock()
type LoadBalance ¶
type LoadBalance interface { //增加一个invoker // //factor影响选择的因素,不同的实现该类型不一致: 如带权值负载均,weight类型为int Add(factor interface{}, invoker interface{}) //从记录中删除,不会再次被选中 Remove(invoker interface{}) //选择invoker Select(ctx context.Context) interface{} //设置锁 WithLocker(RWLocker) }
func Create ¶
func Create(t int) LoadBalance
type LockLoadBalance ¶
type LockLoadBalance struct {
// contains filtered or unexported fields
}
func (*LockLoadBalance) WithLocker ¶
func (lb *LockLoadBalance) WithLocker(locker RWLocker)
type RandomLoadBalance ¶
type RandomLoadBalance struct { BaseLoadBalance // contains filtered or unexported fields }
func NewRandomLoadBalance ¶
func NewRandomLoadBalance() *RandomLoadBalance
func (*RandomLoadBalance) Select ¶
func (lb *RandomLoadBalance) Select(ctx context.Context) interface{}
type RandomWeightLoadBalance ¶
type RandomWeightLoadBalance struct { LockLoadBalance // contains filtered or unexported fields }
func NewRandomWeightLoadBalance ¶
func NewRandomWeightLoadBalance() *RandomWeightLoadBalance
func (*RandomWeightLoadBalance) Add ¶
func (lb *RandomWeightLoadBalance) Add(weight interface{}, invoker interface{})
func (*RandomWeightLoadBalance) Remove ¶
func (lb *RandomWeightLoadBalance) Remove(invoker interface{})
func (*RandomWeightLoadBalance) Select ¶
func (lb *RandomWeightLoadBalance) Select(ctx context.Context) interface{}
type RoundRobbinLoadBalance ¶
type RoundRobbinLoadBalance struct { BaseLoadBalance // contains filtered or unexported fields }
func NewRoundRobbinLoadBalance ¶
func NewRoundRobbinLoadBalance() *RoundRobbinLoadBalance
func (*RoundRobbinLoadBalance) Select ¶
func (lb *RoundRobbinLoadBalance) Select(ctx context.Context) interface{}
type RoundRobbinWeightLoadBalance ¶
type RoundRobbinWeightLoadBalance struct { Compare Compare LockLoadBalance // contains filtered or unexported fields }
func NewRoundRobbinWeightLoadBalance ¶
func NewRoundRobbinWeightLoadBalance() *RoundRobbinWeightLoadBalance
func (*RoundRobbinWeightLoadBalance) Add ¶
func (lb *RoundRobbinWeightLoadBalance) Add(weight interface{}, invoker interface{})
func (*RoundRobbinWeightLoadBalance) Remove ¶
func (lb *RoundRobbinWeightLoadBalance) Remove(invoker interface{})
func (*RoundRobbinWeightLoadBalance) Select ¶
func (lb *RoundRobbinWeightLoadBalance) Select(ctx context.Context) interface{}
Click to show internal directories.
Click to hide internal directories.