go-zero 必知必会
服务注册发现
一、服务注册发现分类
【阐明】: 其余服务发现形式看 https://github.com/zeromicro/… 官网 demo,其中 yaml 中,etcd、IP 直连、k8s 三种配置文件也不是对立的
默认形式 etcd
- api 配置文件
#gateway-api.yaml
#api 服务发现配置模块
AdminRpc:
Timeout: 10000
Etcd:
Hosts:
- 127.0.0.1:2379
Key: admin.rpc
- rpc 配置文件
#admin.yaml
Name: admin.rpc
ListenOn: 127.0.0.1:8080
#rpc 服务发现配置模块
Etcd:
Hosts:
- 127.0.0.1:2379
Key: admin.rpc
kubernetes
【阐明】: 举荐应用 k8s 形式部署对应利用,这样能够缩小保护一套 etcd 集群。
1.api 配置文件
#gateway-api.yaml
#api 服务发现配置模块
AdminRpc:
Timeout: 10000
Endpoints:
- 127.0.0.1:39511
2.rpc 配置文件
#admin.yaml
Name: admin.rpc
ListenOn: 127.0.0.1:8080
#rpc 服务发现配置模块, 不须要配置
IP 直连
1.api 配置文件
#gateway-api.yaml
#api 服务发现配置模块
AdminRpc:
Timeout: 10000
Endpoints:
- 127.0.0.1:39511
2.rpc 配置文件
#admin.yaml
Name: admin.rpc
ListenOn: 127.0.0.1:8080
#rpc 服务发现配置模块, 不须要配置
consul
nacos
polaris
二、框架组件
(一)、Api 定义
(二)、我的项目配置
-
rest.RestConf 配置
配置构造体
RestConf struct { service.ServiceConf Host string `json:",default=0.0.0.0"` Port int CertFile string `json:",optional"` KeyFile string `json:",optional"` Verbose bool `json:",optional"` MaxConns int `json:",default=10000"` MaxBytes int64 `json:",default=1048576"` // milliseconds Timeout int64 `json:",default=3000"` CpuThreshold int64 `json:",default=900,range=[0:1000]"` Signature SignatureConf `json:",optional"` } // 成员 service.ServiceConf type ServiceConf struct { Name string Log logx.LogConf Mode string `json:",default=pro,options=dev|test|rt|pre|pro"` MetricsUrl string `json:",optional"` Prometheus prometheus.Config `json:",optional"` Telemetry trace.Config `json:",optional"` } // 成员 Signature SignatureConf struct { Strict bool `json:",default=false"` Expiry time.Duration `json:",default=1h"` PrivateKeys []PrivateKeyConf}
第 1 步: 在 internal/config/config.go 新增配置文件
【阐明】: 以后配置实践上只会存在于 api 模块中。
package config import ("github.com/zeromicro/go-zero/rest") type Config struct {rest.RestConf}
第 2 步: 在 YAML 文件配置残缺版本:
Name: gateway-api #ServiceConf.Name Host: 0.0.0.0 #RestConf.Host Port: 9510 #RestConf.Port Mysql: Datasource: root:123456@tcp(127.0.0.1:3306)/admin?charset=utf8mb4&parseTime=true&loc=Asia%2FShanghai AdminRpc: Timeout: 10000 Etcd: Hosts: - 127.0.0.1:2379 Key: admin.rpc
-
zrpc.RpcClientConf 配置
-
zrpc.RpcServerConf 配置
-
数据源 Mysql 配置
-
Auth 权限配置
-
Redis 缓存 cache.CacheConf 配置
-
Redis 数据库配置
-
其余自定义扩大配置
(三)、序列化.
- form
- json
- protobuf
- xml
- yaml
(四)、错误处理.
(五)、日志.
(六)、元信息传递.
(七)、head 申请头信息传递.
(八)、路由负载平衡.
(九)、中间件.
(十)、传输协定.
(十一)、model 不定参数查问、中间件 context 传值、配置文件详解、SSL 证书、ETCD 证书、参数验证
(十二)、传输协定
(十三)、分布式事务
(十四)、接口限流和超时设置、协程形式应用
(十五)、生产环境抉择计划
- Docker 模式 +ETCD 集群 / 单体【正文:vpc+slb】
- 守护过程 +ETCD 集群 / 单体
- k8s 集群