300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > B站微服务框架Kratos详细教程(1)- 安装搭建

B站微服务框架Kratos详细教程(1)- 安装搭建

时间:2024-06-15 22:58:44

相关推荐

B站微服务框架Kratos详细教程(1)- 安装搭建

Kratos

Kratos是bilibili开源的一套Go微服务框架,包含大量微服务相关框架及工具。

名字来源于:《战神》游戏以希腊神话为背景,讲述由凡人成为战神的奎托斯(Kratos)成为战神并展开弑神屠杀的冒 险历程。

Features

HTTP Blademaster:核心基于gin进行模块化设计,简单易用、核心足够轻量;GRPC Warden:基于官方gRPC开发,集成discovery服务发现,并融合P2C负载均衡;Cache:优雅的接口化设计,非常方便的缓存序列化,推荐结合代理模式overlord;Database:集成MySQL/HBase/TiDB,添加熔断保护和统计支持,可快速发现数据层压力;Config:方便易用的paladin sdk,可配合远程配置中心,实现配置版本管理和更新;Log:类似zap的field实现高性能日志库,并结合log-agent实现远程日志管理;Trace:基于opentracing,集成了全链路trace支持(gRPC/HTTP/MySQL/Redis/Memcached);Kratos Tool:工具链,可快速生成标准项目,或者通过Protobuf生成代码,非常便捷使用gRPC、HTTP、swagger文档;

快速开始

快速开始前,首先需要安装Go环境:Go version>=1.13

CentOS Go环境搭建,Windows自行百度哈

设置代理环境变量,提高下载速度。注意GO1.13及之后支持direct的写法

go env -w GOPROXY=,direct

由于安装过程中需要用到Protobuf,所以建议先安装Protobuf

CentOS安装ProtobufWindows安装

快速安装

GO111MODULE=on && go get -u /go-kratos/kratos/tool/kratos

Windows注意,GO111MODULE设置无效,需要单独执行以下命令设置

go env -w GO111MODULE=on

注意:设置GO111MODULE=on后,可能IDE无法识别包内容:

原因:由于设置为on后,go get命令下载的第三方包都会下载到GOPATH的pkg里

需要对IDE进行相关设置

新建demo

cd $GOPATH/src #此处GO111MODULE=on,可在任意目录新建demokratos new mykratos

生成目录框架结构:

├── CHANGELOG.md ├── OWNERS├── README.md├── api # api目录为对外保留的proto文件及生成的pb.go文件│ ├── api.bm.go│ ├── api.pb.go # 通过go generate生成的pb.go文件│ ├── api.proto│ └── client.go├── cmd│ └── main.go # cmd目录为main所在├── configs # configs为配置文件目录│ ├── application.toml # 应用的自定义配置文件,可能是一些业务开关如:useABtest = true│ ├── db.toml # db相关配置│ ├── grpc.toml # grpc相关配置│ ├── http.toml # http相关配置│ ├── memcache.toml # memcache相关配置│ └── redis.toml# redis相关配置├── go.mod├── go.sum└── internal# internal为项目内部包,包括以下目录:│ ├── dao # dao层,用于数据库、cache、MQ、依赖某业务grpc|http等资源访问│ │ ├── dao.bts.go│ │ ├── dao.go│ │ ├── db.go│ │ ├── mc.cache.go│ │ ├── mc.go│ │ └── redis.go│ ├── di # 依赖注入层 采用wire静态分析依赖│ │ ├── app.go│ │ ├── wire.go # wire 声明│ │ └── wire_gen.go# go generate 生成的代码│ ├── model# model层,用于声明业务结构体│ │ └── model.go│ ├── server # server层,用于初始化grpc和http server│ │ ├── grpc # grpc层,用于初始化grpc server和定义method│ │ │ └── server.go│ │ └── http # http层,用于初始化http server和声明handler│ │ └── server.go│ └── service # service层,用于业务逻辑处理,且为方便http和grpc共用方法,建议入参和出参保持grpc风格,且使用pb文件生成代码│ └── service.go└── test# 测试资源层 用于存放测试相关资源数据 如docker-compose配置 数据库初始化语句等└── docker-compose.yaml

