乐趣区

关于go:从0到1安装启动Kratos框架

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

退出移动版