一个简单的rpc服务, config文件可以配置成一个server配置:
package config
import (
"github.com/tal-tech/go-zero/core/stores/cache"
"github.com/tal-tech/go-zero/zrpc"
)
type Config struct {
zrpc.RpcServerConf //zrpc服务端配置
}
RpcServerConf服务端配置包含一些基本信息和服务注册的配置,具体可参考go-zero/zrpc/config.go
RpcServerConf struct {
service.ServiceConf // 服务基础配置
ListenOn string // 监听port
Etcd discov.EtcdConf `json:",optional"` // etcd配置
// redis 身份验证配置
Auth bool `json:",optional"`
Redis redis.RedisKeyConf `json:",optional"`
StrictControl bool `json:",optional"`
Timeout int64 `json:",default=2000"` // 超时,单位ms,不为0
CpuThreshold int64 `json:",default=900,range=[0:1000]"` // 自适应降载cpu阈值,900代表90%
}
type ServiceConf struct {
Name string // 服务名
Log logx.LogConf
Mode string `json:",default=pro,options=dev|test|pre|pro"` // 运行环境
MetricsUrl string `json:",optional"` // 指标报告Url
Prometheus prometheus.Config `json:",optional"` // 监控配置
}
对应的yaml文件为:
Name: hello.rpc
Log:
Mode: console
ListenOn: 0.0.0.0:2001
Etcd:
Hosts:
- etcd.discov.svc.cluster.local:2379 # etcd在k8s集群内服务地址
Key: hello.rpc # rpc服务的key