Go微服务框架:Go-Kratos学习笔记


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、Kratos(奎托斯)是什么?

简介

Kratos 一套轻量级 Go 微服务框架,包含大量微服务相关框架及工具。

名字起源

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

目标

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

原则
Go Kratos微服务框架简介

Kratos架构图

在这里插入图片描述

二、Kraotos(奎托斯)快速开始

照着命令敲就行

# 1. 安装库
# 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
# make install 安装
git clone https://github.com/go-kratos/kratos
cd kratos
make install


# 2. 创建项目
# 创建项目模板
kratos new studykratos01
 - 备选方案:kratos new studykratos01 -r https://gitee.com/go-kratos/kratos-layout.git
$ cd studykratos01
$ go generate ./...
$ go build -o ./bin/ ./...
$ ./bin/studykratos01 -conf ./configs

cd helloworld
# 拉取项目依赖
go mod download
# 生成proto模板
kratos proto add api/helloworld/helloworld.proto
# 生成(客户端)proto源码
kratos proto client api/helloworld/helloworld.proto
# 生成(服务端)proto源码
kratos proto server api/helloworld/helloworld.proto -t internal/service
# 编译
 go generate ./...
# 启动
kratos run

Kratos初始化成的文件树及解释

├── Dockerfile  
├── LICENSE
├── Makefile  
├── README.md
├── api // 下面维护了微服务使用的proto文件以及根据它们所生成的go文件
│  └── helloworld
│      └── v1
│          ├── error_reason.pb.go
│          ├── error_reason.proto
│          ├── error_reason.swagger.json
│          ├── greeter.pb.go
│          ├── greeter.proto
│          ├── greeter.swagger.json
│          ├── greeter_grpc.pb.go
│          └── greeter_http.pb.go
├── cmd  // 整个项目启动的入口文件
│  └── server
│      ├── main.go
│      ├── wire.go  // 我们使用wire来维护依赖注入
│      └── wire_gen.go
├── configs  // 这里通常维护一些本地调试用的样例配置文件
│  └── config.yaml
├── generate.go
├── go.mod
├── go.sum
├── internal  // 该服务所有不对外暴露的代码,通常的业务逻辑都在这下面,使用internal避免错误引用
│   ├── biz   // 业务逻辑的组装层,类似 DDD 的 domain 层,data 类似 DDD 的 repo,而 repo 接口在这里定义,使用依赖倒置的原则。
│  │  ├── README.md
│  │  ├── biz.go
│  │  └── greeter.go
│  ├── conf  // 内部使用的config的结构定义,使用proto格式生成
│  │  ├── conf.pb.go
│  │  └── conf.proto
│  ├── data  // 业务数据访问,包含 cache、db 等封装,实现了 biz 的 repo 接口。我们可能会把 data 与 dao 混淆在一起,data 偏重业务的含义,它所要做的是将领域对象重新拿出来,我们去掉了 DDD 的 infra层。
│  │  ├── README.md
│  │  ├── data.go
│  │  └── greeter.go
│  ├── server  // http和grpc实例的创建和配置
│  │  ├── grpc.go
│  │  ├── http.go
│  │  └── server.go
│  └── service  // 实现了 api 定义的服务层,类似 DDD 的 application 层,处理 DTO 到 biz 领域实体的转换(DTO -> DO),同时协同各类 biz 交互,但是不应处理复杂逻辑
│      ├── README.md
│      ├── greeter.go
│      └── service.go
└── third_party  // api 依赖的第三方proto
    ├── README.md
    ├── google
    │  └── api
    │      ├── annotations.proto
    │      ├── http.proto
    │      └── httpbody.proto
    └── validate
        ├── README.md
        └── validate.proto

Kratos基础原理:依赖注入

在这里插入图片描述

图解Kraotos框架,方便大家记住,以及按照规范来写程序

在这里插入图片描述


参考

Kraotos官网文档

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值