goo_grpc

package
v1.2.1 Latest Latest
Warning

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

Go to latest
Published: Nov 14, 2024 License: Apache-2.0 Imports: 25 Imported by: 0

README

服务端

  • Config 配置信息
    • ServiceName 服务名称
    • ServiceEndpoint 服务开放地址
    • Addr 服务监听地址,必须明确 ip:port
  • 信号监控
    • kill -USR1 开启 pprof 监控
    • kill -USR2 停止 pprof 监控,可以获取监控文件
    • kill -1 平滑重启
    • kill -9 退出应用程序,目前监控不到
    • kill -QUIT 退出应用程序
    • ctrl + C 退出应用程序
  • 拦截器
    • grpc.ChainUnaryInterceptor 服务端单向拦截器(也叫"一元拦截器")
      • serverUnaryInterceptorLog() 记录日志信息
      • unaryServerInterceptorAuth() 鉴权处理
        • AuthFunc() 自定义鉴权方法
    • grpc.ChainStreamInterceptor 服务端流式拦截器
      • 同上
  • Register2ETCD() 服务注册到etcd
    • key 格式: /
    • value 格式: json格式,示例 {"Op":0,"Addr":"127.0.0.1:19001","Metadata":null}

客户端

  • Dial() 链接 grpc
  • DialWithEtcd() 通过 etcd 链接 grpc
    • target 格式 etcd:///<service>
  • 返回拦截

grpc 版本要求

最高使用 v1.52.3, 否则导致 Target.Endpoint 无效,因为高版本把属性定义为了方法

Documentation

Index

Constants

View Source
const (
	MaxRecvMsgSize = 20 * 1024 * 1024
	MaxSendMsgSize = 20 * 1024 * 1024
)

Variables

This section is empty.

Functions

func Dial

func Dial(addr string, opts ...grpc.DialOption) (*grpc.ClientConn, error)

func DialContext added in v1.1.72

func DialContext(ctx context.Context, addr string, opts ...grpc.DialOption) (*grpc.ClientConn, error)

func DialContextWithEtcd added in v1.1.72

func DialContextWithEtcd(ctx context.Context, serviceName string, cli *goo_etcd.Client, opts ...grpc.DialOption) (*grpc.ClientConn, error)

func DialWithEtcd added in v1.0.2

func DialWithEtcd(serviceName string, cli *goo_etcd.Client, opts ...grpc.DialOption) (*grpc.ClientConn, error)

Types

type AuthFunc added in v1.1.1

type AuthFunc func(md metadata.MD, ctx context.Context, fullMethod string) (context.Context, error)

type Config added in v1.0.2

type Config struct {
	// 服务名称
	ServiceName string `json:"service_name" yaml:"service_name"`

	// 对外开放地址
	ServiceEndpoint string `json:"service_endpoint" yaml:"service_endpoint"`

	// 监听地址
	Addr string `json:"addr" yaml:"addr"`

	// 最大空闲链接时间,即空闲链接在配置的时间内,未收到新的心跳和请求,则会将链接关闭,比向客户端发送一个GoAway;
	// 空闲链接的定义:最近未完成的RPC数变为0 的时间,或链接建立以来;
	// 默认是无穷
	MaxConnectionIdle time.Duration `json:"max_connection_idle" yaml:"max_connection_idle"`
	// 最长链接时间,当stream超过这个时间会发一个GoAway;为了防止短时间内发送大量的GoAway 会根据 MaxConnectionAge 时间间隔随机+/- 10%
	// 默认是无穷
	MaxConnectionAge time.Duration `json:"max_connection_age" yaml:"max_connection_age"`
	// 是对MaxConnectionAge 的一个补充,超过了最长链接时间后延长的时间
	// 默认是无穷
	MaxConnectionAgeGrace time.Duration `json:"max_connection_age_grace" yaml:"max_connection_age_grace"`

	// 服务端在设定的时间范围内未收到客户端任何活动,例如stream在时间内未收到数据信息,则会发送ping 信息检查链接是否可用;
	// 及时发现及时重试;
	// 当设置值小于1秒时,会被强制设置成1秒
	KeepaliveTime time.Duration `json:"keepalive_time" yaml:"keepalive_time"`
	// 服务端发送ping请求后,等待配置的时间,若客户端在这个时间内未有任何响应则将该链接关闭回收
	// 默认是20秒
	KeepaliveTimeout time.Duration `json:"keepalive_timeout" yaml:"keepalive_timeout"`

	// MinTime 是客户端在发送 keepalive ping 之前应等待的最短时间;
	// 即两个keepalive ping 之间的最小间隔,若小于这个间隔,则会关闭与客户端的链接
	// 默认是5分钟
	EnforcementPolicyMinTime time.Duration `json:"enforcement_policy_min_time" yaml:"enforcement_policy_min_time"`
}

type PProf added in v1.1.1

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

type Server

type Server struct {
	*gracenet.Net
	*grpc.Server
	// contains filtered or unexported fields
}

func New

func New(conf Config, opt ...ServerOption) *Server

func (*Server) Register2Etcd added in v1.0.2

func (s *Server) Register2Etcd(cli *goo_etcd.Client) *Server

func (*Server) Serve

func (s *Server) Serve() (err error)

type ServerOption added in v1.1.1

type ServerOption interface {
	// contains filtered or unexported methods
}

定义配置项抽象

func AuthFuncOption added in v1.1.1

func AuthFuncOption(authFunc AuthFunc) ServerOption

配置项 - 认证方法

func ServerOptions added in v1.1.1

func ServerOptions(opt ...grpc.ServerOption) ServerOption

配置项 - grpc server options

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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