clientselector

package
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 1, 2017 License: Apache-2.0 Imports: 22 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CalculateWeight added in v1.1.1

func CalculateWeight(rtt int) int

CalculateWeight converts the rtt to weighted by:

  1. weight=191 if t <= 10
  2. weight=201 -t if 10 < t <=200
  3. weight=1 if 200 < t < 1000
  4. weight = 0 if t >= 1000

It means servers that ping time t < 10 will be preferred and servers won't be selected if t > 1000. It is hard coded based on Ops experience.

func Hash

func Hash(key uint64, buckets int32) int32

Hash consistently chooses a hash bucket number in the range [0, numBuckets) for the given key. numBuckets must be >= 1.

func HashString

func HashString(s string) uint64

HashString get a hash value of a string

func JumpConsistentHash

func JumpConsistentHash(len int, options ...interface{}) int

JumpConsistentHash selects a server by serviceMethod and args

func Ping added in v1.1.1

func Ping(host string) (rtt int, err error)

Ping gets network traffic by ICMP

Types

type CMap added in v1.1.2

type CMap struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

CMap is a goutine-safe/thread-safe map

func NewCMap added in v1.1.2

func NewCMap() *CMap

func (*CMap) Get added in v1.1.2

func (s *CMap) Get(key string) *rpc.Client

func (*CMap) Remove added in v1.1.2

func (s *CMap) Remove(key string)

func (*CMap) Set added in v1.1.2

func (s *CMap) Set(key string, value *rpc.Client)

type ConsistentAddrStrFunction added in v1.1.2

type ConsistentAddrStrFunction func(options ...interface{}) string

ConsistentFunction define a hash function Return service address, like "tcp@127.0.0.1:8970"

type ConsulClientSelector

type ConsulClientSelector struct {
	ConsulAddress string

	Servers []*api.AgentService

	WeightedServers []*Weighted
	ServiceName     string
	SelectMode      rpcx.SelectMode

	HashServiceAndArgs HashServiceAndArgs
	Client             *rpcx.Client
	// contains filtered or unexported fields
}

ConsulClientSelector is used to select a rpc server from consul. This registry is experimental and has not been test.

func NewConsulClientSelector

func NewConsulClientSelector(consulAddress string, serviceName string, sessionTimeout time.Duration, sm rpcx.SelectMode, dailTimeout time.Duration) *ConsulClientSelector

NewConsulClientSelector creates a ConsulClientSelector

func (*ConsulClientSelector) AllClients

func (s *ConsulClientSelector) AllClients(clientCodecFunc rpcx.ClientCodecFunc) []*core.Client

AllClients returns core.Clients to all servers

func (*ConsulClientSelector) HandleFailedClient added in v1.1.2

func (s *ConsulClientSelector) HandleFailedClient(client *core.Client)

func (*ConsulClientSelector) Select

func (s *ConsulClientSelector) Select(clientCodecFunc rpcx.ClientCodecFunc, options ...interface{}) (*core.Client, error)

Select returns a rpc client

func (*ConsulClientSelector) SetClient

func (s *ConsulClientSelector) SetClient(c *rpcx.Client)

SetClient set a Client in order that clientSelector can uses it

func (*ConsulClientSelector) SetSelectMode

func (s *ConsulClientSelector) SetSelectMode(sm rpcx.SelectMode)

SetSelectMode sets SelectMode

type EtcdClientSelector

type EtcdClientSelector struct {
	EtcdServers []string
	KeysAPI     client.KeysAPI

	BasePath string //should endwith serviceName
	Servers  []string
	Group    string

	Latitude        float64
	Longitude       float64
	WeightedServers []*Weighted
	SelectMode      rpcx.SelectMode

	HashServiceAndArgs HashServiceAndArgs
	Client             *rpcx.Client
	// contains filtered or unexported fields
}

EtcdClientSelector is used to select a rpc server from etcd.

func NewEtcdClientSelector

func NewEtcdClientSelector(etcdServers []string, servicePath string, sessionTimeout time.Duration, sm rpcx.SelectMode, dailTimeout time.Duration) *EtcdClientSelector

NewEtcdClientSelector creates a EtcdClientSelector

func (*EtcdClientSelector) AllClients

func (s *EtcdClientSelector) AllClients(clientCodecFunc rpcx.ClientCodecFunc) []*core.Client

AllClients returns core.Clients to all servers

func (*EtcdClientSelector) HandleFailedClient added in v1.1.2

func (s *EtcdClientSelector) HandleFailedClient(client *core.Client)

func (*EtcdClientSelector) Select

func (s *EtcdClientSelector) Select(clientCodecFunc rpcx.ClientCodecFunc, options ...interface{}) (*core.Client, error)

Select returns a rpc client

func (*EtcdClientSelector) SetClient

func (s *EtcdClientSelector) SetClient(c *rpcx.Client)

SetClient set a Client in order that clientSelector can uses it

func (*EtcdClientSelector) SetSelectMode

func (s *EtcdClientSelector) SetSelectMode(sm rpcx.SelectMode)

SetSelectMode sets SelectMode

type EtcdV3ClientSelector added in v1.1.3

type EtcdV3ClientSelector struct {
	EtcdServers []string
	KeysAPI     *clientv3.Client

	BasePath string //should endwith serviceName
	Servers  []string
	Group    string

	Latitude        float64
	Longitude       float64
	WeightedServers []*Weighted
	SelectMode      rpcx.SelectMode

	HashServiceAndArgs HashServiceAndArgs
	Client             *rpcx.Client
	DialTimeout        time.Duration
	Username           string
	Password           string
	UpdateIntervalNum  int64
	// contains filtered or unexported fields
}

