跳转到内容

gRPC 服务端配置

zRPC 服务配置主要用于控制 rpc 的监听地址、服务注册发现、链路追踪、日志、中间件等。

zRPC 服务端配置结构体声明如下:

type RpcServerConf struct {
service.ServiceConf
ListenOn string
Etcd discov.EtcdConf `json:",optional,inherit"`
Auth bool `json:",optional"`
Redis redis.RedisKeyConf `json:",optional"`
StrictControl bool `json:",optional"`
// setting 0 means no timeout
Timeout int64 `json:",default=2000"`
CpuThreshold int64 `json:",default=900,range=[0:1000]"`
// grpc health check switch
Health bool `json:",default=true"`
Middlewares ServerMiddlewaresConf
}
名称类型含义默认值是否必选
ServiceConfServiceConf基础服务配置无是
ListenOnstring监听地址无是
EtcdEtcdConfetcd 配置项无否
Authbool是否开启 Auth无否
RedisRedisKeyConfrpc 认证,仅当 Auth 为 true 生效无否
StrictControlbool是否 Strict 模式,如果是则遇到错误是 Auth 失败,否则可以认为成功无否
Timeoutint64超时时间2000ms否
CpuThresholdint64降载阈值,默认 900(90%),可允许设置范围 0 到 1000900否
Healthbool是否开启健康检查true否
MiddlewaresServerMiddlewaresConf启用中间件无否

ServiceConfig 通用配置请参考 基础服务配置

EtcdConf 是当需要使用 etcd 来进行服务注册发现时需要配置的参数,如果不需要用 etcd 进行服务注册发现,可以不配置。

type EtcdConf struct {
Hosts []string
Key string
ID int64 `json:",optional"`
User string `json:",optional"`
Pass string `json:",optional"`
CertFile string `json:",optional"`
CertKeyFile string `json:",optional=CertFile"`
CACertFile string `json:",optional=CertFile"`
InsecureSkipVerify bool `json:",optional"`
}
名称类型含义默认值是否必选
Hostsstring 类型数组etcd 集群地址无是
Keystring定义服务的唯一表示,用于服务注册发现无是
Userstringetcd 用户无否
Passstringetcd 密码无否
CertFiletring证书文件无否
CertKeyFilestring私钥文件无否
CACertFileStringCA 证书文件无否

RedisKeyConf 是当你需要使用 redis 来管理 rpc 认证时需要配置的参数,如果不需要用 redis 进行 rpc 认证,可以不配置。

type (
// A RedisConf is a redis config.
RedisConf struct {
Host string
Type string `json:",default=node,options=node|cluster"`
Pass string `json:",optional"`
Tls bool `json:",optional"`
}
// A RedisKeyConf is a redis config with key.
RedisKeyConf struct {
RedisConf
Key string
}
)
名称类型含义默认值是否必选
Hoststringredis 地址,host+port无是
Typestringredis 类型node否
Passstringredis 密码无否
Tlsbool是否开启 tlsfalse否
Keystringredis key无是

ServerMiddlewaresConf 中间件配置:

ServerMiddlewaresConf struct {
Trace bool `json:",default=true"`
Recover bool `json:",default=true"`
Stat bool `json:",default=true"`
Prometheus bool `json:",default=true"`
Breaker bool `json:",default=true"`
}
名称类型含义默认值是否必选
Tracebool是否开启链路追踪中间件true否
Recoverbool是否开启异常捕获中间件true否
Statbool是否开启统计中间件true否
Prometheusbool是否开启 Prometheus 中间件true否
Breakerbool是否开启熔断中间件true否