Kratos是一款基于Go语言的微服务框架,由Bilibili开源并广泛用于其业务中,功能强悍,便捷好用,包含大量微服务相关框架及工具,Kratos还支持分布式追踪、多种部署方式,并具备高可用性、高性能和可扩展性,适用于构建各种规模和复杂度的分布式应用。
Kratos是一个由Bilibili开源的Go语言微服务框架,旨在为分布式应用提供高效、灵活、可扩展的解决方案。它的设计理念围绕着易用性、高性能和可扩展性展开,帮助开发人员更轻松地构建微服务应用。
Kratos的特色体现在其分层设计,这种设计将业务逻辑和底层框架进行分离,使得应用更易于维护和扩展。它内置了多种高性能的组件和中间件,例如gRPC、etcd、Prometheus等,可以大幅提升应用的性能和吞吐量。此外,Kratos还支持插件化开发,这意味着开发者可以自由选择、替换和扩展各种组件和中间件,以满足不同的业务需求。
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 工具等等。
相关软件