Skip to content

vnroyalclub/kratos

Repository files navigation

kratos

Language GoDoc

Kratos

Kratos是bilibili开源的一套Go微服务框架,包含大量微服务相关框架及工具。

名字来源于:《战神》游戏以希腊神话为背景,讲述由凡人成为战神的奎托斯(Kratos)成为战神并展开弑神屠杀的冒险历程。

Goals

我们致力于提供完整的微服务研发体验,整合相关框架及工具后,微服务治理相关部分可对整体业务开发周期无感,从而更加聚焦于业务交付。对每位开发者而言,整套Kratos框架也是不错的学习仓库,可以了解和参考到bilibili在微服务方面的技术积累和经验。

v0.8新特性

  • 使用Gin替换BM HTTP引擎
  • 解决BM底层ctx设计缺陷导致的panic问题
  • 新的工具链 支持Gin模板生成

v0.8失去了什么

  • 失去了框架自带的trace链路追踪 因为这样的CTX在旧BM设计缺陷会导致panic
  • 可以使用 opengintracing 这样的中间件来替代 或者自己去实现基于CTX的链路追踪
  • 失去了全局timeout 同样是因为ctx设置全局deadline导致触发parent done导致panic的原因
  • 请求timeout应该在Handler上使用中间件实现 比如 Gin官方社区的中间件 timeout

v0.7新特性

v0.7教程

Features

  • HTTP Blademaster:核心基于gin进行模块化设计,简单易用、核心足够轻量;
  • GRPC Warden:基于官方gRPC开发,集成discovery服务发现,并融合P2C负载均衡;
  • Cache:优雅的接口化设计,非常方便的缓存序列化,推荐结合代理模式overlord
  • Database:集成MySQL/HBase/TiDB,添加熔断保护和统计支持,可快速发现数据层压力;
  • Config:方便易用的paladin sdk,可配合远程配置中心,实现配置版本管理和更新;
  • Log:类似zap的field实现高性能日志库,并结合log-agent实现远程日志管理;
  • Trace:基于opentracing,集成了全链路trace支持(gRPC/HTTP/MySQL/Redis/Memcached);
  • Kratos Tool:工具链,可快速生成标准项目,或者通过Protobuf生成代码,非常便捷使用gRPC、HTTP、swagger文档;

Quick start

Requirments

Go version>=1.13

go get -u github.com/gogo/protobuf
go get -u github.com/gogo/protobuf/protoc-gen-gogofast
go get -u github.com/gogo/googleapis

Installation

GO111MODULE=on && go get -u git.huoys.com/middle-end/kratos/tool/kratos
cd $GOPATH/src
kratos new kratos-demo    # 同时生成grpc、http模块
// kratos new demo --game # 生成游戏服,包括tcp、http
// kratos new demo --grpc # 只生成grpc模块
// kratos new demo --http # 只生成http模块

通过 kratos new 会快速生成基于kratos库的脚手架代码,如生成 kratos-demo

Build & Run

cd kratos-demo/cmd
go build
./cmd -conf ../configs

打开浏览器访问:http://localhost:8000/kratos-demo/start,你会看到输出了Golang 大法好 !!!

快速开始 kratos工具

Documentation

简体中文
FAQ

License

Kratos is under the MIT license. See the LICENSE file for details.


Please report bugs, concerns, suggestions by issues, or join QQ-group 716486124 to discuss problems around source code.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages