服务端

一个简单的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