服务配置

概述

本文介绍如何使用 go-zero 框架进行 gRPC Client 的开发。

配置

  1. type RpcClientConf struct {
  2. Etcd discov.EtcdConf `json:",optional,inherit"`
  3. Endpoints []string `json:",optional"`
  4. Target string `json:",optional"`
  5. App string `json:",optional"`
  6. Token string `json:",optional"`
  7. NonBlock bool `json:",optional"`
  8. Timeout int64 `json:",default=2000"`
  9. KeepaliveTime time.Duration `json:",default=20s"`
  10. Middlewares ClientMiddlewaresConf
  11. }
  12. type EtcdConf struct {
  13. Hosts []string
  14. Key string
  15. ID int64 `json:",optional"`
  16. User string `json:",optional"`
  17. Pass string `json:",optional"`
  18. CertFile string `json:",optional"`
  19. CertKeyFile string `json:",optional=CertFile"`
  20. CACertFile string `json:",optional=CertFile"`
  21. InsecureSkipVerify bool `json:",optional"`
  22. }
  23. type ServerMiddlewaresConf struct {
  24. Trace bool `json:",default=true"`
  25. Recover bool `json:",default=true"`
  26. Stat bool `json:",default=true"`
  27. Prometheus bool `json:",default=true"`
  28. Breaker bool `json:",default=true"`
  29. }

RpcClientConf

名称类型含义默认值是否必选
EtcdEtcdConf服务发现配置,当需要使用 etcd 做服务发现时配置
Endpointsstring 类型数组RPC Server 地址列表,用于直连,当需要直连 rpc server 集群时配置
Targetstring域名解析地址,名称规则请参考 https://github.com/grpc/grpc/blob/master/doc/naming.md
Appstringrpc 认证的 app 名称,仅当 rpc server 开启认证时配置
Tokenstringrpc 认证的 token,仅当 rpc server 开启认证时配置
NonBlockbool是否阻塞模式,当值为 true 时,不会阻塞 rpc 链接false
Timeoutint64超时时间2000ms
KeepaliveTimeTime.Duration保活时间20s
MiddlewaresClientMiddlewaresConf是否启用中间件

EtcdConf

EtcdConf 为服务发现配置,当需要使用 etcd 做服务发现时配置。

名称类型含义默认值是否必选
Hostsstring 类型数组etcd 集群地址
Keystring服务发现 key
IDint64etcd 租户 id
Userstringetcd 用户名
Passstringetcd 密码
CertFilestringetcd 证书文件CertFile
CertKeyFilestringetcd 证书私钥文件
CACertFilestringetcd 证书根文件CertFile
InsecureSkipVerifybooletcd 是否跳过证书验证

ServerMiddlewaresConf

ServerMiddlewaresConf 为中间件配置,当需要控制中间件时配置。

名称类型含义默认值是否必选
Tracebool是否开启链路追踪true
Recoverbool是否开启异常恢复true
Statbool是否开启统计true
Prometheusbool是否开启 prometheustrue
Breakerbool是否开启熔断true