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 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) }
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
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 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)