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

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

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

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

Kratos具有以下功能特性:

  • APIs:协议通信以 HTTP/gRPC 为基础,通过 Protobuf 进行定义;
  • Errors:通过Protobuf的Enum被认为是错误码定义,以及工具生成识别接口;
  • 元数据:在协议通信 HTTP/gRPC 中,通过中间件规范化服务元信息传递;
  • Config:支持多数据源方式,进行配置合并合并平,通过Atomic方式支持动态配置;
  • 记录器:标准日志接口,可方便集成三方日志库,可通过流畅的收集日志;
  • Metrics:统一指标接口,可以实现各种指标系统,默认集成Prometheus;
  • Tracing:遵循OpenTelemetry规范,以实现微服务追踪定义;
  • 编码:支持 Accept 和 Content-Type 进行自动选择内容编码;
  • 传输:通用的HTTP / gRPC层,实现统一的中间件插件支持;
  • 注册处:实现统一注册接口,可插件化对接各种注册中心;
  • 验证:通过Protobuf统一定义验证规则,并同时适用于HTTP/gRPC服务。
  • SwaggerAPI : 通过集成利用Swagger插件能够自动生成Swagger API json并启动一个内置的Swaager UI服务。

Kratos项目结构如下图所示:

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

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

Kratos如何使用?

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

  • go
  • protoc
  • protoc-gen-go

接着,你就可以安装 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

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页