共计 2699 个字符,预计需要花费 7 分钟才能阅读完成。
Kratos 是一套轻量级 Go 微服务框架,蕴含大量微服务相干框架及工具,上面介绍一下 Kratos 的装置启动过程。
1、环境筹备
1.1、装置 Go
办法一:pkg 包装置
装置 – Go 官方网站
装置 go1.18 以上的版本即可,留神抉择适合本人电脑芯片的安装包,点击下一步即可
该安装包会将 Go 发行版装置到 /usr/local/go 中
办法二:homebrew 装置
brew install go
brew list go 能够查看 go 的装置目录
查看是否装置胜利go --version
查看环境信息go env
开启 go mod go env -w GO111MODULE=on
配置环境变量
查看以后 shell 是 zsh 还是 bash, 如果是 bash 抉择编辑~/.bash_profile 文件,如果是 zsh 抉择编辑~/.zshrc 文件 dscl . -read /Users/$USER UserShell
GOROOT 门路是 go 的装置门路,个别是 /usr/local/go 或者 /usr/local/Cellar/go/1.18/libexec
GOPATH 是 Go 我的项目的工作目录,能够自定义,这里指定为 $HOME/go
GOPROXY 是 go get 下载依赖时应用的代理地址列表,应用逗号 (,) 或竖杠 (|) 分隔。
可能减速下载第三方包
GOPRIVATE 是公有仓库, 个别是公司内网的仓库地址
将 $GOPATH/bin 退出 $PATH 变量,这样在终端的任何门路都能应用 go 包的 bin 目录上面的工具
关上 bash_profile
$ open .bash_profile
如果不存在创立 bash_profile
$ vim ~/.bash_profile
编辑:export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export GO111MODULE=on
export GOPROXY=http://goproxy.cn,direct
export GOPRIVATE=git.xxxx.cn/*
export PATH=$GOROOT/bin:$GOPATH/bin:$PATH
失效环境变量
source ~/.bash_profile # 如果是 bash
source ~/.zshrc # 如果是 zsh
1.2、装置 protoc、protoc-gen-go
简介
gRPC 是一个高性能、开源、通用的 RPC 框架,由 Google 推出,基于 HTTP2 协定规范设计开发,默认采纳 Protocol Buffers 数据序列化协定,反对多种开发语言。Protocol Buffers(Protobuf)是一种与语言、平台无关,可扩大的序列化结构化数据的数据描述语言,咱们经常称其为 IDL,罕用于通信协议,数据存储等等,相较于 JSON、XML,它更小、更快。在 gRPC 开发中,咱们经常须要与 Protobuf 进行打交道,而在编写了.proto 文件后,咱们会须要到一个编译器,那就是 protoc,protoc 是 Protobuf 的编译器,是用 C++ 所编写的,其次要性能是用于编译.proto 文件。针对不同的语言,还须要不同的运行时的 protoc 插件,那么对应 Go 语言就是 protoc-gen-go 插件
装置
brew install grpc
brew install protobuf
brew install protoc-gen-go
brew install protoc-gen-go-grpc
验证
protoc --version
protoc-gen-go --version
protoc-gen-go-grpc --version
1.3、装置 kratos 脚手架工具
kratos 是与 Kratos 框架配套的脚手架工具,kratos 可能
- 通过模板疾速创立我的项目
- 疾速创立与生成 protoc 文件
- 应用开发过程中罕用的命令
go install github.com/go-kratos/kratos/cmd/kratos/v2@latest
该命令会将编译的两头文件放在 GOPATH 的 pkg 目录下,以及将编译的可执行文件放在 GOPATH 的 bin 目录下。
ps:如果应用 kratos 命令提醒“zsh: command not found: kratos”,是因为下面的环境变量没有配置对,没有将 GOBIN 目录退出到环境变量
2、创立启动官网示例我的项目
2.1、依据模版拉取我的项目
kratos new helloworld
#拉取失败可应用国内源
kratos new helloworld -r https://gitee.com/go-kratos/kratos-layout.git
2.2、启动我的项目
cd helloworld
# 拉取我的项目依赖
go mod download
# 生成所有 proto 源码、wire 等等
go generate ./...
# 运行我的项目
kratos run
# 输入
INFO msg=config loaded: config.yaml format: yaml # 默认载入 configs/config.yaml 配置文件
INFO msg=[gRPC] server listening on: [::]:9000 # gRPC 服务监听 9000 端口
INFO msg=[HTTP] server listening on: [::]:8000 # HTTP 服务监听 8000 端口
看到以上输入的话,祝贺你,我的项目胜利启动了!
2.3、测试接口
curl 'http://127.0.0.1:8000/helloworld/kratos'
# 输入:{"message": "Hello kratos"}
curl 'http://127.0.0.1:8000/helloworld/error'
# 输入
{
"code": 404,
"reason": "USER_NOT_FOUND",
"message": "user not found: error",
"metadata": {}}
2.4、新建一个 CURD 模块示例
# 增加一个 proto 模版,定义须要的申请体、返回体构造
kratos proto add api/server/server.proto
# 依据 proto 模版生成 GO 代码
kratos proto client api/server/server.proto
# 生成 service 层代码,实现定义的接口
kratos proto server api/server/server.proto -t internal/service
接下来能够本人摸索一下 kratos 框架的玩法了,前面我还会介绍 kratos 框架的启动流程、开发使用指南,敬请期待~
举荐浏览
Kratos 文档
ktatos 官网示例我的项目
protobuf 官方网站
GRPC 利用实战 - 煎鱼
Go 环境变量须知