Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrReqReachLimit = errors.New("request reached rate limit")

Functions

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

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

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

                          PreCall handles rpc call 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 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

                                      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

                                          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, 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 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
                                                                      	Weight       float64
                                                                      
                                                                      	// 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) PreCall

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

                                                                                          PreCall handles rpc call 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 ReqRateLimitingPlugin

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

                                                                                                  ReqRateLimitingPlugin can limit requests per unit time

                                                                                                  func NewReqRateLimitingPlugin

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

                                                                                                    NewReqRateLimitingPlugin creates a new RateLimitingPlugin

                                                                                                    func (*ReqRateLimitingPlugin) PreReadRequest

                                                                                                    func (plugin *ReqRateLimitingPlugin) PreReadRequest(ctx context.Context) error

                                                                                                      PreReadRequest can limit request processing.

                                                                                                      type TeeConnPlugin

                                                                                                      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

                                                                                                        func NewTeeConnPlugin(w io.Writer) *TeeConnPlugin

                                                                                                        func (*TeeConnPlugin) HandleConnAccept

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

                                                                                                          HandleConnAccept check ip.

                                                                                                          func (*TeeConnPlugin) Update

                                                                                                          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

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

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

                                                                                                                      PreCall handles rpc call 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)