这是我参与「第五届青训营」笔记创作活动的第2天
大项目基础架构图
上次完成了api部分的初步搭建,今天进行user部分的搭建工作。
一、完成user.thrift第一版
参考easy_note项目,设计如下user.thrift:
namespace go user
enum ErrCode {
SuccessCode = 0
ServiceErrCode = 10001
ParamErrCode = 10002
UserAlreadyExistErrCode = 10003
AuthorizationFailedErrCode = 10004
}
struct BaseResp {
1: i64 status_code
2: string status_message
3: i64 service_time
}
struct User {
1: i64 user_id
2: string username
}
struct CreateUserRequest {
1: string username (vt.min_size = "1")
2: string password (vt.min_size = "1")
}
struct CreateUserResponse {
1: BaseResp base_resp
}
struct MGetUserRequest {
1: list<i64> user_ids (vt.min_size = "1")
}
struct MGetUserResponse {
1: list<User> users
2: BaseResp base_resp
}
struct CheckUserRequest {
1: string username (vt.min_size = "1")
2: string password (vt.min_size = "1")
}
struct CheckUserResponse {
1: i64 user_id
2: BaseResp base_resp
}
service UserService {
CreateUserResponse CreateUser(1: CreateUserRequest req)
MGetUserResponse MGetUser(1: MGetUserRequest req)
CheckUserResponse CheckUser(1: CheckUserRequest req)
}
- 将
user.thrift放在user/idl文件夹下。注意,该项目在wsl2的Ubuntu18.04环境下运行。 - 在搭建好Kitex脚手架的基础上,还需运行
go install github.com/cloudwego/thrift-gen-validator@latest命令,完成对thrift-gen-validator的安装。 - 在
user路径下,运行kitex --thrift-plugin validator -module user -service user idl/user.thrift命令。 - 运行
go mod tidy命令,等待下载。 - 观察项目无报错,进行接下来的开发。
二、参考官方提供的easy_note项目,进行工程文件夹的构建
参考链接:biz-demo/easy_note at main · cloudwego/biz-demo (github.com)
user部分文件夹初步构建如下:
- dal文件夹包含对数据库进行操作的方法,是直接与数据库进行交互的代码
- kitex_gen由Kitex脚手架自动生成,里面包含许多可直接使用的对象和方法,如
user.CreateUserRequest,user.CreateUserResponse等 - pack文件夹中,
user.go用于封装返回的user信息,resp.go用于封装错误信息 - service文件夹中,三个文件分别对三个服务进行了实现,介于接口和dal之间
- handler.go文件包含该rpc微服务提供的三个服务,分别是
CreateUser, CheckUser, MGetUser,供api部分调用,可以认为是接口实现最顶层的文件 - main.go文件为主程序,实现了向etcd的register功能