客户端

客户端调用一个简单的用户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