serverplugin

package
v1.8.29 Latest Latest
Warning

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

Go to latest
Published: Apr 10, 2024 License: Apache-2.0 Imports: 24 Imported by: 204

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AliasPlugin

type AliasPlugin struct {
	Aliases          map[string]*aliasPair
	ReseverseAliases map[string]*aliasPair
}

AliasPlugin can be used to set aliases for services

func NewAliasPlugin

func NewAliasPlugin() *AliasPlugin

NewAliasPlugin creates a new NewAliasPlugin

func (*AliasPlugin) Alias

func (p *AliasPlugin) Alias(aliasServicePath, aliasServiceMethod string, servicePath, serviceMethod string)

Alias sets a alias for the serviceMethod. For example Alias("anewpath&method", "Arith.mul")

func (*AliasPlugin) PostReadRequest

func (p *AliasPlugin) PostReadRequest(ctx context.Context, r *protocol.Message, e error) error

PostReadRequest converts the alias of this service.

func (*AliasPlugin) PreWriteResponse

func (p *AliasPlugin) PreWriteResponse(ctx context.Context, r *protocol.Message, res *protocol.Message) error

PreWriteResponse restore servicePath and serviceMethod.

type BlacklistPlugin added in v1.6.2

type BlacklistPlugin struct {
	Blacklist     map[string]bool
	BlacklistMask []*net.IPNet // net.ParseCIDR("172.17.0.0/16") to get *net.IPNet
}

BlacklistPlugin is a plugin that control only ip addresses in blacklist can **NOT** access services.

func (*BlacklistPlugin) HandleConnAccept added in v1.6.2

func (plugin *BlacklistPlugin) HandleConnAccept(conn net.Conn) (net.Conn, bool)

HandleConnAccept check ip.

type MDNSRegisterPlugin

type MDNSRegisterPlugin struct {
	// service address, for example, tcp@127.0.0.1:8972, quic@127.0.0.1:1234
	ServiceAddress string

	Metrics metrics.Registry
	// Registered services
	Services       []*serviceMeta
	UpdateInterval time.Duration
	// contains filtered or unexported fields
}

MDNSRegisterPlugin implements mdns/dns-sd registry.

func NewMDNSRegisterPlugin

func NewMDNSRegisterPlugin(serviceAddress string, port int, m metrics.Registry, updateInterval time.Duration, domain string) *MDNSRegisterPlugin

NewMDNSRegisterPlugin return a new MDNSRegisterPlugin. If domain is empty, use "local." in default.

func (*MDNSRegisterPlugin) HandleConnAccept

func (p *MDNSRegisterPlugin) HandleConnAccept(conn net.Conn) (net.Conn, bool)

HandleConnAccept handles connections from clients

func (*MDNSRegisterPlugin) PreCall added in v1.6.2

func (p *MDNSRegisterPlugin) PreCall(_ context.Context, _, _ string, args interface{}) (interface{}, error)

PreCall handles rpc call from clients

func (*MDNSRegisterPlugin) Register

func (p *MDNSRegisterPlugin) Register(name string, rcvr interface{}, metadata string) (err error)

Register handles registering event. this service is registered at BASE/serviceName/thisIpAddress node

func (*MDNSRegisterPlugin) RegisterFunction added in v1.6.2

func (p *MDNSRegisterPlugin) RegisterFunction(serviceName, fname string, fn interface{}, metadata string) error

func (*MDNSRegisterPlugin) Start

func (p *MDNSRegisterPlugin) Start() error

Start starts the mdns loop.

func (*MDNSRegisterPlugin) Stop added in v1.4.1

func (p *MDNSRegisterPlugin) Stop() error

Stop unregister all services.

func (*MDNSRegisterPlugin) Unregister added in v1.4.1

func (p *MDNSRegisterPlugin) Unregister(name string) (err error)

type MetricsPlugin

type MetricsPlugin struct {
	Registry metrics.Registry
	Prefix   string
}

MetricsPlugin collects metrics of a rpc server. You can report metrics to log, syslog, Graphite, InfluxDB or others to display them in Dashboard such as grafana, Graphite.

func NewMetricsPlugin

func NewMetricsPlugin(registry metrics.Registry) *MetricsPlugin

NewMetricsPlugin creates a new MetricsPlugin

func (*MetricsPlugin) Exp

func (p *MetricsPlugin) Exp()

Exp uses the same mechanism as the official expvar but exposed under /debug/metrics, which shows a json representation of all your usual expvars as well as all your go-metrics.

func (*MetricsPlugin) Graphite

func (p *MetricsPlugin) Graphite(freq time.Duration, prefix string, addr *net.TCPAddr)

Graphite reports metrics into graphite.

addr, _ := net.ResolveTCPAddr("tcp", "127.0.0.1:2003")
p.Graphite(10e9, "metrics", addr)

func (*MetricsPlugin) HandleConnAccept

func (p *MetricsPlugin) HandleConnAccept(conn net.Conn) (net.Conn, bool)

HandleConnAccept handles connections from clients

func (*MetricsPlugin) Log

func (p *MetricsPlugin) Log(freq time.Duration, l metrics.Logger)

Log reports metrics into logs.

p.Log( 5 * time.Second, log.New(os.Stderr, "metrics: ", log.Lmicroseconds))

func (*MetricsPlugin) PostReadRequest

func (p *MetricsPlugin) PostReadRequest(ctx context.Context, r *protocol.Message, e error) error

PostReadRequest counts read

func (*MetricsPlugin) PostWriteResponse

