翻译为:English
关于Kratos
这个名字灵感来自于基于希腊神话的游戏"战神"。它讲述了克雷托斯从凡人成为战神并发起杀神屠杀的冒险故事。
Kratos是由golang实现的面向微服务的治理框架,它提供了便捷的功能,帮助您从零开始快速构建一个防弹应用程序,例如:
- 通信协议基于Protobuf定义的HTTP/gRPC。
- 抽象的传输层支持:HTTP / gRPC。
- 强大的中间件设计,支持:追踪(OpenTelemetry)、指标(默认为Prometheus)、恢复等。
- 注册中心接口可通过插件连接各种集中式注册中心。
- 标准日志接口便于集成第三方日志库,日志通过Fluentd收集。
- 自动支持基于Accept和Content-Type的内容编码选择。
- 支持多个数据源的配置和动态配置(使用原子操作)。
- 在HTTP/gRPC协议中使用统一的元数据传输方法。
- 您可以在protos中定义错误并使用protoc-gen-go生成枚举。
- 您可以在Protobuf中定义HTTP/gRPC服务支持的验证规则。
- Swagger API自动生成,通过添加Swagger插件可以启动内嵌的Swagger UI端点。
Kratos易于使用、功能强大,并提供了构建大型、健壮应用程序所需的工具。
学习Kratos
Kratos拥有最广泛和全面的文档和示例库,使开始使用该框架变得轻而易举。
我们还提供了一个现代模板。这个模板应该有助于减少设置现代项目所需的工作。
目标
Kratos提高您的生产力。通过整合优秀资源并提供进一步支持,程序员可以摆脱在分布式系统和软件工程领域可能遇到的大多数问题,从而只专注于业务的发布。此外,对于每个程序员来说,Kratos也是一个理想的学习仓库,涵盖了微服务的许多方面,可以丰富他们的经验和技能。
原则
- 简单:适当的设计,简单易懂的代码。
- 通用:涵盖业务开发的各种实用工具。
- 高效:加快业务升级的效率。
- 稳定:在生产环境中验证过的基础库具有高可测试性、高覆盖率以及高安全性和可靠性的特点。
- 健壮:通过高质量的基础库消除误用。
- 高性能:最佳性能,不包括在unsafe情况下的黑客优化。
- 可扩展性:适当设计的接口,您可以扩展实用工具,如基础库以满足进一步需求。
- 容错:针对故障设计,增强对Kratos中SRE的理解和实践,以实现更强的健壮性。
- 工具链:包括广泛的工具链,如缓存的代码生成、lint工具等。
入门
通过docker创建一个kratos游乐场:
docker run -it --rm -p 8000:8000 --workdir /workspace golang
apt-get update && apt-get -y install protobuf-compiler
export GOPROXY=https://goproxy.io,direct
go install github.com/go-kratos/kratos/cmd/kratos/v2@latest && kratos upgrade
kratos new helloworld
cd helloworld/ && go mod tidy
kratos run
使用浏览器打开并访问:http://localhost:8000/helloworld/kratos
,kratos程序正在运行!
如果您需要更多信息,请访问kratos的文档。
安全漏洞
如果您在Kratos中发现安全漏洞,请通过go-kratos@googlegroups.com向tonybase发送电子邮件。所有安全漏洞都将得到及时处理。
社区
贡献者
感谢您考虑为Kratos框架做出贡献!贡献指南可以在Kratos文档中找到。
许可证
Kratos框架是根据MIT许可证授权的开源软件。
致谢
以下项目对kratos的设计产生了特别的影响。
- go-kit/kit 是一个用于在go中构建微服务的编程工具包。
- asim/go-micro 是一个分布式系统开发框架。
- google/go-cloud 是go云开发工具包。
- zeromicro/go-zero 是一个包含许多内置工程实践的Web和RPC框架。
- beego/beego 是一个包括RESTful API、Web应用和后端服务的Web框架。