第六节:实战项目 - Go 语言笔记服务

讲得内容就是大概地过了一下这个项目,因为内容太多就把学习手册贴这了

这个项目用到了很多新东西,例如RPC 框架, kitex 和链路追踪

我基本上是走马观花地看了一下,真要掌握还得自己写一遍


一、课程背景与目标

课程背景

在大家已经学完前 5节 Go 原理与实践课程的基础上,通过项目实战帮助大家把前面学过的知识应用起来

课程目标

  • 将前面所学的知识应用到项目中

  • 熟悉项目的代码,可以将项目正常运行

  • 熟悉 Kitex/Gorm 的使用

二、课前了解

安装 Docker/Postman/Git

  • 安装 Minikube 或 Docker Desktop 安装教程

  • 可以使用 Minikube 或者使用 Docker Desktop 启动 Docker

  • 安装 Postman

  • 安装 Git 安装教程

Kitex 初体验

通过阅读 www.cloudwego.io/zh/docs/kit… 尝试运行 Kitex 的示例代码

  • kitex 暂时没有针对 Windows 做支持,如果本地开发环境是 Windows 建议使用 WSL2

Gorm 初体验

通过阅读 gorm.cn/docs/#Insta… 尝试运行 Gorm 的示例代码

了解 Etcd和Opentracing

了解 etcd 是什么以及 opentracing 是什么

三、项目介绍

项目简介

EasyNote 提供了一套比较完整的笔记后端API服务.

项目模块介绍

image.png

项目服务调用关系

image.png

项目模块功能介绍

image.png

项目技术栈

image.png

项目相关的使用框架资料

框架文档地址 github地址 拓展文档
RPC框架Kitex 框架文档 www.cloudwego.io/zh/docs/kit… github.com/cloudwego/k…
Kitex-etcd扩展 github.com/kitex-contr… github.com/kitex-contr… www.cloudwego.io/zh/docs/kit…www.cloudwego.io/zh/docs/kit…
Kitex-OpenTracing扩展 www.cloudwego.io/zh/docs/kit… github.com/kitex-contr… www.cloudwego.io/zh/docs/kit…
ORM框架Gorm 框架 gorm.cn/zh_CN/ github.com/go-gorm/gor…
Gorm-Opentracing扩展 github.com/go-gorm/ope… github.com/go-gorm/ope… gorm.cn/zh_CN/docs/…
HTTP框架Gin 框架 github.com/gin-gonic/g… github.com/gin-gonic/g…
Gin-JWT扩展 github.com/appleboy/gi… github.com/appleboy/gi…

四、项目代码介绍

项目代码目录结构介绍

idl thrift / proto 接口定义文件 文档/子目录介绍
kitex_gen Kitex自动生成的代码
pkg constants 常量
errno 错误码 关于错误码的讨论
middleware Kitex的中间件 Kitex Middleware 扩展
bound Kitex Transport Pipeline-Bound 扩展 什么是Kitex的Transport Pipeline-Bound 扩展
tracer Jarger 初始化
cmd api demoapi服务的业务代码 handlers : 封装了 api 的业务逻辑rpc : 封装了调用其它 rpc 服务的逻辑
note demonote服务的业务代码 dal : 封装了数据库的访问逻辑service: 封装了业务逻辑rpc : 封装了调用其它 rpc 服务的逻辑pack : 数据打包/处理
user demouser服务的业务代码

项目运行

运行基础依赖

1
2
docker-compose up
复制代码

执行上述命令启动 MySQL、Etcd、Jaeger 的 docker 镜像

运行 demonote 服务

1
2
3
4
cd cmd/note 
sh build.sh
sh output/bootstrap.sh
复制代码

运行 demouser 服务

1
2
3
4
cd cmd/user 
sh build.sh
sh output/bootstrap.sh
复制代码

运行 demoapi 服务

1
2
3
4
cd cmd/api 
chmod +x run.sh
./run.sh
复制代码

参考文档