这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天
这里是实战项目Go语言笔记服务
环境配置
安装Docker/Postman/Git
- 安装Minikube或Docker Desktop
- 可以使用Minikube或者使用Docker Desktop启Docker
- 安装Postman
- 安装Git安装教程
HTTP框架Hertz初体验
通过阅读www.cloudwego.io/zh/docs/her…尝试运行Hertz的示例代码
- Hertz框架地址: github.com/cloudwego/h…
RPC框架Kitex初体验
通过阅读www.cloudwego.io/zh/docs/kit…尝试运行Kitex的示例代码
- kitex 暂时没有针对 Windows 做支持,如果本地开发环境是 Windows 建议使用 WSL2
- KItex 框架地址: github.com/cloudwego/k…
Gorm初体验
通过阅读gorm.cn/docs/#Insta…尝试运行Gorm的示例代码
- Gorm 框架地址: github.com/go-gorm/gor…
其他知识
了解Etcd和Opentracing
了解etcd是什么以及opentracing 是什么
什么是IDL以及IDL语法
- 了解 IDL 是什么 zh.m.wikipedia.org/zh-hans/%E6…
- Thrift IDL 语法 thrift.apache.org/docs/idl
- proto3 IDL 语法 developers.google.com/protocol-bu…
项目介绍
项目简介
EasyNote提供了一套比较完整的笔记后端API服务局)
| 服务名称 | 模块介绍 | 技术框架 | 传输协议 | 注册中心 | 链路追踪 |
|---|---|---|---|---|---|
| demoapi | API服务 | Gorm, Kitex, Hertz | http | etcd | Opentracing |
| demouser | 用户数据管理 | Gorm, Kitex | Protobuf | etcd | opentracing |
| demonote | 笔记数据管理 | Gorm, Kitex | Thrift | etcd | opentracing |
项目服务调用关系
项目模块功能介绍
项目技术栈
项目相关使用框架资料
-
RPC框架Kitex
- 框架文档:www.cloudwego.io/zh/docs/kit…
- Kitex-etcd拓展:github.com/kitex-contr…
- Kitex-OpenTracing拓展:www.cloudwego.io/zh/docs/kit…
-
ORM框架Gorm
- 框架:gorm.cn/zh_CN/
- Gorm-Opentracing拓展:github.com/go-gorm/ope…
-
HTTP框架Hertz
- 框架:www.cloudwego.io/zh/docs/her…
- Hertz-JWT拓展:www.cloudwego.io/zh/docs/her…
项目代码介绍
项目代码目录结构介绍
-
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服务的业务代码:
-
user - demouser服务的业务代码:
- dal: 封装了数据库的访问逻辑
- service: 封装了业务逻辑
- rpc: 封装了调用其他rpc服务的逻辑
- pack: 数据打包/处理
-
项目运行
运行依赖基础
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
References
- 青训营资料汇总:juejin.cn/post/718822…