当前位置: 首页 > 软件库 > 程序开发 > 微服务框架 >

Kratos

Go 微服务框架
授权协议 MIT
开发语言 Google Go
所属分类 程序开发、 微服务框架
软件类型 开源软件
地区 国产
投 递 者 金霄
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Kratos 是 bilibili 开源的一套 Go 微服务框架,包含大量微服务相关框架及工具。

名字来源于:《战神》游戏以希腊神话为背景,讲述由凡人成为战神的奎托斯(Kratos)成为战神并展开弑神屠杀的冒险历程。

Goals

我们致力于提供完整的微服务研发体验,整合相关框架及工具后,微服务治理相关部分可对整体业务开发周期无感,从而更加聚焦于业务交付。对每位开发者而言,整套Kratos框架也是不错的学习仓库,可以了解和参考到bilibili在微服务方面的技术积累和经验。

Features

  • APIs:协议通信以 HTTP/gRPC 为基础,通过 Protobuf 进行定义;
  • Errors:通过 Protobuf 的 Enum 作为错误码定义,以及工具生成判定接口;
  • Metadata:在协议通信 HTTP/gRPC 中,通过 Middleware 规范化服务元信息传递;
  • Config:支持多数据源方式,进行配置合并铺平,通过 Atomic 方式支持动态配置;
  • Logger:标准日志接口,可方便集成三方 log 库,并可通过 fluentd 收集日志;
  • Metrics:统一指标接口,可以实现各种指标系统,默认集成 Prometheus;
  • Tracing:遵循 OpenTelemetry 规范定义,以实现微服务链路追踪;
  • Encoding:支持 Accept 和 Content-Type 进行自动选择内容编码;
  • Transport:通用的 HTTP/gRPC 传输层,实现统一的 Middleware 插件支持;
  • Registry:实现统一注册中心接口,可插件化对接各种注册中心;

Architecture

Quick start

Requirments

Go version>=1.12 and GO111MODULE=on

Installation

go get -u github.com/bilibili/kratos/tool/kratos
cd $GOPATH/src
kratos new kratos-demo

通过 kratos new 会快速生成基于kratos库的脚手架代码,如生成 kratos-demo

Build & Run

cd kratos-demo/cmd
go build
./cmd -conf ../configs

打开浏览器访问:http://localhost:8000/kratos-demo/start,你会看到输出了Golang 大法好 !!!

