服务配置

概述

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

配置

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

  1. type RpcServerConf struct {
  2. service.ServiceConf
  3. ListenOn string
  4. Etcd discov.EtcdConf `json:",optional,inherit"`
  5. Auth bool `json:",optional"`
  6. Redis redis.RedisKeyConf `json:",optional"`
  7. StrictControl bool `json:",optional"`
  8. // setting 0 means no timeout
  9. Timeout int64 `json:",default=2000"`
  10. CpuThreshold int64 `json:",default=900,range=[0:1000]"`
  11. // grpc health check switch
  12. Health bool `json:",default=true"`
  13. Middlewares ServerMiddlewaresConf
  14. }

RpcServerConf

名称类型含义默认值是否必选
ServiceConfServiceConf基础服务配置
ListenOnstring监听地址
EtcdEtcdConfetcd 配置项
Authbool是否开启 Auth
RedisRedisKeyConfrpc 认证,仅当 Auth 为 true 生效
StrictControlbool是否 Strict 模式,如果是则遇到错误是 Auth 失败,否则可以认为成功
Timeoutint64超时时间2000ms
CpuThresholdint64降载阈值,默认 900(90%),可允许设置范围 0 到 1000900
Healthbool是否开启健康检查true
MiddlewaresServerMiddlewaresConf启用中间件

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

EtcdConf

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

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

RedisKeyConf

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

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

ServerMiddlewaresConf 中间件配置:

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