B站这套自用的微服务框架,强推!

266次阅读  |  发布于3年以前

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

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