软件简介

Kratos

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

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

Goals

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

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.12 and GO111MODULE=on

Installation

go get -u github.com/bilibili/kratos/tool/kratos
cd $GOPATH/src
kratos new kratos-demo

通过 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

简体中文

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.

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (19)

加载中
go build 好多包加载失败
2019/08/06 18:00
回复
举报

引用来自“龙影”的评论

支持postgreSQL吗?
其实欢迎直接提MR进来~
2019/06/13 00:07
回复
举报
支持postgreSQL吗?
2019/06/12 23:54
回复
举报
4.12日就开源了吧.. 代码被开源是 4.22日.
2019/05/05 15:17
回复
举报
log agent 什么时候开源呢。启动
2019/05/05 12:37
回复
举报
bilibili:既然被开了那就主动开了吧
2019/05/05 12:23
回复
举报
被开源了,索性直接拿出来了
2019/05/05 11:52
回复
举报

引用来自“keep_wan”的评论

bilibili为了推广go也是蛮拼的

引用来自“Y292450104”的评论

是的,主站都开源了😂😂😂
主站都开源了,索性再抽取下再开源,哈哈。
2019/05/05 11:51
回复
举报

引用来自“keep_wan”的评论

bilibili为了推广go也是蛮拼的
是的,主站都开源了😂😂😂
2019/05/05 11:36
回复
举报
取这个名字是要佛挡杀佛,神挡杀神吗
2019/05/05 10:16
回复
举报
更多评论
发表于软件架构专区
2019/06/12 08:21

Kratos v0.1.0 发布,B 站之 Go 微服务框架

经过两个月的更新迭代,Kratos v0.1.0 已经正式发布了。 Kratos是bilibili开源的一套Go微服务框架,包含大量微服务相关框架及工具。 名字来源于:《战神》游戏以希腊神话为背景,讲述由凡人成为战神的奎托斯(Kratos)成为战神并展开弑神屠杀的冒险历程。 Goals 我们致力于提供完整的微服务研发体验,整合相关框架及工具后...

10
29
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表于AI & 大数据专区
06/11 10:49

Bilibili Kratos 框架源码分析(4) -- Kratos Log

用法 flag env type ermark log.v LOG_V int 日志级别:DEBUG:0 INFO:1 WARN:2 ERROR:3 FATAL:4 log.stdout LOG_STDOUT bool 是否标准输出:true、false log.dir LOG_DIR string 日志文件目录,如果配置会输出日志......

0
0
发表了博客
2019/04/10 10:10

kratos微服务框架学习笔记一(kratos-demo)

[toc] kratos微服务框架学习笔记一(kratos-demo) TAG:本系列笔记以demo为主,适合微服务初学者入门,如果有地方我没具体写的话,那肯定是我也没去看,一笔带过了,所以很多细节可能还是需要自行研究哦! 补的话,得看时机,除非不恰饭哈。 常见微服务框架主要有这么几个 gizmo, a microservice toolkit from The New Yor...

0
0
发表了博客
2019/12/24 22:56

go微服务框架kratos学习笔记二(kratos demo 结构)

[toc] 上篇文章go微服务框架kratos学习笔记一(kratos demo)跑了kratos demo 本章来看看demo项目的整体结构。 目录结构 ├─api        # 对外接口 ├─cmd     # main ├─configs   # 配置 ├─internal   │ ├─dao     #数据访问 │ ├─di     #依赖注入 │ ├─model #业务结构体的声明 │ ├─server ...

0
0
发表了博客
2019/04/10 10:10

go微服务框架kratos学习笔记八 (kratos的依赖注入)

go微服务框架kratos学习笔记八(kratos的依赖注入) [toc] 笔记二提过依赖注入,和如何生成,但没有细讲,本文来简单看看kratos的依赖注入。 什么是依赖注入 先来看一个小程序, 创建一个小程序模拟迎宾员问候客人的事件 我们将创建三个结构类型: 1)为迎宾员创建消息 message 2)表达消息的迎宾员 greeter 3)迎宾员问候客人...

0
0
发表了博客
2019/04/10 10:10

go微服务框架kratos学习笔记六(kratos 服务发现 discovery)

go微服务框架kratos学习笔记六(kratos 服务发现 discovery) [toc] 除了上次的warden直连方式外,kratos有另一个服务发现sdk : discovery discovery 可以先简单理解为一个http服务、 它最简单的发现过程可能是这样的: 1、service 向discovery 服务注册 appid 2、client 通过 appid 从discovery 查询 service 的addr 当然 ...

0
0
发表了博客
01/19 18:54

go微服务框架kratos学习笔记七(kratos warden 负载均衡 balancer)

go微服务框架kratos学习笔记七(kratos warden 负载均衡 balancer) [toc] 本节看看kratos的学习负载均衡策略的使用。 kratos 的负载均衡和服务发现一样也是基于grpc官方api实现的。 grpc官方的负载均衡自带了一个round-robin轮询策略、即像一个for循环一样挨个服的发请求、但这显然不能满足我们的需求、于是kratos自带了两...

0
0
发表了博客
2019/12/29 12:51

go微服务框架kratos学习笔记四(kratos warden-quickstart warden-direct方式client调用)

#go微服务框架kratos学习笔记四(kratos warden-quickstart warden-direct方式client调用) [toc] warden direct 本文是学习kratos warden第一节,kratos warden的直连方式client调用,我直接用demo项目做示例 demo-server 先创建一个用作grpc-server kratos new grpc-server 在创建一个调用grpc-server接口的call-server...

0
0
发表于软件架构专区
05/24 14:08

Bilibili Kratos 框架源码分析(3) -- fanout 异步

在写项目代码时如果遇到需要异步处理时, 如异步更新 redis, 异步比对数据等等, 我们的常规处理一般是 MQ. 但有的时候我们的操作其实很简单, 写 MQ 显得又太重了, 那么该如何在程序里实现一个异步功能? 本篇文章就...

0
0
发表了博客
2019/12/30 23:15

go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时])

go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时]) [toc] 本节看看kratos的配置中心paladin(骑士)。 kratos对配置文件进行了梳理,配置管理模块化,如redis有redis的单独配置文件、bm有bm的单独配置文件,及为方便易用。 paladin 本质是一个config SDK客户端,包括了rem...

0
0
发表于开发技能专区
05/12 10:43

Bilibili Kratos 框架源码分析(1) -- 启动流程

这里先吐槽一下 kratos 官方 wiki 写的实在不咋地, 一些很基本的使用方法, 一些很好的功能都没有体现出现, 同时也建议多去 github issue 里去找找答案, 那里面比 wiki 详细很多. 这个系列的文章我会基于 v0.4.2 这...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表于软件架构专区
11/04 09:53

bilibili的开源框架kratos怎么在开发工具里调试?

kratos-demo需要通过go build 编译,然后在命令行执行 ./cmd -conf ../configs 这种方式来运行。 我想在goland 里运行并调试。在program arguments 中设置 -conf ../configs 运行的时候就会报错。 panic: runtime error: invalid memory address or nil pointer dereference 应该是在某一步 参数没有传递进去。但是我deb...

1
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
19 评论
147 收藏
分享
返回顶部
顶部