大小:0.34 MB更新:2022-01-27 15:11:22
类别:编程开发系统:WinAll
包名:
Kratos提供了很多服务框架,可以帮助用户在构建网站和应用时快速配置通信、HTTP服务和数据分发服务。软件提供的微服务内容还有很多。可以使用api框架组件在软件中快速设计项目,直接调用api函数提高设计效率,轻松部署相关功能模块,支持错误的组件功能。错误消息处理方案可以使用该组件来配置和支持博客功能。系统的博客分析功能可以通过Logger组件直接配置,可以支持Registry组件。你可以为你的系统配置各种平台的注册界面,通过第三方账号注册软件很方便!
Kratos一套轻量级的Go微服务框架,包括大量的微服务相关框架和工具。
API:协议通信基于HTTP/gRPC,由Ptobuf定义;
Errs:以Ptobuf的Enum作为错误代码定义,工具生成判断界面;
元数据:在协议通信HTTP/gRPC中,通过中间件标准化服务元素进行交付;
Config:支持多数据源模式,配置合并流畅,通过Atomic模式支持动态配置;
Logger:标准日志接口,可以轻松集成三方日志库,通过fluentd收集日志;
Met:统一的指标接口,可实现多种指标体系,集成Pmetheus默认情况下;
跟踪:遵循open遥测规范的定义,实现微服务链路跟踪;
编码:支持接受和内容类型自动选择内容编码;
传输:通用HTTP/gRPC传输层,实现统一的中间件插件支持;
注册表:实现统一的注册表接口,可以插件和对接各种注册表;
简单:没有过度设计,代码简洁明了;
一般:一般业务发展所需的基础库的功能;
高效:提高业务迭代效率;
稳定性:基础库可测试性高,覆盖率高,在线练习安全;
健壮性:通过良好的数据库设计减少误用;
高能:高能,但不具体。引入不安全是为了做黑客优化。
扩展:好的接口设计来扩展实现,或者通过增加新的基础库目录来扩展功能;
容错性:对于失效设计,引入了大量对SRE的理解,鲁棒性高;
工具链:包含大量工具链,如缓存代码生成、lint工具等;
依赖注射
Wire是一个灵活的依赖注入工具,它通过自动生成代码在编译时完成依赖注入。
在各种组件之间的依赖关系中,通常鼓励显式初始化,而不是全局变量传递。
因此,通过Wire初始化代码可以解决组件之间的耦合,提高代码。
安装工具#
去找github.com/google/wire/cmd/wireCopy
工作原理#
线有两个基本概念:编织器和注射器。
Pvider是一个普通的Go Func,这个方法也可以接收其他pvider的返回值,从而形成依赖注入;
用法#
在Kratos中,主要分为、、biz和数据服务模块,模块顺序将由Wire初始化。
在每个模块中,只需要一个PviderSet提供者,依赖注入可以在线执行。
我们可以为每个组件提供一个入口,而没有其他依赖关系,例如:
相关注射配置可通过wire.go中定义的所有PviderSet完成
初始化组件#
要通过wire初始化组件,需要定义相应的wire.go和奎托应用程序进行启动管理。
在项目的主目录中,运行go generate以生成依赖于编译时的注入代码:
去生成。/…
犯错
API错误代码可以通过pto统一定义业务原因,通过ptoc-gen-go-errors生成决策代码。
在errs包中,错误由pto定义,并实现相应的Err接口,可以通过中间件直接转换为gRPC错误代码。
安装工具#
去找github.com/go-kratos/kratos/cmd/ptoc-gen-go-errs@latestCopy
错误的定义#
API/hello world/errs/hello world . PTO
错误生成#
通过pto生成相应的代码:
奎托斯pto客户端API/hello world/errs/hello world . ptopy
生成的源代码可以通过errs直接判断。IsMissingName(错误):
用法#
配置
用法#
可以指定多个配置,配置会合并到map [stng] intent {}中,可以通过s can或value获取Value内容;
记录
接口实现#
为了便于业务自适应不同的日志访问,Logger只包含最简单的Pnt接口。当业务需要在Kratos框架内使用用户定义的日志记录中介时,只需要简单地实现Pnt方法。
用法#
输出到标准输出#
标准输出日志对象可以通过使用附带的标准日志程序来创建。通过用NewHelper构建日志模块,Helper生成的日志模块可以提供不同级别的日志输出。
输出到fluentd#
介绍流畅的sdk
将日志中间件#引入奎托斯
介绍日志。服务器()转换为HTTP。ServerOption,则Kratos将在每次收到http请求时打印详细的请求。