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/goexport GOPATH=$HOME/goexport GO111MODULE=onexport GOPROXY=http://goproxy.cn,direct      export GOPRIVATE=git.xxxx.cn/*export PATH=$GOROOT/bin:$GOPATH/bin:$PATH

失效环境变量

source ~/.bash_profile  # 如果是bashsource ~/.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 grpcbrew install protobufbrew install protoc-gen-gobrew install protoc-gen-go-grpc

验证

protoc --versionprotoc-gen-go --versionprotoc-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环境变量须知