Documentation
¶
Index ¶
- Variables
- type BackendInst
- type BackendSelector
- type ConnEventReceiver
- type RedirectableConn
- type Router
- type ScoreBasedRouter
- func (router *ScoreBasedRouter) Close()
- func (router *ScoreBasedRouter) ConnCount() int
- func (router *ScoreBasedRouter) GetBackendSelector() BackendSelector
- func (r *ScoreBasedRouter) Init(ctx context.Context, ob observer.BackendObserver, ...)
- func (router *ScoreBasedRouter) OnConnClosed(addr string, conn RedirectableConn) error
- func (router *ScoreBasedRouter) OnRedirectFail(from, to string, conn RedirectableConn) error
- func (router *ScoreBasedRouter) OnRedirectSucceed(from, to string, conn RedirectableConn) error
- func (router *ScoreBasedRouter) RedirectConnections() error
- func (router *ScoreBasedRouter) RefreshBackend()
- func (router *ScoreBasedRouter) ServerVersion() string
- type StaticBackend
- type StaticRouter
- func (r *StaticRouter) Close()
- func (r *StaticRouter) ConnCount() int
- func (r *StaticRouter) GetBackendSelector() BackendSelector
- func (r *StaticRouter) OnConnClosed(addr string, conn RedirectableConn) error
- func (r *StaticRouter) OnRedirectFail(from, to string, conn RedirectableConn) error
- func (r *StaticRouter) OnRedirectSucceed(from, to string, conn RedirectableConn) error
- func (r *StaticRouter) RedirectConnections() error
- func (r *StaticRouter) RefreshBackend()
- func (r *StaticRouter) ServerVersion() string
Constants ¶
This section is empty.
Variables ¶
var (
ErrNoBackend = errors.New("no available backend")
)
Functions ¶
This section is empty.
Types ¶
type BackendInst ¶
BackendInst defines a backend that a connection is redirecting to.
type BackendSelector ¶
type BackendSelector struct {
// contains filtered or unexported fields
}
func (*BackendSelector) Finish ¶
func (bs *BackendSelector) Finish(conn RedirectableConn, succeed bool)
func (*BackendSelector) Next ¶
func (bs *BackendSelector) Next() (BackendInst, error)
type ConnEventReceiver ¶
type ConnEventReceiver interface {
OnRedirectSucceed(from, to string, conn RedirectableConn) error
OnRedirectFail(from, to string, conn RedirectableConn) error
OnConnClosed(addr string, conn RedirectableConn) error
}
ConnEventReceiver receives connection events.
type RedirectableConn ¶
type RedirectableConn interface {
SetEventReceiver(receiver ConnEventReceiver)
SetValue(key, val any)
Value(key any) any
// Redirect returns false if the current conn is not redirectable.
Redirect(backend BackendInst) bool
ConnectionID() uint64
}
RedirectableConn indicates a redirect-able connection.
type Router ¶
type Router interface {
// ConnEventReceiver handles connection events to balance connections if possible.
ConnEventReceiver
GetBackendSelector() BackendSelector
RefreshBackend()
RedirectConnections() error
ConnCount() int
// ServerVersion returns the TiDB version.
ServerVersion() string
Close()
}
Router routes client connections to backends.
type ScoreBasedRouter ¶
ScoreBasedRouter is an implementation of Router interface. It routes a connection based on score.
func NewScoreBasedRouter ¶
func NewScoreBasedRouter(logger *zap.Logger) *ScoreBasedRouter
NewScoreBasedRouter creates a ScoreBasedRouter.
func (*ScoreBasedRouter) Close ¶
func (router *ScoreBasedRouter) Close()
Close implements Router.Close interface.
func (*ScoreBasedRouter) ConnCount ¶
func (router *ScoreBasedRouter) ConnCount() int
func (*ScoreBasedRouter) GetBackendSelector ¶
func (router *ScoreBasedRouter) GetBackendSelector() BackendSelector
GetBackendSelector implements Router.GetBackendSelector interface.
func (*ScoreBasedRouter) Init ¶
func (r *ScoreBasedRouter) Init(ctx context.Context, ob observer.BackendObserver, balancePolicy policy.BalancePolicy, cfg *config.Config, cfgCh <-chan *config.Config)
func (*ScoreBasedRouter) OnConnClosed ¶
func (router *ScoreBasedRouter) OnConnClosed(addr string, conn RedirectableConn) error
OnConnClosed implements ConnEventReceiver.OnConnClosed interface.
func (*ScoreBasedRouter) OnRedirectFail ¶
func (router *ScoreBasedRouter) OnRedirectFail(from, to string, conn RedirectableConn) error
OnRedirectFail implements ConnEventReceiver.OnRedirectFail interface.
func (*ScoreBasedRouter) OnRedirectSucceed ¶
func (router *ScoreBasedRouter) OnRedirectSucceed(from, to string, conn RedirectableConn) error
OnRedirectSucceed implements ConnEventReceiver.OnRedirectSucceed interface.
func (*ScoreBasedRouter) RedirectConnections ¶
func (router *ScoreBasedRouter) RedirectConnections() error
RedirectConnections implements Router.RedirectConnections interface. It redirects all connections compulsively. It's only used for testing.
func (*ScoreBasedRouter) RefreshBackend ¶
func (router *ScoreBasedRouter) RefreshBackend()
RefreshBackend implements Router.GetBackendSelector interface.
func (*ScoreBasedRouter) ServerVersion ¶
func (router *ScoreBasedRouter) ServerVersion() string
type StaticBackend ¶
type StaticBackend struct {
// contains filtered or unexported fields
}
func NewStaticBackend ¶
func NewStaticBackend(addr string) *StaticBackend
func (*StaticBackend) Addr ¶
func (b *StaticBackend) Addr() string
func (*StaticBackend) Healthy ¶
func (b *StaticBackend) Healthy() bool
func (*StaticBackend) Local ¶
func (b *StaticBackend) Local() bool
func (*StaticBackend) SetHealthy ¶
func (b *StaticBackend) SetHealthy(healthy bool)
type StaticRouter ¶
type StaticRouter struct {
// contains filtered or unexported fields
}
func NewStaticRouter ¶
func NewStaticRouter(addrs []string) *StaticRouter
func (*StaticRouter) Close ¶
func (r *StaticRouter) Close()
func (*StaticRouter) ConnCount ¶
func (r *StaticRouter) ConnCount() int
func (*StaticRouter) GetBackendSelector ¶
func (r *StaticRouter) GetBackendSelector() BackendSelector
func (*StaticRouter) OnConnClosed ¶
func (r *StaticRouter) OnConnClosed(addr string, conn RedirectableConn) error
func (*StaticRouter) OnRedirectFail ¶
func (r *StaticRouter) OnRedirectFail(from, to string, conn RedirectableConn) error
func (*StaticRouter) OnRedirectSucceed ¶
func (r *StaticRouter) OnRedirectSucceed(from, to string, conn RedirectableConn) error
func (*StaticRouter) RedirectConnections ¶
func (r *StaticRouter) RedirectConnections() error
func (*StaticRouter) RefreshBackend ¶
func (r *StaticRouter) RefreshBackend()
func (*StaticRouter) ServerVersion ¶
func (r *StaticRouter) ServerVersion() string