客户端调用一个简单的用户rpc服务, config文件需要增加zrpc.RpcClientConf:
package config
import (
"github.com/tal-tech/go-zero/rest"
"github.com/tal-tech/go-zero/zrpc"
)
type Config struct {
rest.RestConf
HelloRpc zrpc.RpcClientConf
}
RpcClientConf参照go-zero/zrpc/config.go, 包含服务发现的基本信息。
RpcClientConf struct {
Etcd discov.EtcdConf `json:",optional"` // etcd配置,通过服务发现获取rpc服务地址
Endpoints []string `json:",optional=!Etcd"` // 直连rpc服务节点
App string `json:",optional"` // 鉴权,须和服务器redis中配置一致
Token string `json:",optional"` // 鉴权,须和服务器redis中配置一致
Timeout int64 `json:",optional"` // 超时
}
type EtcdConf struct { // etcd配置
Hosts []string // etcd集群地址
Key string // rpc服务的key
}
对应的yaml文件为:
Name: hello-api
Host: 0.0.0.0
Port: 2003
UserRpc:
Etcd:
Hosts:
- etcd.discov.svc.cluster.local:2379 # etcd在k8s集群内服务地址
Key: hello.rpc # rpc服务的key