Kratos(Go微服务框架)
v2.0.0beta3 官方版- 软件大小:0.34 MB
- 更新日期:2021-04-28 12:00
- 软件语言:简体中文
- 软件类别:编程工具
- 软件授权:免费版
- 软件官网:待审核
- 适用平台:WinXP, Win7, Win8, Win10, WinAll
- 软件厂商:
软件介绍 人气软件 下载地址
Kratos提供非常多的服务框架,可以帮助用户在搭建网站和应用的时候快速配置通讯服务器,配置HTTP服务,配置数据分发服务,软件提供的微服务内容还是很多的,可以在软件使用api框架组件快速设计项目,直接调用api功能就可以提升设计效率,轻松部署相关的功能模块,支持错误组件功能,通信错误消息处理方案可以使用该组件配置,支持日志功能,系统的日志分析功能可以直接通过Logger组件配置,支持Registry组件,可以为你的系统配置各种平台的注册接口,方便通过第三方账户注册软件,如果你需要构建新的项目就可以下载这款Kratos服务框架!
软件功能
Kratos 一套轻量级 Go 微服务框架,包含大量微服务相关框架及工具。
APIs:协议通信以 HTTP/gRPC 为基础,通过 Protobuf 进行定义;
Errors:通过 Protobuf 的 Enum 作为错误码定义,以及工具生成判定接口;
Metadata:在协议通信 HTTP/gRPC 中,通过 Middleware 规范化服务元信息传递;
Config:支持多数据源方式,进行配置合并铺平,通过 Atomic 方式支持动态配置;
Logger:标准日志接口,可方便集成三方 log 库,并可通过 fluentd 收集日志;
Metrics:统一指标接口,可以实现各种指标系统,默认集成 Prometheus;
Tracing:遵循 OpenTelemetry 规范定义,以实现微服务链路追踪;
Encoding:支持 Accept 和 Content-Type 进行自动选择内容编码;
Transport:通用的 HTTP/gRPC 传输层,实现统一的 Middleware 插件支持;
Registry:实现统一注册中心接口,可插件化对接各种注册中心;
软件特色
简单:不过度设计,代码平实简单;
通用:通用业务开发所需要的基础库的功能;
高效:提高业务迭代的效率;
稳定:基础库可测试性高,覆盖率高,有线上实践安全可靠;
健壮:通过良好的基础库设计,减少错用;
高性能:性能高,但不特定为了性能做 hack 优化,引入 unsafe ;
扩展性:良好的接口设计,来扩展实现,或者通过新增基础库目录来扩展功能;
容错性:为失败设计,大量引入对 SRE 的理解,鲁棒性高;
工具链:包含大量工具链,比如 cache 代码生成,lint 工具等等;
官方教程
依赖注入
Wire 是一个灵活的依赖注入工具,通过自动生成代码的方式在编译期完成依赖注入。
在各个组件之间的依赖关系中,通常鼓励显式初始化,而不是全局变量传递。
所以通过 Wire 进行初始化代码,可以很好地解决组件之间的耦合,以及提高代码维护性。
安装工具#
go get github.com/google/wire/cmd/wireCopy
工作原理#
Wire 具有两个基本概念:Provider 和 Injector。
Provider 是一个普通的 Go Func ,这个方法也可以接收其它 Provider 的返回值,从而形成了依赖注入;
使用方式#
在 Kratos 中,主要分为 server、service、biz、data 服务模块,会通过 Wire 进行模块顺序的初始化;
在每个模块中,只需要一个 ProviderSet 提供者集合,就可以在 wire 中进行依赖注入;
并且我们在每个组件提供入口即可,不需要其它依赖,例如:
然后通过 wire.go 中定义所有 ProviderSet 可以完成依赖注入配置。
初始化组件#
通过 wire 初始化组件,需要定义对应的 wire.go,以及 kratos application 用于启动管理。
在项目的 main 目录中,运行 go generate 进行生成编译期依赖注入代码:
go generate ./...
Errors
APIs 错误码可以统一通过 proto 定义业务原因,然后通过 protoc-gen-go-errors 生成判定代码。
在errors包中,错误信息通过 proto 定义,并且实现对应的 Error 接口,并且可以直接通过 middleware 转换成 gRPC 错误码。
安装工具#
go get github.com/go-kratos/kratos/cmd/protoc-gen-go-errors@latestCopy
错误定义#
api/helloworld/errors/helloworld.proto
错误生成#
通过 proto 生成对应的代码:
kratos proto client api/helloworld/errors/helloworld.protoCopy
生成的源码,可以直接通过 errors.IsMissingName(err) 进行对应的错误判定:
使用方式#
Config
使用方式#
配置源可以指定多个,并且 config 会进行合并成 map[string]interface{},然后通过 Scan 或者 Value 获取值内容;
Logging
接口实现#
为了方便业务自适配不同的 log 接入使用,Logger 只包含了最简单的 Print 接口。当业务需要在 Kratos 框架内部使用自定义的 logging middlerware 的时候,只需要简单实现 Print 方法即可
使用方式#
输出日志到stdout#
使用自带的 StdLogger 可以创建标准输出日志对象. 通过 NewHelper 构造日志模块,Helper 生成的日志模块可以提供不同等级的日志输出。
输出日志到fluentd#
引入 fluent sdk
在kratos中引入logging middleware#
在 http.ServerOption 中引入 logging.Server(), 则 Kratos 会在每次收到 HTTP 请求的时候打印详细请求信息
人气软件
-
redis desktop manager2020.1中文 32.52 MB
/简体中文 -
s7 200 smart编程软件 187 MB
/简体中文 -
GX Works 2(三菱PLC编程软件) 487 MB
/简体中文 -
CIMCO Edit V8中文 248 MB
/简体中文 -
JetBrains DataGrip 353 MB
/英文 -
Dev C++下载 (TDM-GCC) 83.52 MB
/简体中文 -
TouchWin编辑工具(信捷触摸屏编程软件) 55.69 MB
/简体中文 -
信捷PLC编程工具软件 14.4 MB
/简体中文 -
TLauncher(Minecraft游戏启动器) 16.95 MB
/英文 -
Ardublock中文版(Arduino图形化编程软件) 2.65 MB
/简体中文