clientselector

package
v0.0.0-...-2dd475d Latest Latest
Warning

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

Go to latest
Published: Nov 16, 2016 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CalculateWeight

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

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

Ping gets network traffic by ICMP

Types

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) []*rpc.Client

AllClients returns rpc.Clients to all servers

func (*ConsulClientSelector) Select

func (s *ConsulClientSelector) Select(clientCodecFunc rpcx.ClientCodecFunc, options ...interface{}) (*rpc.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, basePath 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) []*rpc.Client

AllClients returns rpc.Clients to all servers

func (*EtcdClientSelector) Select

func (s *EtcdClientSelector) Select(clientCodecFunc rpcx.ClientCodecFunc, options ...interface{}) (*rpc.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 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) []*rpc.Client

AllClients returns rpc.Clients to all servers

func (*MultiClientSelector) Select

func (s *MultiClientSelector) Select(clientCodecFunc rpcx.ClientCodecFunc, options ...interface{}) (*rpc.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
	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) []*rpc.Client

AllClients returns rpc.Clients to all servers

func (*ZooKeeperClientSelector) Select

func (s *ZooKeeperClientSelector) Select(clientCodecFunc rpcx.ClientCodecFunc, options ...interface{}) (*rpc.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