数码资源网·下载

展开

Kratos(Go微服务框架)

大小:354K语言:354K 类别:编程开发系统:WinXP/Win7/Win10
简介|文章|评论
版本:v2.0.0beta4官方版 for WinXP/Win7/Win10时间:2021-05-18
软件介绍

Kratos是一套轻量级Go微服务框架,包含大量微服务相关框架及工具,解决了gin在微服务场景下的一些适配和微服务本身的一系列生态!

【软件介绍】

Kratos是一款功能强大的轻量级GO微服务框架,为用户提供了海量的微服务相关框架和工具,为微服务的开发构建工作提供了帮助。软件能够轻松解决gin在微服务场景下的一些适配和微服务本身的一系列生态,满足用户的各种微服务框架功能需求。

【软件教程】

  依赖注入

  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 请求的时候打印详细请求信息

【功能介绍】

  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 工具等等;

加载全部内容

相关应用
热门推荐
相关教程
猜你喜欢
编程软件合集

编程软件合集

不同的编程软件可以编辑出不同的程序,而且同一款软件,用不同的...
进入专区>>
电脑编程软件

电脑编程软件

编程软件是一套功能十分强大的工具合集,能够帮助用户制作开发书...
进入专区>>
相关合集
本类排行