运行示例:

cd mykratos/cmdgo build./cmd -conf ../configs

打开浏览器访问:

http://localhost:8000/mykratos/start

你会看到输出了Golang 大法好 !!!

如果你修改了demo的名字,访问地址也要跟着修改,例如项目名:mydemo

http://localhost:8000/mydemo/start

除了使用go build运行示例外,你还可以使用以下命令

kratos run

kratos工具包

kratos包含了一批好用的工具集,比如项目一键生成、基于proto生成http&grpc代码,生成缓存回源代码,生成memcache执行代码,生成swagger文档等。

执行以下命令,即可快速安装好kratos工具

go get -u /go-kratos/kratos/tool/kratos

安装所有工具包

kratos tool install all

kratos本体

kratos是所有工具集的本体,就像go一样,拥有执行各种子工具的能力,如go build和go tool。先让我们看看-h的输出:

NAME:kratos - kratos toolUSAGE:kratos [global options] command [command options] [arguments...]VERSION:0.0.1COMMANDS:new, n create new projectbuild, bkratos buildrun, r kratos runtool, t kratos toolversion, v kratos versionself-upgrade kratos self-upgradehelp, h Shows a list of commands or help for one commandGLOBAL OPTIONS:--help, -hshow help--version, -v print the version

可以看到kratos有如:new build run tool等在内的COMMANDS。

工具包使用

kratos new

kratos new是快速创建一个项目的命令,执行如下:

kratos new kratos-demo

即可快速在当前目录生成一个叫kratos-demo的项目。此外还支持指定owner和path,如下:

kratos new kratos-demo -o YourName -d YourPath

注意,kratos new默认会生成通过 protobuf 定义的grpc和bm示例代码的,如只生成bm请加–http,如下:

kratos new kratos-demo -o YourName -d YourPath --http

如只生成grpc请加–grpc,如下:

kratos new kratos-demo -o YourName -d YourPath --grpc

特别注意,如果不是MacOS系统,需要自己进行手动安装protoc,用于生成的示例项目api目录下的proto文件并不会自动生成对应的.pb.go和.bm.go文件。

也可以参考以下说明进行生成:protoc说明

kratos build & run

kratos buildkratos rungo buildgo run的封装,可以在当前项目任意目录进行快速运行进行调试,并无特别用途。

kratos tool

kratos tool是基于proto生成http&grpc代码,生成缓存回源代码,生成memcache执行代码,生成swagger文档等工具集,先看下的执行效果:

kratos toolprotoc(已安装): 快速方便生成pb.go的protoc封装,windows、Linux请先安装protoc工具 Author(kratos) [/10/31]genbts(已安装): 缓存回源逻辑代码生成器 Author(kratos) [/10/31]testcli(已安装): 测试代码生成 Author(kratos) [/09/09]genmc(已安装): mc缓存代码生成 Author(kratos) [/07/23]swagger(已安装): swagger api文档 Author(goswagger.io) [/05/05]

安装工具:kratos tool install demo

执行工具:kratos tool demo

安装全部工具:kratos tool install all

全部升级:kratos tool upgrade all

详细文档: /go-kratos/kratos/blob/master/doc/wiki-cn/kratos-tool.md

小小说明:如未安装工具,第一次运行也可自动安装,不需要特别执行install

目前已经集成的工具有:

kratos 为本体工具,只用于安装更新使用;protoc 用于快速生成gRPC、HTTP、Swagger文件,该命令Windows,Linux用户需要手动安装 protobuf

工具;swagger 用于显示自动生成的HTTP API接口文档,通过 kratos tool swagger serve

api/api.swagger.json 可以查看文档;genmc 用于自动生成memcached缓存代码;genbts 用于生成缓存回源代码生成,如果miss则调用回源函数从数据源获取,然后塞入缓存;

另外附上kratos文档pdf版下载:/download/uisoul/12817253

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。