大家都知道微服务有两个痛点,一个是如何拆分微服务,微服务的边界怎么划分制定;二是微服务上了规模之后如何管理,因为只要上了规模,任何小小的问题都可能会被放大,最后导致雪崩效应。

Bilibili作为一个大型弹幕视频网站,在竞争日益激烈的互联网行业中,开始重视技术生态的演进,在微服务这块肯定也是相当出色的,今天就和大家推荐一个B站自家开源的微服务框架——Kratos

Kratos 小型轻量级 Go 微服务框架,包含大量微服务相关功能及工具。B站表示:我们研究提供完整的微服务研究体验,整合相关框架工具后,服务管理相关部分可对整体业务开发周期无感,从而进一步聚焦于业务交付。对开发者而言,Kratos 框架框架也是不错的学习经历,可以了解和参考到微服务方面的技术和经验。

Kratos具有以下功能特性:

Kratos项目结构如下图所示:

阿里云轻量服务器宝塔(B站自用的微服务框架)(1)

阿里云轻量服务器宝塔(B站自用的微服务框架)(2)

Kratos如何使用?

Kratos需要需要使用 kratos v2.0.0 以上版本;同时需要安装好对应的依赖环境,以及工具:

接着,你就可以安装 kratos 命令工具:

go get 安装

go get -u github.com/go-kratos/kratos/cmd/kratos/v2 @latest

go install 安装

go install github.com go-kratos/kratos/cmd/kratos/v2 # go 1.16版本以上需要指定版本号或使用最新版 go install github.comgo-kratos/kratos/cmd/kratos/v2@latest

源码编译安装

git clone GitHub - go-kratos/kratos: A Go framework for microservices. cd kratos make install

创建项目

# 创建项目模板 kratos new helloworld cd helloworld # 拉取项目依赖 go mod download # 生成proto模板 kratos proto add api/helloworld/helloworld.proto # 生成proto源码 kratos proto client api/helloworld/helloworld.proto # 生成server模板 kratos proto server api/helloworld/helloworld.proto -t internal/service

阿里云轻量服务器宝塔(B站自用的微服务框架)(3)

项目编译和运行

# 生成所有proto源码、wire等等 go generate ./... # 运行项目 kratos run

阿里云轻量服务器宝塔(B站自用的微服务框架)(4)

测试接口

curl 'http://127.0.0.1:8000/helloworld/kratos' 输出: { "message": "Hello kratos" }

最后附上kratosGithub地址:

https://github.com/go-kratos/kratos

,