ddhttp

package
v1.0.0-beta4 Latest Latest
Warning

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

Go to latest
Published: Mar 7, 2022 License: MIT Imports: 46 Imported by: 3

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BulkHead

func BulkHead(workers int, maxWaitTime time.Duration) func(inner http.Handler) http.Handler

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.

func NewClient

func NewClient() *resty.Client

NewClient creates new resty Client instance

Types

type BizError

type BizError struct {
	StatusCode int
	ErrCode    int
	ErrMsg     string
}

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

func (BizError) Error

func (b BizError) Error() string

Error is used for implementing error interface

func (BizError) String

func (b BizError) String() string

String function is used for printing string representation of a BizError instance

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 WithClient

func WithClient(client *resty.Client) DdClientOption

WithClient sets http client

func WithProvider

func WithProvider(provider registry.IServiceProvider) DdClientOption

WithProvider sets service provider

type DefaultHttpSrv

type DefaultHttpSrv struct {
	*mux.Router
	// contains filtered or unexported fields
}

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

func (*DefaultHttpSrv) Run

func (srv *DefaultHttpSrv) Run()

Run runs http server

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)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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