大家都知道微服务有两个痛点,一个是如何拆分微服务,微服务的边界怎么划分制定;二是微服务上了规模之后如何管理,因为只要上了规模,任何小小的问题都可能会被放大,最后导致雪崩效应。
Bilibili作为一个大型弹幕视频网站,在竞争日益激烈的互联网行业中,开始重视技术生态的演进,在微服务这块肯定也是相当出色的,今天就和大家推荐一个B站自家开源的微服务框架——Kratos。
Kratos 小型轻量级 Go 微服务框架,包含大量微服务相关功能及工具。B站表示:我们研究提供完整的微服务研究体验,整合相关框架工具后,服务管理相关部分可对整体业务开发周期无感,从而进一步聚焦于业务交付。对开发者而言,Kratos 框架框架也是不错的学习经历,可以了解和参考到微服务方面的技术和经验。
Kratos具有以下功能特性:
Kratos项目结构如下图所示:
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.com/go-kratos/kratos/cmd/kratos/v2@latest
源码编译安装
git clone https://github.com/go-kratos/kratos
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
项目编译和运行
# 生成所有proto源码、wire等等
go generate ./...
# 运行项目
kratos run
测试接口
curl 'http://127.0.0.1:8000/helloworld/kratos'
输出:
{
"message": "Hello kratos"
最后附上kratos的Github地址:https://github.com/go-kratos/kratos/
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8