Kratos是一套轻量级Go微服务框架,包含大量微服务相关框架及工具,解决了gin在微服务场景下的一些适配和微服务本身的一系列生态!
软件特色
简单:不过度设计,代码平实简单;
通用:通用业务开发所需要的基础库的功能;
高效:提高业务迭代的效率;
稳定:基础库可测试性高,覆盖率高,有线上实践安全可靠;
健壮:通过良好的基础库设计,减少错用;
高性能:性能高,但不特定为了性能做hack优化,引入unsafe;
扩展性:良好的接口设计,来扩展实现,或者通过新增基础库目录来扩展功能;
容错性:为失败设计,大量引入对SRE的理解,鲁棒性高;
工具链:包含大量工具链,比如cache代码生成,lint工具等等;
功能介绍
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:实现统一注册中心接口,可插件化对接各种注册中心;