EtcdV3ClientSelector is used to select a rpc server from etcd via V3 API.

func NewEtcdV3ClientSelector added in v1.1.3

func NewEtcdV3ClientSelector(etcdServers []string, servicePath string, sessionTimeout time.Duration, sm rpcx.SelectMode, dailTimeout time.Duration) *EtcdV3ClientSelector

NewEtcdClientSelector creates a EtcdClientSelector

func (*EtcdV3ClientSelector) AllClients added in v1.1.3

func (s *EtcdV3ClientSelector) AllClients(clientCodecFunc rpcx.ClientCodecFunc) []*core.Client

AllClients returns core.Clients to all servers

func (*EtcdV3ClientSelector) HandleFailedClient added in v1.1.3

func (s *EtcdV3ClientSelector) HandleFailedClient(client *core.Client)

func (*EtcdV3ClientSelector) Select added in v1.1.3

func (s *EtcdV3ClientSelector) Select(clientCodecFunc rpcx.ClientCodecFunc, options ...interface{}) (*core.Client, error)

Select returns a rpc client

func (*EtcdV3ClientSelector) SetClient added in v1.1.3

func (s *EtcdV3ClientSelector) SetClient(c *rpcx.Client)

SetClient set a Client in order that clientSelector can uses it

func (*EtcdV3ClientSelector) SetSelectMode added in v1.1.3

func (s *EtcdV3ClientSelector) SetSelectMode(sm rpcx.SelectMode)

SetSelectMode sets SelectMode

type HashServiceAndArgs

type HashServiceAndArgs func(len int, options ...interface{}) int

HashServiceAndArgs define a hash function

type MultiClientSelector

type MultiClientSelector struct {
	Servers []*ServerPeer

	WeightedServers []*Weighted
	SelectMode      rpcx.SelectMode

	HashServiceAndArgs HashServiceAndArgs
	Client             *rpcx.Client
	// contains filtered or unexported fields
}

MultiClientSelector is used to select a direct rpc server from a list.

func NewMultiClientSelector

func NewMultiClientSelector(servers []*ServerPeer, sm rpcx.SelectMode, dailTimeout time.Duration) *MultiClientSelector

NewMultiClientSelector creates a MultiClientSelector

func (*MultiClientSelector) AllClients

func (s *MultiClientSelector) AllClients(clientCodecFunc rpcx.ClientCodecFunc) []*core.Client

AllClients returns core.Clients to all servers

func (*MultiClientSelector) HandleFailedClient added in v1.1.2

func (s *MultiClientSelector) HandleFailedClient(client *core.Client)

func (*MultiClientSelector) Select

func (s *MultiClientSelector) Select(clientCodecFunc rpcx.ClientCodecFunc, options ...interface{}) (*core.Client, error)

Select returns a rpc client

func (*MultiClientSelector) SetClient

func (s *MultiClientSelector) SetClient(c *rpcx.Client)

SetClient set a Client in order that clientSelector can uses it

func (*MultiClientSelector) SetSelectMode

func (s *MultiClientSelector) SetSelectMode(sm rpcx.SelectMode)

SetSelectMode sets SelectMode

type ServerPeer

type ServerPeer struct {
	Network, Address string
	Weight           int
}

ServerPeer is

type Weighted

type Weighted struct {
	Server          interface{}
	Weight          int
	CurrentWeight   int
	EffectiveWeight int
}

Weighted is a wrapped server with weight

type ZooKeeperClientSelector

type ZooKeeperClientSelector struct {
	ZKServers []string

	BasePath string //should endwith serviceName
	Servers  []string
	Group    string

	Latitude        float64
	Longitude       float64
	WeightedServers []*Weighted
	SelectMode      rpcx.SelectMode

	HashServiceAndArgs        HashServiceAndArgs
	ConsistentAddrStrFunction ConsistentAddrStrFunction
	Client                    *rpcx.Client
	// contains filtered or unexported fields
}

ZooKeeperClientSelector is used to select a rpc server from zookeeper.

func NewZooKeeperClientSelector

func NewZooKeeperClientSelector(zkServers []string, basePath string, sessionTimeout time.Duration, sm rpcx.SelectMode, dailTimeout time.Duration) *ZooKeeperClientSelector

NewZooKeeperClientSelector creates a ZooKeeperClientSelector sessionTimeout is timeout configuration for zookeeper. timeout is timeout configuration for TCP connection to RPC servers.

func (*ZooKeeperClientSelector) AllClients

func (s *ZooKeeperClientSelector) AllClients(clientCodecFunc rpcx.ClientCodecFunc) []*core.Client

AllClients returns core.Clients to all servers

func (*ZooKeeperClientSelector) HandleFailedClient added in v1.1.2

func (s *ZooKeeperClientSelector) HandleFailedClient(client *core.Client)

func (*ZooKeeperClientSelector) Select

func (s *ZooKeeperClientSelector) Select(clientCodecFunc rpcx.ClientCodecFunc, options ...interface{}) (*core.Client, error)

Select returns a rpc client

func (*ZooKeeperClientSelector) SetClient

func (s *ZooKeeperClientSelector) SetClient(c *rpcx.Client)

SetClient sets a Client in order that clientSelector can uses it

func (*ZooKeeperClientSelector) SetSelectMode

func (s *ZooKeeperClientSelector) SetSelectMode(sm rpcx.SelectMode)

SetSelectMode sets SelectMode

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL