# 服务端

一个简单的rpc服务, config文件可以配置成一个server配置：


```go
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
```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文件为:


```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
```

<Vssue title="参数配置服务端" />