快速开始 kratos工具

  • 1,使用的kratos 版本是:v2.2.1 使用项目创建一个带web端和 grpc 服务的。 使用 wire 进行依赖注入。 kratos 的官方网站是: https://go-kratos.dev/docs/ https://go-kratos.dev/blog/go-project-wire 使用之后,这个是和 java 的spring 依赖注入最大的区别的地方。 开始没有太明白,后来才发现

  • 准备工作 本机器这里已经安装好了 go、kratos、proto、wire、make 等所需的工具。 初始化项目目录 进入自己电脑中存放 Go 项目的目录 新建 kratos-shop/service 目录,并进入到新建的目录中 执行 kratos new user 命令并进入 user 目录,执行命令 kratos proto add api/user/v1/user.proto , 这时你在

  • kratos 学习笔记(三) 框架组件 1. API 定义 API 与用户的通信协议,通常是 REST API 和 RPC API 作为传输层协议,而 Kratos 主要参考 Google API 指南,实现了对应通信协议支持,并且遵守了 gRPC API 使用 HTTP 映射功能进行 JSON/HTTP 的支持。 也就是通过定义 proto 即可使用 REST API 和 RPC API,通过类

  • 习惯了这种格式的返回值: { "code":"0", "message":"成功" "captchaId": "0TFqCFHqeGuvYFy3EajN", ... } 今天按照kratos写api发现返回的是这种 { "captchaId": "0TFqCFHqeGuvYFy3EajN", "captcha": "data:image/png;base64,

  • 什么是WebSocket WebSocket 协议主要为了解决基于 HTTP/1.x 的 Web 应用无法实现服务端向客户端主动推送的问题, 为了兼容现有的设施, WebSocket 协议使用与 HTTP 协议相同的端口, 并使用 HTTP Upgrade 机制来进行 WebSocket 握手, 当握手完成之后, 通信双方便可以按照 WebSocket 协议的方式进行交互 WebSocket 使用

  • 在Web开发业务中,通常使用业务状态码来判断业务状态,不使用http状态码。在kratos V2中控制 http 的返回值,在 http 返回值外面返回自己熟悉的结构 在NewHTTPServer中进行使用(替换返回结构) // 过滤,所包含的路由不会经过jwt权限验证 func NewSkipRoutersMatcher() selector.MatchFunc { //完整 todo /包名

  • 问题 有如下callback请求,data会根据type动态变化: pingpong { "type": "PingPong", "data": {} } NewMessage { "type": "NewMessage", "data": { "id": "{{$guid}}", "rootId": "2", "conte

  • 《从零单排Golang》系列,又重新开张了。后续会不定期更新自己学习Golang的笔记跟心得。 这次的话,就介绍一款名为奎爷kratos的微服务框架,以及讲述一下基础的使用机理。 kratos是B站开源的微服务框架,不仅提供了grpc、http协议支持,而且有较为完善的层级架构、微服务中间件以及第三方组件的编写约定,可以说是非常方便上手跟扩展。 要上手kratos,我们可以从两个地方入手: kra

 相关资料
  • 本文向大家介绍微服务哪些框架相关面试题,主要包含被问及微服务哪些框架时的应答技巧和注意事项,需要的朋友参考一下 Dubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点。阿里巴巴近几年对开源社区的贡献不论在国内还是国外都是引人注目的,比如:JStorm 捐赠给 Apache 并加入 Apache 基金会等,为中国互联网人争足了面子,使得阿里巴巴在国人眼里已经从电商升级为一

  • ketchup 是一个基于 dotnet core 的微服务框架。网关:兼容 kong,rpc:grpc支持远程调用。

  • Adnc 是一个轻量级的 .Net Core 微服务开发框架,同时也适用于单体架构系统的开发。支持经典三层与DDD架构开发模式、集成了一系列主流稳定的微服务配套技术栈。

  • Seata 的事务上下文由 RootContext 来管理。 应用开启一个全局事务后,RootContext 会自动绑定该事务的 XID,事务结束(提交或回滚完成),RootContext 会自动解绑 XID。 // 绑定 XID RootContext.bind(xid); // 解绑 XID String xid = RootContext.unbind(); 应用可以通过 RootCon

  • 基本 Nest 微服务是一种使用与HTTP不同的传输层的应用程序。 安装 首先,我们需要安装所需的软件包: $ npm i --save @nestjs/microservices 概述 通常,Nest支持一系列内置的传输器。它们基于 请求-响应 范式,整个通信逻辑隐藏在抽象层之后。多亏了这一点,您可以轻松地在传输器之间切换,而无需更改任何代码行。我们不支持具有基于日志的持久性的流平台,例如 Ka

  • 我在 PLay 2 中将我的应用程序划分为不同的项目。但我刚刚意识到我不知道如何在同一台服务器中运行多个播放应用程序。 有人知道怎么做吗? 让我们假设这是不可能的,因此,我将在同一个根项目中部署多个播放应用程序(微服务将充当插件)。你认为这会打败微服务架构吗?。我会让每个模块独立行动。

  • 我读了一些文章,看了一些视频,但在为这些微服务提供服务方面,没有找到具体的建议。我的理解是,他们应该使用自己的应用程序服务器。 我的问题是它们应该部署在不同的服务器上,还是没关系。 当它们在同一台服务器(计算机)上提供服务时,不会有端口冲突吗?

  • 我是测微计新手。有人能告诉我如何在spring boot中集中管理微服务指标吗? 在哪里可以获得influxdb中所有注册的服务信息、矩阵和存储的度量?