从0到1安装启动Kratos框架

Kratos 是一套轻量级 Go 微服务框架,包含大量微服务相关框架及工具,下面介绍一下Kratos的安装启动过程。

1、环境准备

1.1、安装Go

方法一:pkg包安装

安装 - Go官方网站
image.png

安装go1.18以上的版本即可,注意选择合适自己电脑芯片的安装包,点击下一步即可

image.png

该安装包会将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 插件

image.png

安装

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

image.png

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环境变量须知

你可能感兴趣的:(go微服务框架)