技术研究院006---B站自用的微服务框架——Kratos
大家都知道微服务有两个痛点,一个是如何拆分微服务,微服务的边界怎么划分制定;二是微服务上了规模之后如何管理,因为只要上了规模,任何小小的问题都可能会被放大,最后导致雪崩效应。
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项目结构如下图所示:
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.comgo-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 helloworldcd 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"
}
最后附上kratosGithub地址:
https://github.com/go-kratos/kratos
技术交流QQ群【JAVA,C++,Python,.NET,BigData,AI】:170933152
CSDN账号:credreamer
开通了个人技术微信公众号:credream,有需要的朋友可以添加相互学习
技术研究院006---B站自用的微服务框架——Kratos相关推荐
- B站微服务框架Kratos详细教程(1)- 安装搭建
Kratos Kratos是bilibili开源的一套Go微服务框架,包含大量微服务相关框架及工具. 名字来源于:<战神>游戏以希腊神话为背景,讲述由凡人成为战神的奎托斯(Kratos)成 ...
- go微服务框架Kratos简单使用总结
Kratos是B站开源的一款go的微服务框架,最近PS5上的 战神·诸神黄昏比较火,主角就是奎托斯.这个框架的名字就取自他. 在进行框架选型时,对比了目前主流的很多go微服务框架,如Zero,最后对比 ...
- 初识golang微服务框架kratos
前言 今天给大家介绍一下Kratos,Kratos 一套轻量级 Go 微服务框架,包含大量微服务相关框架及工具,使用Kratos的原因主要是感觉原来使用的go-kit工具并不是很方便,期望用上krat ...
- 技术研究院005---如何基于DDD构建微服务架构
微服务构建本质上是软件构建过程中长期演进积累的一系列理念.架构原则.工具和最佳实践. 领域驱动设计的软件思想体系和方法论可以用于指导微服务建模.微服务划分.微服务架构设计等相关工作,它可以促使技术人员 ...
- http get请求相同的key_B站微服务框架Kratos详细教程(2)HTTP服务
背景 在像微服务这样的分布式架构中,经常会有一些需求需要你调用多个服务,但是还需要确保服务的安全性.统一化每次的 请求日志或者追踪用户完整的行为等等. 你可能需要一个框架来帮助你实现这些功能.比如说帮 ...
- go微服务框架kratos 安装及使用
windows: 代理和mod 设置 set GO111MODULE=on set GOPROXY=https://goproxy.cn/ 安装protobuf库文件 go get -u github ...
- python的flask微服务-flask微服务框架的初步接触
测试2个关联的系统接口时,经常会遇到被测试系统或被测app的处理内部处理流程会依赖另一个系统的接口返回结果,这时, 常用的做法就是写一个模拟测试桩,用作返回请求时的结果.java可以用servicel ...
- 全网疯传,阿里 P8 技术官的架构笔记外泄:微服务分布式架构实践手册
前言 阿里 P8 大佬的架构笔记:微服务分布式架构实践手册从企业的真实需求出发,理论结合实际,深入讲解 Spring Cloud 微服务和分布式系统的知识. 整份笔记共分为 4 部分: 第一部分:概述 ...
- 容器化技术与微服务结合---结合springcloud微服务框架进行部署(含切换成阿里云docker仓库)(五)
目录 系列 更换成阿里云仓库 开通阿里云镜像服务 创建仓库 本地k8s切换成阿里云的镜像仓库 测试阿里云镜像 准备简单的微服务 eureka 应用配置 k8s配置: demo-a 应用配置 k8s配置 ...
最新文章
- linux下软件的安装[转]
- lua脚本简单编辑及常用指令
- apollo 配置中心_Apollo配置中心搭建笔记
- Oracle区概念总结
- 锁Lock,主要是重入锁和读写锁
- css-布局1-基本属性
- OBS视频采集流程分析
- python 股票估值_隐藏价值的角落:限售股AAP估值及PYTHON实现方法(上)
- Win10 微软拼音添加小鹤双拼以及其他配置
- python高考考题_假如高考考python编程,这些题目你会几个呢?
- 屏幕写画和缩放:ZoomIt【转】
- 什么是嵌入式人工智能
- OSPF你懂多少之经典问题50个
- OpenCV API使用笔记 —— 4. 如何保存视频文件
- 排序算法总结--希尔排序
- 实车、台架功能测试介绍
- AI算法工程师手册,Google软件开发指南,JAX强化学习环境,全国高校生活质量信息汇总,几篇AI前沿论文 | ShowMeAI资讯日报
- Umeng推送消息的坑,Android Service的android:exported详解
- python必背的英语单词怎么写_学习Python必须知道的单英文词,你都会了吗你都背了吗?...
- DRN 与 GAN相关知识
热门文章
- python离散变量_python – 当涉及离散变量时,pymc3与pymc2的困难
- 计算机丢失lib.dll,libprotobuf.dll
- linux中elf文件的作用,Linux中ELF格式文件介绍
- python 进程通信 延时_Python-----进程通信队列
- 监控视频转发方案探讨-内网转外网
- STM8学习笔记---如何在程序中确定寄存器名称
- 在虚拟机下安装Linux
- python中的*和**参数:nn.Sequential(*layers)
- qt-rcc提示找不到资源文件
- Qt网络获取本机网络信息