proxy

package
v0.0.0-...-59e6379 Latest Latest
Warning

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

Go to latest
Published: Sep 24, 2020 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (
	RoomIdParam      = "roomId"
	ServiceNameParam = "serviceName"
)

Variables

View Source
var (
	UpdateEndpointsInterval = 30 * time.Second

	// room:endpoint关联关系,一段时间后自动删除
	RoomExpireTime = time.Hour * 24

	// k8s中service的名字
	// todo:本地调试
	DefaultServiceName = "DefaultServiceName"
)
View Source
var (
	ParseRequestError = errors.New("Parse request error")

	UseStdLib           = false
	NotImplementFuncErr = errors.New("Not implement func")
)
View Source
var (
	NoAvailableServiceEndPointError = errors.New("No available service endpoint")
)

Functions

func NewRoomSerivce

func NewRoomSerivce(config Config) *roomService

func StartProxy

func StartProxy(tcpAddr string, rt *Runtime) error

Types

type Config

type Config interface {
	GetString(name string) string
}

func NewConfig

func NewConfig() Config

type Discovery

type Discovery interface {
	// endpoints 返回endpoints信息
	Endpoints(serviceName string) ([]string, error)
}

func NewSerivceDiscovery

func NewSerivceDiscovery() Discovery

type K8sServiceDiscovery

type K8sServiceDiscovery struct {
	// contains filtered or unexported fields
}

func (*K8sServiceDiscovery) Endpoints

func (k *K8sServiceDiscovery) Endpoints(serviceName string) ([]string, error)

type LBSelector

type LBSelector struct {
	// contains filtered or unexported fields
}

func (*LBSelector) ConfirmEnpoint

func (m *LBSelector) ConfirmEnpoint(endpoint, id string, checkIn bool) (err error)

ConfirmEnpoint 确认

func (*LBSelector) LoadStatus

func (m *LBSelector) LoadStatus() map[string][]string

func (*LBSelector) ReleaseEndpoint

func (m *LBSelector) ReleaseEndpoint(endpoint, id string)

func (*LBSelector) SelectEndpoint

func (m *LBSelector) SelectEndpoint(id string) (string, bool, error)

func (*LBSelector) ServiceName

func (m *LBSelector) ServiceName() string

type LoadBalance

type LoadBalance int
const (
	// Random requests that connections are randomly distributed.
	Random LoadBalance = iota
	// RoundRobin requests that connections are distributed to a loop in a
	// round-robin fashion.
	RoundRobin
	// LeastConnections assigns the next accepted connection to the loop with
	// the least number of active connections.
	LeastConnections
)

type MockServiceDiscovery

type MockServiceDiscovery struct {
}

func (*MockServiceDiscovery) Endpoints

func (*MockServiceDiscovery) Endpoints(serviceName string) ([]string, error)

type RedisRepository

type RedisRepository struct {
	// contains filtered or unexported fields
}

func (*RedisRepository) DeleteString

func (r *RedisRepository) DeleteString(key string)

func (*RedisRepository) GetSortedSetMemberCount

func (r *RedisRepository) GetSortedSetMemberCount(key string) int64

func (*RedisRepository) GetSortedSetMemberScore

func (r *RedisRepository) GetSortedSetMemberScore(key, member string) float64

func (*RedisRepository) GetSortedSetMembersWithScore

func (r *RedisRepository) GetSortedSetMembersWithScore(key string) map[string]float64

func (*RedisRepository) GetString

func (r *RedisRepository) GetString(key string) (string, bool)

func (*RedisRepository) IncrSortedSetMemberScore

func (r *RedisRepository) IncrSortedSetMemberScore(key, member string, incr float64) (float64, error)

IncrSortedSetMemberScore redis: ZINCRBY

func (*RedisRepository) Keys

func (r *RedisRepository) Keys(pattern string) []string

func (*RedisRepository) RemoveSortedSetMember

func (r *RedisRepository) RemoveSortedSetMember(key, member string)

RemoveSortedSetMember redis: ZREM

func (*RedisRepository) RemoveSortedSetMemberScoreRange

func (r *RedisRepository) RemoveSortedSetMemberScoreRange(key string, min, max float64)

RemoveSortedSetScoreRange redis: ZREMRANGEBYSCORE

func (*RedisRepository) SetSortedSetMemberScore

func (r *RedisRepository) SetSortedSetMemberScore(key, member string, score float64) error

SetSortedSet

func (*RedisRepository) SetString

func (r *RedisRepository) SetString(key string, value string, expiration time.Duration) error

type Repository

type Repository interface {
	GetString(key string) (string, bool)
	SetString(key string, value string, expiration time.Duration) error
	DeleteString(key string)
	Keys(pattern string) []string

	GetSortedSetMemberCount(key string) int64
	GetSortedSetMemberScore(key, member string) float64
	SetSortedSetMemberScore(key, member string, score float64) error
	IncrSortedSetMemberScore(key, member string, incr float64) (float64, error)
	RemoveSortedSetMember(key, member string)
	RemoveSortedSetMemberScoreRange(key string, min, max float64)
	GetSortedSetMembersWithScore(key string) map[string]float64
}

储存room和server的信息

func NewRedisRepository

func NewRedisRepository(conf Config) Repository

type Runtime

type Runtime struct {
	Discovery   Discovery
	SelectorMap map[string]Selector
	Config      Config
}

func NewRuntime

func NewRuntime() *Runtime

type Selector

type Selector interface {
	ServiceName() string
	// SelectEndpoint 根据标识,获得对应endpoints
	SelectEndpoint(id string) (endpoint string, newSelect bool, err error)
	// 确认使用Endpoint,向Redis注册
	ConfirmEnpoint(endpoint, id string, checkIn bool) error
	ReleaseEndpoint(endpoint, id string)
	// 查询房间状态:endpoint: [id, ...]
	LoadStatus() map[string][]string
}

selector select upstream pod

func NewSelector

func NewSelector(serviceName string, rt *Runtime) Selector

Jump to

Keyboard shortcuts

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