Day14 Kratos (一) | 青训营笔记
这是我参与「第五届青训营」伴学笔记创作活动的第 14 天
安装
go install github.com/go-kratos/kratos/cmd/kratos/v2@latest
更新
kratos upgrade
Quick Start
新建项目
kratos new helloworld
添加服务
kratos new app/user --nomod
添加proto文件
kratos proto add api/helloworld/v1/demo.proto
生成proto代码
kratos proto client api/helloworld/v1/demo.proto
生成service代码
使用 -t
指定生成目录
kratos proto server api/helloworld/v1/demo.proto -t internal/service
api
与kitex、go-micro和go-zero等框架类似的是,kratos也是需要定义idl的
kratos的idl与传统的grpc开发一样使用protobuf
,可以看作是对grpc包了一层
包括grpc-gateway等工具kratos内部也集成了,因此可以快速地将原有的工程迁移到ktatos工程
并且kratos还自研了一些proto插件方便开发者更方便地开发服务
使用如下命令可以更具定义的Idl生成接口
生成 proto 模板
kratos proto add api/helloworld/v1/greeter.proto
生成 client 源码
kratos proto client api/helloworld/v1/greeter.proto
生成 server 源码
kratos proto server api/helloworld/v1/greeter.proto -t internal/service
HTTP API 是通过 protoc-gen-go-http 插件进行生成 http.Handler,然后可以注册到 HTTP Server 中:
import "github.com/go-kratos/kratos/v2/transport/http"
greeter := &GreeterService{}
srv := http.NewServer(http.Address(":8000"))
srv.HandlePrefix("/", v1.NewGreeterHandler(greeter))
gRPC API 是通过 protoc-gen-go-grpc 插件进行生成 gRPC Register,然后可以注册到 GRPC Server 中;
import "github.com/go-kratos/kratos/v2/transport/grpc"
greeter := &GreeterService{}
srv := grpc.NewServer(grpc.Address(":9000"))
v1.RegisterGreeterServer(srv, greeter)
热拔插
kratos内部使用的http框架是gorilla/mux,但是这个框架已经停止维护了,如果不想使用kratos内部集成的一些组件,kratos可以支持这些组件的热拔插,可以很简单的替换掉这些组件
在tx7do/kratos-transport: kratos transport layer extension (github.com)这个库中,作者提供了很多自己写的kratos插件,包括可以把kratos内部的gorilla替换成heartz
、fasthttp
等框架
配置源
-
支持多种配置源
Kratos定义了标准化的Source和Watcher接口来适配各种配置源。
另外,在contrib/config下面,我们也提供了如下的配置中心的适配供使用:
如果上述的配置加载方式无法涵盖您的环境,您也可以通过实现接口来适配您自己的配置加载方式。
-
支持多种配置格式
配置组件复用了
encoding
中的反序列化逻辑作为配置解析使用。默认支持以下格式的解析:- json
- proto
- xml
- yaml
本文作者:七つ一旋桜
本文链接:https://www.cnblogs.com/poifa/p/17716915.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步