func (p *MetricsPlugin) PostWriteResponse(ctx context.Context, req *protocol.Message, res *protocol.Message, e error) error

PostWriteResponse count write

func (*MetricsPlugin) PreReadRequest

func (p *MetricsPlugin) PreReadRequest(ctx context.Context) error

PreReadRequest marks start time of calling service

func (*MetricsPlugin) Register

func (p *MetricsPlugin) Register(name string, rcvr interface{}, metadata string) error

Register handles registering event.

type RateLimitingPlugin

type RateLimitingPlugin struct {
	FillInterval time.Duration
	Capacity     int64
	// contains filtered or unexported fields
}

RateLimitingPlugin can limit connecting per unit time

func NewRateLimitingPlugin

func NewRateLimitingPlugin(fillInterval time.Duration, capacity int64) *RateLimitingPlugin

NewRateLimitingPlugin creates a new RateLimitingPlugin

func (*RateLimitingPlugin) HandleConnAccept

func (plugin *RateLimitingPlugin) HandleConnAccept(conn net.Conn) (net.Conn, bool)

HandleConnAccept can limit connecting rate

type RedisRateLimitingPlugin added in v1.7.2

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

RedisRateLimitingPlugin can limit requests per unit time

func NewRedisRateLimitingPlugin added in v1.7.2

func NewRedisRateLimitingPlugin(addrs []string, rate int, burst int, period time.Duration) *RedisRateLimitingPlugin

NewRedisRateLimitingPlugin creates a new RateLimitingPlugin

func (*RedisRateLimitingPlugin) PostReadRequest added in v1.7.2

func (plugin *RedisRateLimitingPlugin) PostReadRequest(ctx context.Context, r *protocol.Message, e error) error

PostReadRequest can limit request processing.

type RedisRegisterPlugin added in v1.6.2

type RedisRegisterPlugin struct {
	// service address, for example, tcp@127.0.0.1:8972, quic@127.0.0.1:1234
	ServiceAddress string
	// redis addresses
	RedisServers []string
	// base path for rpcx server, for example com/example/rpcx
	BasePath string
	Metrics  metrics.Registry
	// Registered services
	Services []string

	UpdateInterval time.Duration

	Options *store.Config
	// contains filtered or unexported fields
}

RedisRegisterPlugin implements redis registry.

func (*RedisRegisterPlugin) HandleConnAccept added in v1.6.2

func (p *RedisRegisterPlugin) HandleConnAccept(conn net.Conn) (net.Conn, bool)

HandleConnAccept handles connections from clients

func (*RedisRegisterPlugin) PreCall added in v1.6.2

func (p *RedisRegisterPlugin) PreCall(_ context.Context, _, _ string, args interface{}) (interface{}, error)

PreCall handles rpc call from clients

func (*RedisRegisterPlugin) Register added in v1.6.2

func (p *RedisRegisterPlugin) Register(name string, rcvr interface{}, metadata string) (err error)

Register handles registering event. this service is registered at BASE/serviceName/thisIpAddress node

func (*RedisRegisterPlugin) Start added in v1.6.2

func (p *RedisRegisterPlugin) Start() error

Start starts to connect redis cluster

func (*RedisRegisterPlugin) Stop added in v1.6.2

func (p *RedisRegisterPlugin) Stop() error

Stop unregister all services.

func (*RedisRegisterPlugin) Unregister added in v1.6.2

func (p *RedisRegisterPlugin) Unregister(name string) (err error)

type ReqRateLimitingPlugin added in v1.6.2

type ReqRateLimitingPlugin struct {
	FillInterval time.Duration
	Capacity     int64
	// contains filtered or unexported fields
}

ReqRateLimitingPlugin can limit requests per unit time

func NewReqRateLimitingPlugin added in v1.6.2

func NewReqRateLimitingPlugin(fillInterval time.Duration, capacity int64, block bool) *ReqRateLimitingPlugin

NewReqRateLimitingPlugin creates a new RateLimitingPlugin

func (*ReqRateLimitingPlugin) PostReadRequest added in v1.7.2

func (plugin *ReqRateLimitingPlugin) PostReadRequest(ctx context.Context, r *protocol.Message, e error) error

PostReadRequest can limit request processing.

type TeeConnPlugin added in v1.6.2

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

TeeConnPlugin is a plugin that copy requests from clients and send to a io.Writer.

func NewTeeConnPlugin added in v1.6.2

func NewTeeConnPlugin(w io.Writer) *TeeConnPlugin

func (*TeeConnPlugin) HandleConnAccept added in v1.6.2

func (plugin *TeeConnPlugin) HandleConnAccept(conn net.Conn) (net.Conn, bool)

HandleConnAccept check ip.

func (*TeeConnPlugin) Update added in v1.6.2

func (plugin *TeeConnPlugin) Update(w io.Writer)

Update can start a stream copy by setting a non-nil w. If you set a nil w, it doesn't copy stream.

type WhitelistPlugin added in v1.6.2

type WhitelistPlugin struct {
	Whitelist     map[string]bool
	WhitelistMask []*net.IPNet // net.ParseCIDR("172.17.0.0/16") to get *net.IPNet
}

WhitelistPlugin is a plugin that control only ip addresses in whitelist can access services.

func (*WhitelistPlugin) HandleConnAccept added in v1.6.2

func (plugin *WhitelistPlugin) HandleConnAccept(conn net.Conn) (net.Conn, bool)

HandleConnAccept check ip.

Jump to

Keyboard shortcuts

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