安下载编程开发

分类分类

Kratos(Go微服务框架)

Kratos(Go微服务框架)

v2.0.0beta3 官方版

大小:0.34 MB 更新:2021/04/28

类别:编程工具系统:WinXP, Win7, Win8, Win10, WinAll

立即下载

  Kratos提供非常多的服务框架,可以帮助用户在搭建网站和应用的时候快速配置通讯服务器,配置HTTP服务,配置数据分发服务,软件提供的微服务内容还是很多的,可以在软件使用api框架组件快速设计项目,直接调用api功能就可以提升设计效率,轻松部署相关的功能模块,支持错误组件功能,通信错误消息处理方案可以使用该组件配置,支持日志功能,系统的日志分析功能可以直接通过Logger组件配置,支持Registry组件,可以为你的系统配置各种平台的注册接口,方便通过第三方账户注册软件,如果你需要构建新的项目就可以下载这款Kratos服务框架!

Kratos(Go微服务框架)

软件功能

  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(Go微服务框架)

  使用方式#

  在 Kratos 中,主要分为 server、service、biz、data 服务模块,会通过 Wire 进行模块顺序的初始化;

Kratos(Go微服务框架)

  在每个模块中,只需要一个 ProviderSet 提供者集合,就可以在 wire 中进行依赖注入;

  并且我们在每个组件提供入口即可,不需要其它依赖,例如:

Kratos(Go微服务框架)

  然后通过 wire.go 中定义所有 ProviderSet 可以完成依赖注入配置。

  初始化组件#

  通过 wire 初始化组件,需要定义对应的 wire.go,以及 kratos application 用于启动管理。

Kratos(Go微服务框架)

  在项目的 main 目录中,运行 go generate 进行生成编译期依赖注入代码:

  go generate ./...

  Errors

  APIs 错误码可以统一通过 proto 定义业务原因,然后通过 protoc-gen-go-errors 生成判定代码。

  在errors包中,错误信息通过 proto 定义,并且实现对应的 Error 接口,并且可以直接通过 middleware 转换成 gRPC 错误码。

Kratos(Go微服务框架)

  安装工具#

  go get github.com/go-kratos/kratos/cmd/protoc-gen-go-errors@latestCopy

  错误定义#

  api/helloworld/errors/helloworld.proto

Kratos(Go微服务框架)

  错误生成#

  通过 proto 生成对应的代码:

  kratos proto client api/helloworld/errors/helloworld.protoCopy

  生成的源码,可以直接通过 errors.IsMissingName(err) 进行对应的错误判定:

Kratos(Go微服务框架)

  使用方式#

Kratos(Go微服务框架)

  Config

  使用方式#

  配置源可以指定多个,并且 config 会进行合并成 map[string]interface{},然后通过 Scan 或者 Value 获取值内容;

Kratos(Go微服务框架)

  Logging

  接口实现#

  为了方便业务自适配不同的 log 接入使用,Logger 只包含了最简单的 Print 接口。当业务需要在 Kratos 框架内部使用自定义的 logging middlerware 的时候,只需要简单实现 Print 方法即可

Kratos(Go微服务框架)

  使用方式#

  输出日志到stdout#

  使用自带的 StdLogger 可以创建标准输出日志对象. 通过 NewHelper 构造日志模块,Helper 生成的日志模块可以提供不同等级的日志输出。

Kratos(Go微服务框架)

  输出日志到fluentd#

  引入 fluent sdk

Kratos(Go微服务框架)

  在kratos中引入logging middleware#

  在 http.ServerOption 中引入 logging.Server(), 则 Kratos 会在每次收到 HTTP 请求的时候打印详细请求信息

Kratos(Go微服务框架)
精品推荐
同类推荐
相关下载
  • 最新排行
  • 最热排行
  • 评分最高
编程开发排行榜
实时热词