Documentation
¶
Index ¶
- func BulkHead(workers int, maxWaitTime time.Duration) func(inner http.Handler) http.Handler
- func NewClient() *resty.Client
- type BizError
- type BizErrorOption
- type DdClient
- type DdClientOption
- type DefaultHttpSrv
- type MemberlistServiceProvider
- type NacosProviderOption
- type NacosRRServiceProvider
- func (b *NacosRRServiceProvider) AddNode(node *memberlist.Node)
- func (b *NacosRRServiceProvider) RemoveNode(node *memberlist.Node)
- func (n *NacosRRServiceProvider) SelectServer() string
- func (b *NacosRRServiceProvider) SetClusters(clusters []string)
- func (b *NacosRRServiceProvider) SetGroupName(groupName string)
- func (b *NacosRRServiceProvider) SetNamingClient(namingClient naming_client.INamingClient)
- func (b *NacosRRServiceProvider) UpdateWeight(node *memberlist.Node)
- type NacosWRRServiceProvider
- func (b *NacosWRRServiceProvider) AddNode(node *memberlist.Node)
- func (b *NacosWRRServiceProvider) RemoveNode(node *memberlist.Node)
- func (n *NacosWRRServiceProvider) SelectServer() string
- func (b *NacosWRRServiceProvider) SetClusters(clusters []string)
- func (b *NacosWRRServiceProvider) SetGroupName(groupName string)
- func (b *NacosWRRServiceProvider) SetNamingClient(namingClient naming_client.INamingClient)
- func (b *NacosWRRServiceProvider) UpdateWeight(node *memberlist.Node)
- type ServiceProvider
- type SmoothWeightedRoundRobinProvider
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BulkHead ¶
BulkHead add bulk head pattern middleware based on https://github.com/slok/goresilience workers is the number of workers in the execution pool. maxWaitTime is the max time an incoming request will wait to execute before being dropped its execution and return 429 response.
Types ¶
type BizError ¶
BizError is used for business error implemented error interface StatusCode will be set to http response status code ErrCode is used for business error code ErrMsg is custom error message
func NewBizError ¶
func NewBizError(err error, opts ...BizErrorOption) *BizError
NewBizError is factory function for creating an instance of BizError struct
type BizErrorOption ¶
type BizErrorOption func(bizError *BizError)
func WithErrCode ¶
func WithErrCode(errCode int) BizErrorOption
func WithStatusCode ¶
func WithStatusCode(statusCode int) BizErrorOption
type DdClient ¶
type DdClient interface { SetProvider(provider registry.IServiceProvider) SetClient(client *resty.Client) SetRootPath(rootPath string) }
DdClient defines service client interface
type DdClientOption ¶
type DdClientOption func(DdClient)
DdClientOption defines configure function type
func WithProvider ¶
func WithProvider(provider registry.IServiceProvider) DdClientOption
WithProvider sets service provider
func WithRootPath ¶ added in v1.0.1
func WithRootPath(rootPath string) DdClientOption
WithRootPath sets root path for sending http requests
type DefaultHttpSrv ¶
DefaultHttpSrv wraps gorilla mux router
func NewDefaultHttpSrv ¶
func NewDefaultHttpSrv() *DefaultHttpSrv
NewDefaultHttpSrv create a DefaultHttpSrv instance
func (*DefaultHttpSrv) AddMiddleware ¶
func (srv *DefaultHttpSrv) AddMiddleware(mwf ...func(http.Handler) http.Handler)
AddMiddleware adds middlewares to the end of chain
func (*DefaultHttpSrv) AddRoute ¶
func (srv *DefaultHttpSrv) AddRoute(route ...model.Route)
AddRoute adds routes to router
func (*DefaultHttpSrv) PreMiddleware ¶
func (srv *DefaultHttpSrv) PreMiddleware(mwf ...func(http.Handler) http.Handler)
PreMiddleware adds middlewares to the head of chain
type MemberlistServiceProvider ¶
type MemberlistServiceProvider struct {
// contains filtered or unexported fields
}
MemberlistServiceProvider defines an implementation for IServiceProvider
func NewMemberlistServiceProvider ¶
func NewMemberlistServiceProvider(name string) *MemberlistServiceProvider
NewMemberlistServiceProvider create an NewMemberlistServiceProvider instance
func (*MemberlistServiceProvider) AddNode ¶
func (m *MemberlistServiceProvider) AddNode(node *memberlist.Node)
AddNode add or update node providing the service
func (*MemberlistServiceProvider) RemoveNode ¶
func (m *MemberlistServiceProvider) RemoveNode(node *memberlist.Node)
func (*MemberlistServiceProvider) SelectServer ¶
func (m *MemberlistServiceProvider) SelectServer() string
SelectServer selects a node which is supplying service specified by name property from cluster
func (*MemberlistServiceProvider) UpdateWeight ¶
func (m *MemberlistServiceProvider) UpdateWeight(node *memberlist.Node)
type NacosProviderOption ¶ added in v1.0.1
type NacosProviderOption func(iNacosServiceProvider)
func WithNacosClusters ¶ added in v1.0.1
func WithNacosClusters(clusters []string) NacosProviderOption
func WithNacosGroupName ¶ added in v1.0.1
func WithNacosGroupName(groupName string) NacosProviderOption
func WithNacosNamingClient ¶ added in v1.0.1
func WithNacosNamingClient(namingClient naming_client.INamingClient) NacosProviderOption
type NacosRRServiceProvider ¶ added in v1.0.1
type NacosRRServiceProvider struct {
// contains filtered or unexported fields
}
NacosRRServiceProvider is a simple round-robin load balance implementation for IServiceProvider
func NewNacosRRServiceProvider ¶ added in v1.0.1
func NewNacosRRServiceProvider(serviceName string, opts ...NacosProviderOption) *NacosRRServiceProvider
NewNacosRRServiceProvider creates new ServiceProvider instance
func (*NacosRRServiceProvider) AddNode ¶ added in v1.0.1
func (b *NacosRRServiceProvider) AddNode(node *memberlist.Node)
func (*NacosRRServiceProvider) RemoveNode ¶ added in v1.0.1
func (b *NacosRRServiceProvider) RemoveNode(node *memberlist.Node)
func (*NacosRRServiceProvider) SelectServer ¶ added in v1.0.1
func (n *NacosRRServiceProvider) SelectServer() string
SelectServer return service address from environment variable
func (*NacosRRServiceProvider) SetClusters ¶ added in v1.0.1
func (b *NacosRRServiceProvider) SetClusters(clusters []string)
func (*NacosRRServiceProvider) SetGroupName ¶ added in v1.0.1
func (b *NacosRRServiceProvider) SetGroupName(groupName string)
func (*NacosRRServiceProvider) SetNamingClient ¶ added in v1.0.1
func (b *NacosRRServiceProvider) SetNamingClient(namingClient naming_client.INamingClient)
func (*NacosRRServiceProvider) UpdateWeight ¶ added in v1.0.1
func (b *NacosRRServiceProvider) UpdateWeight(node *memberlist.Node)
type NacosWRRServiceProvider ¶ added in v1.0.1
type NacosWRRServiceProvider struct {
// contains filtered or unexported fields
}
NacosWRRServiceProvider is a WRR load balance implementation for IServiceProvider
func NewNacosWRRServiceProvider ¶ added in v1.0.1
func NewNacosWRRServiceProvider(serviceName string, opts ...NacosProviderOption) *NacosWRRServiceProvider
NewNacosWRRServiceProvider creates new ServiceProvider instance
func (*NacosWRRServiceProvider) AddNode ¶ added in v1.0.1
func (b *NacosWRRServiceProvider) AddNode(node *memberlist.Node)
func (*NacosWRRServiceProvider) RemoveNode ¶ added in v1.0.1
func (b *NacosWRRServiceProvider) RemoveNode(node *memberlist.Node)
func (*NacosWRRServiceProvider) SelectServer ¶ added in v1.0.1
func (n *NacosWRRServiceProvider) SelectServer() string
SelectServer return service address from environment variable
func (*NacosWRRServiceProvider) SetClusters ¶ added in v1.0.1
func (b *NacosWRRServiceProvider) SetClusters(clusters []string)
func (*NacosWRRServiceProvider) SetGroupName ¶ added in v1.0.1
func (b *NacosWRRServiceProvider) SetGroupName(groupName string)
func (*NacosWRRServiceProvider) SetNamingClient ¶ added in v1.0.1
func (b *NacosWRRServiceProvider) SetNamingClient(namingClient naming_client.INamingClient)
func (*NacosWRRServiceProvider) UpdateWeight ¶ added in v1.0.1
func (b *NacosWRRServiceProvider) UpdateWeight(node *memberlist.Node)
type ServiceProvider ¶
type ServiceProvider struct {
// contains filtered or unexported fields
}
ServiceProvider defines an implementation for IServiceProvider
func NewServiceProvider ¶
func NewServiceProvider(env string) *ServiceProvider
NewServiceProvider creates new ServiceProvider instance
func (*ServiceProvider) AddNode ¶
func (s *ServiceProvider) AddNode(node *memberlist.Node)
func (*ServiceProvider) RemoveNode ¶
func (s *ServiceProvider) RemoveNode(node *memberlist.Node)
func (*ServiceProvider) SelectServer ¶
func (s *ServiceProvider) SelectServer() string
SelectServer return service address from environment variable
func (*ServiceProvider) UpdateWeight ¶
func (s *ServiceProvider) UpdateWeight(node *memberlist.Node)
type SmoothWeightedRoundRobinProvider ¶
type SmoothWeightedRoundRobinProvider struct {
// contains filtered or unexported fields
}
SmoothWeightedRoundRobinProvider is a smooth weighted round-robin algo implementation for IServiceProvider https://github.com/nginx/nginx/commit/52327e0627f49dbda1e8db695e63a4b0af4448b1
func NewSmoothWeightedRoundRobinProvider ¶
func NewSmoothWeightedRoundRobinProvider(name string) *SmoothWeightedRoundRobinProvider
NewSmoothWeightedRoundRobinProvider create an SmoothWeightedRoundRobinProvider instance
func (*SmoothWeightedRoundRobinProvider) AddNode ¶
func (m *SmoothWeightedRoundRobinProvider) AddNode(node *memberlist.Node)
AddNode add or update node providing the service
func (*SmoothWeightedRoundRobinProvider) RemoveNode ¶
func (m *SmoothWeightedRoundRobinProvider) RemoveNode(node *memberlist.Node)
func (*SmoothWeightedRoundRobinProvider) SelectServer ¶
func (m *SmoothWeightedRoundRobinProvider) SelectServer() string
SelectServer selects a node which is supplying service specified by name property from cluster
func (*SmoothWeightedRoundRobinProvider) UpdateWeight ¶
func (m *SmoothWeightedRoundRobinProvider) UpdateWeight(node *memberlist.Node)