Overview | Kratos

Overview | Kratos

Kratos is a web application framework with expressive, elegant syntax. We've already laid the foundation.

访问网站
我的收藏196 次访问更新于 a month ago反馈
Overview | Kratos screenshot

详细介绍

Kratos 框架简介

Kratos Logo

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 的整体架构如下图所示:

Kratos 架构图

相关资源(Related)

  • 文档(Docs)
  • 示例(Examples)
  • 服务布局(Service Layout)

适用场景

Kratos 适用于使用 Golang 从零快速搭建轻量级、高可靠微服务的场景,尤其适合希望微服务基础设施对业务透明、聚焦于业务开发,或希望借助框架学习微服务完整技术栈(如配置管理、链路追踪、统一日志与指标等)的团队与个人开发者。

社区(Community)

  • 微信群
  • Discord Group
  • QQ 群:716486124

许可证(License)

Kratos 基于 MIT 许可证开源,详见 LICENSE 文件。

贡献者(Contributors)

感谢以下贡献者的杰出贡献:

贡献者