实战项目 - Go 语言笔记服务 | 青训营笔记

505 阅读2分钟

实战项目 - Go 语言笔记服务 | 青训营笔记

这是我参与「第三届青训营 -后端场」笔记创作活动的的第6篇笔记

课程背景

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

课程目标

  • 将前面所学的知识应用到项目中
  • 熟悉项目的代码,可以将项目正常运行
  • 熟悉 Kitex/Gorm 的使用

二、课前了解

安装 Docker/Postman/Git

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

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…

四、项目代码介绍

项目代码目录结构介绍

idlthrift / proto 接口定义文件文档/子目录介绍
kitex_genKitex自动生成的代码
pkgconstants常量
errno错误码关于错误码的讨论
middlewareKitex的中间件Kitex Middleware 扩展
boundKitex Transport Pipeline-Bound 扩展什么是Kitex的Transport Pipeline-Bound 扩展
tracerJarger 初始化
cmdapidemoapi服务的业务代码handlers : 封装了 api 的业务逻辑rpc : 封装了调用其它 rpc 服务的逻辑
notedemonote服务的业务代码dal : 封装了数据库的访问逻辑service: 封装了业务逻辑rpc : 封装了调用其它 rpc 服务的逻辑pack : 数据打包/处理
userdemouser服务的业务代码

项目运行

运行基础依赖

docker-compose up
复制代码

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

运行 demonote 服务

cd cmd/note 
sh build.sh 
sh output/bootstrap.sh
复制代码

运行 demouser 服务

cd cmd/user 
sh build.sh 
sh output/bootstrap.sh
复制代码

运行 demoapi 服务

cd cmd/api 
chmod +x run.sh 
./run.sh