serverplugin

package
v0.0.0-...-af4edf4 Latest Latest
Warning

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

Go to latest
Published: Nov 3, 2022 License: Apache-2.0 Imports: 44 Imported by: 23

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	SendFileServiceName = "_filetransfer"
)

Functions

func GenBeCallSpanRoot

func GenBeCallSpanRoot(ctx context.Context, svcName string,
	operationName string, jaegerAddr string) (context.Context,
	io.Closer, opentracing.Span)

func GenSpanWhCtx

func GenSpanWhCtx(ctx context.Context, operationName string) (opentracing.Span, context.Context, error)

func GenTracSpan

func GenTracSpan(ctx context.Context, svcOrTag string, subOperate string,
	elapse time.Duration, jaegerAddr string)

func InfluxDB

func InfluxDB(r metrics.Registry, d time.Duration, url, database, username, password string)

InfluxDB starts a InfluxDB reporter which will post the metrics from the given registry at each d interval.

func InfluxDBWithTags

func InfluxDBWithTags(r metrics.Registry, d time.Duration, url, database, username, password string, tags map[string]string)

InfluxDBWithTags starts a InfluxDB reporter which will post the metrics from the given registry at each d interval with the specified tags

func RegisterFileTransfer

func RegisterFileTransfer(s *server.Server, fileTransfer *FileTransfer)

RegisterFileTransfer register filetransfer service into the server.

func TeSpan

func TeSpan(ctx context.Context, atAddr string, svc string, opera string) (opentracing.Span, context.Context, error)

func TraceInit

func TraceInit(svc string, atAddr string) (opentracing.Tracer, io.Closer)

func WrapSpan

func WrapSpan(ctx context.Context, svcOrtag string, operate string, jaeAddr string, timeSpanStart time.Time)

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

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

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

HandleConnAccept check ip.

type ConsulRegisterPlugin

type ConsulRegisterPlugin struct {
	// service address, for example, tcp@127.0.0.1:8972, quic@127.0.0.1:1234
	ServiceAddress string
	// consul addresses
	ConsulServers []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
}

ConsulRegisterPlugin implements consul registry.

func (*ConsulRegisterPlugin) HandleConnAccept

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

HandleConnAccept handles connections from clients

func (*ConsulRegisterPlugin) Register

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

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

func (*ConsulRegisterPlugin) RegisterFunction

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

func (*ConsulRegisterPlugin) Start

func (p *ConsulRegisterPlugin) Start() error

Start starts to connect consul cluster

func (*ConsulRegisterPlugin) Stop

func (p *ConsulRegisterPlugin) Stop() error

Stop unregister all services.

func (*ConsulRegisterPlugin) Unregister

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

type DownloadFileArgs

type DownloadFileArgs struct {
	FileName string `json:"file_name,omitempty"`
}

DownloadFileArgs args from clients.

type DownloadFileHandler

type DownloadFileHandler func(conn net.Conn, args *DownloadFileArgs)

DownloadFileHandler handles downloading file. Must close the connection after it finished.

type EtcdRegisterPlugin

type EtcdRegisterPlugin struct {
	// service address, for example, tcp@127.0.0.1:8972, quic@127.0.0.1:1234
	ServiceAddress string
	// etcd addresses
	EtcdServers []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
}

EtcdRegisterPlugin implements etcd registry.

func (*EtcdRegisterPlugin) HandleConnAccept

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

HandleConnAccept handles connections from clients

func (*EtcdRegisterPlugin) Register

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

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

func (*EtcdRegisterPlugin) RegisterFunction

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

func (*EtcdRegisterPlugin) Start

func (p *EtcdRegisterPlugin) Start() error

Start starts to connect etcd cluster

func (*EtcdRegisterPlugin) Stop

func (p *EtcdRegisterPlugin) Stop() error

Stop unregister all services.

func (*EtcdRegisterPlugin) Unregister

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

type EtcdV3RegisterPlugin

type EtcdV3RegisterPlugin struct {
	// service address, for example, tcp@127.0.0.1:8972, quic@127.0.0.1:1234
	ServiceAddress string
	// etcd addresses
	EtcdServers []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
}

EtcdV3RegisterPlugin implements etcd registry.

func (*EtcdV3RegisterPlugin) HandleConnAccept

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

HandleConnAccept handles connections from clients

func (*EtcdV3RegisterPlugin) Register

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

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

func (*EtcdV3RegisterPlugin) RegisterFunction

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

func (*EtcdV3RegisterPlugin) Start

func (p *EtcdV3RegisterPlugin) Start() error

Start starts to connect etcd cluster

func (*EtcdV3RegisterPlugin) Stop

func (p *EtcdV3RegisterPlugin) Stop() error

Stop unregister all services.

func (*EtcdV3RegisterPlugin) Unregister

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

type FileTransfer

type FileTransfer struct {
	Addr string
	// contains filtered or unexported fields
}

FileTransfer support transfer files from clients. It registers a file transfer service and listens a on the given port. Clients will invokes this service to get the token and send the token and the file to this port.

func NewFileTransfer

func NewFileTransfer(addr string, handler FileTransferHandler, downloadFileHandler DownloadFileHandler, waitNum int) *FileTransfer

NewFileTransfer creates a FileTransfer with given parameters.

func (*FileTransfer) Start

func (s *FileTransfer) Start() error

func (*FileTransfer) Stop

func (s *FileTransfer) Stop() error

type FileTransferArgs

type FileTransferArgs struct {
	FileName string            `json:"file_name,omitempty"`
	FileSize int64             `json:"file_size,omitempty"`
	Meta     map[string]string `json:"meta,omitempty"`
}

