Kratos 框架简介
Kratos 是一个基于 Golang 实现的轻量级微服务框架,提供了便捷的能力,帮助你从零开始快速构建可靠(bulletproof)的应用程序。其名称源自一款流行游戏《战神》(God of War),寓意着 Kratos 从普通人成长为战神、历经诸多冒险击败各路神明的不凡故事。
目标(Goals)
- 提供一套全面的微服务开发技术,通过集成相关框架与工具,使微服务管理对上层业务开发透明,开发者可专注于业务开发与发布。
- 对每位开发者而言,Kratos 也是学习微服务多方面知识的理想资源,可丰富其经验与技能。
原则(Principles)
- 简单:设计适度,代码简洁易懂。
- 通用:覆盖业务开发的各类实用工具。
- 高效:加快业务升级效率。
- 稳定:基础库经过生产环境验证,具备高可测试性、高覆盖率及高安全可靠性。
- 健壮:通过高质量基础库消除误用。
- 高性能:最优性能,不使用 unsafe 防止 hacking。
- 可扩展:接口设计合理,可扩展基础库等工具以满足后续需求。
- 容错:面向失败设计,在 Kratos 中强化 SRE 理解与实践以提升健壮性。
- 工具链:包含丰富工具链,如缓存层生成、lint 工具等。
主要功能(Features)
- APIs:通过 Protobuf 定义的消息使用 HTTP/gRPC 进行传输。
- Errors:通过 Protobuf 的 Enum 定义错误码及工具代码生成的处理接口。
- Metadata:在 HTTP/gRPC 协议中使用统一的元数据传递方式。
- Config:支持多数据源配置与动态配置(使用原子操作)。
- Logger:标准日志接口便于集成第三方日志库,并通过 Fluentd 收集日志。
- Metrics:默认集成 Prometheus,并提供统一指标接口以灵活实现自有度量系统。
- Tracing:遵循 OpenTelemetry 实现微服务链路追踪。
- Encoding:根据 Accept 与 Content-Type 自动支持内容编码选择。
- Transport:HTTP/gRPC 支持统一的中间件插件。
- Registry:集中式注册中心接口可通过插件对接各类其他注册中心。
架构(Architecture)
Kratos 的整体架构如下图所示:
- 文档(Docs)
- 示例(Examples)
- 服务布局(Service Layout)
适用场景
Kratos 适用于使用 Golang 从零快速搭建轻量级、高可靠微服务的场景,尤其适合希望微服务基础设施对业务透明、聚焦于业务开发,或希望借助框架学习微服务完整技术栈(如配置管理、链路追踪、统一日志与指标等)的团队与个人开发者。
- 微信群
- Discord Group
- QQ 群:716486124
许可证(License)
Kratos 基于 MIT 许可证开源,详见 LICENSE 文件。
贡献者(Contributors)
感谢以下贡献者的杰出贡献: