01-基础
安装
- ubuntu 系统
go 环境
$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.cn,direct
protoc 配置
- 下载安装文件
# 解压,进入文件夹 ./configure make make install
protoc-gen-go 配置
$ go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
$ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
karatos 命令安装
go install github.com/go-kratos/kratos/cmd/kratos/v2@latest
wire 安装
go install github.com/google/wire/cmd/wire
创建项目
kratos new helloworld
protoc 重新生成
make api
目录介绍
.
├── Dockerfile 容器线上部署,两部构建 1,编译 2,运行镜像
├── LICENSE
├── Makefile 命令配置,定制命令
├── README.md 说明文档
├── api
│ └── helloworld
│ └── v1 【api 版本号】
│ ├── error_reason.pb.go 【编译生成的文件】
│ ├── error_reason.proto 【定义接口】
│ ├── greeter.pb.go
│ ├── greeter.proto
│ ├── greeter_grpc.pb.go
│ └── greeter_http.pb.go
├── app
│ └── user
│ ├── Dockerfile
│ ├── Makefile
│ ├── cmd
│ │ └── user
│ │ ├── main.go
│ │ ├── wire.go
│ │ └── wire_gen.go
│ ├── configs
│ │ └── config.yaml
│ ├── internal
│ │ ├── biz
│ │ │ ├── biz.go
│ │ │ └── greeter.go
│ │ ├── conf
│ │ │ ├── conf.pb.go
│ │ │ └── conf.proto
│ │ ├── data
│ │ │ ├── data.go
│ │ │ └── greeter.go
│ │ ├── server
│ │ │ ├── grpc.go
│ │ │ ├── http.go
│ │ │ └── server.go
│ │ └── service
│ │ ├── greeter.go
│ │ └── service.go
│ └── openapi.yaml
├── cmd 【入口】
│ └── helloworld
│ ├── main.go 【运行入口,wireApp 调用的是 wire_gen.go 文件里面的函数】
│ ├── wire.go 【依赖注入,辅助文件】
│ └── wire_gen.go
├── configs 【配置文件】
│ └── config.yaml 【端口号,超时时间,启动时候加载】
├── go.mod
├── go.sum
├── internal 【业务逻辑】
│ ├── biz 【3, 业务场景】
│ │ ├── README.md
│ │ ├── biz.go
│ │ └── greeter.go 【存储接口】
│ ├── conf 【配置,对应顶层目录配置】
│ │ ├── conf.pb.go
│ │ └── conf.proto 【解析配置文件】
│ ├── data 【4, 实现接口,逻辑代码】
│ │ ├── README.md
│ │ ├── data.go 【访问数据库,缓存,第三方服务】
│ │ └── greeter.go
│ ├── server 【1 最顶层,挂入 service】
│ │ ├── grpc.go
│ │ ├── http.go 【初始化,读取配置,端口】
│ │ └── server.go
│ └── service 【2 对应 api 目录】
│ ├── README.md
│ ├── greeter.go 【protoc 生成的方法】
│ └── service.go
├── openapi.yaml 文档
└── third_party 【proto 依赖的内容】
├── README.md
├── errors
│ └── errors.proto
├── google
│ ├── api
│ │ ├── annotations.proto
│ │ ├── client.proto
│ │ ├── field_behavior.proto
│ │ ├── http.proto
│ │ └── httpbody.proto
│ └── protobuf
│ └── descriptor.proto
└── validate
├── README.md
└── validate.proto
入口文件
- 路径
/cmd/helloworld/main.go
- main 包
- 初始化 log 配置
- 加载配置
- 初始化整个应用
- 运行应用