FileTransferArgs args from clients.

type FileTransferHandler

type FileTransferHandler func(conn net.Conn, args *FileTransferArgs)

FileTransferHandler handles uploading file. Must close the connection after it finished.

type FileTransferReply

type FileTransferReply struct {
	Token []byte `json:"token,omitempty"`
	Addr  string `json:"addr,omitempty"`
}

FileTransferReply response to token and addr to clients.

type FileTransferService

type FileTransferService struct {
	FileTransfer *FileTransfer
}

func (*FileTransferService) DownloadFile

func (s *FileTransferService) DownloadFile(ctx context.Context, args *DownloadFileArgs, reply *FileTransferReply) error

func (*FileTransferService) TransferFile

func (s *FileTransferService) TransferFile(ctx context.Context, args *FileTransferArgs, reply *FileTransferReply) error

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

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

func (*MDNSRegisterPlugin) Start

func (p *MDNSRegisterPlugin) Start() error

Start starts to connect etcd cluster

func (*MDNSRegisterPlugin) Stop

func (p *MDNSRegisterPlugin) Stop() error

Stop unregister all services.

func (*MDNSRegisterPlugin) Unregister

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 MetricsPlugirn

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

func (p *MetricsPlugin) InfluxDB(freq time.Duration, url, database, username, password string)

InfluxDB reports metrics into influxdb.

p.InfluxDB(10e9, "http://127.0.0.1:8086","metrics", "test","test"})

func (*MetricsPlugin) InfluxDBWithTags

func (p *MetricsPlugin) InfluxDBWithTags(freq time.Duration, url, database, username, password string, tags map[string]string)

InfluxDBWithTags reports metrics into influxdb with tags. you can set node info into tags.

p.InfluxDBWithTags(10e9, "http://127.0.0.1:8086","metrics", "test","test", map[string]string{"host":"127.0.0.1"})

func (*MetricsPlugin) Log

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

Log reports metrics into logs.

p.Log( 5 * time.Second, logs.New(os.Stderr, "metrics: ", logs.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 NacosRegisterPlugin

type NacosRegisterPlugin struct {
	// service address, for example, tcp@127.0.0.1:8972, quic@127.0.0.1:1234
	ServiceAddress string
	// nacos client config
	ClientConfig constant.ClientConfig
	// nacos server config
	ServerConfig []constant.ServerConfig
	Cluster      string
	Tenant       string

	// Registered services
	Services []string
	// contains filtered or unexported fields
}

NacosRegisterPlugin implements consul registry.

func (*NacosRegisterPlugin) Register

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

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

func (*NacosRegisterPlugin) RegisterFunction

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

func (*NacosRegisterPlugin) Start

func (p *NacosRegisterPlugin) Start() error

Start starts to connect consul cluster

func (*NacosRegisterPlugin) Stop

func (p *NacosRegisterPlugin) Stop() error

Stop unregister all services.

func (*NacosRegisterPlugin) Unregister

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

type OpenCensusPlugin

type OpenCensusPlugin struct{}

func (OpenCensusPlugin) PostConnAccept

func (p OpenCensusPlugin) PostConnAccept(conn net.Conn) (net.Conn, bool)

func (OpenCensusPlugin) PostWriteResponse

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

func (OpenCensusPlugin) PreHandleRequest

func (p OpenCensusPlugin) PreHandleRequest(ctx context.Context, r *protocol.Message) error

func (OpenCensusPlugin) Register

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

func (OpenCensusPlugin) RegisterFunction

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

type OpenTracingPlugin

type OpenTracingPlugin struct{}

func (OpenTracingPlugin) PostConnAccept

func (p OpenTracingPlugin) PostConnAccept(conn net.Conn) (net.Conn, bool)

func (OpenTracingPlugin) PostWriteResponse

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

func (OpenTracingPlugin) PreHandleRequest

func (p OpenTracingPlugin) PreHandleRequest(ctx context.Context, r *protocol.Message) error

func (OpenTracingPlugin) Register

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

func (OpenTracingPlugin) RegisterFunction

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

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 RedisRegisterPlugin

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

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

HandleConnAccept handles connections from clients

func (*RedisRegisterPlugin) Register

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

func (p *RedisRegisterPlugin) Start() error

Start starts to connect redis cluster

func (*RedisRegisterPlugin) Stop

func (p *RedisRegisterPlugin) Stop() error

Stop unregister all services.

func (*RedisRegisterPlugin) Unregister

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

type WhitelistPlugin

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

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

HandleConnAccept check ip.

type ZooKeeperRegisterPlugin

type ZooKeeperRegisterPlugin struct {
	// service address, for example, tcp@127.0.0.1:8972, quic@127.0.0.1:1234
	ServiceAddress string
	// zookeeper addresses
	ZooKeeperServers []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
}

ZooKeeperRegisterPlugin implements zookeeper registry.

func (*ZooKeeperRegisterPlugin) HandleConnAccept

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

HandleConnAccept handles connections from clients

func (*ZooKeeperRegisterPlugin) Register

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

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

func (*ZooKeeperRegisterPlugin) RegisterFunction

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

func (*ZooKeeperRegisterPlugin) Start

func (p *ZooKeeperRegisterPlugin) Start() error

Start starts to connect zookeeper cluster

func (*ZooKeeperRegisterPlugin) Stop

func (p *ZooKeeperRegisterPlugin) Stop() error

Stop unregister all services.

func (*ZooKeeperRegisterPlugin) Unregister

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

Jump to

Keyboard shortcuts

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