项目简介
本项目是基于Golang和Kitex框架构建的简单微服务架构web应用,主要用于笔记管理。系统包含三个微服务,分别是对外暴露HTTP接口的api服务,以及内部的note笔记微服务和user用户微服务。微服务之间借助Kitex框架的RPC功能交互,接入Opentelemetry和Jaeger实现观测与链路追踪,还通过ETCD进行服务注册与解析,各服务使用GORM操作MySQL数据库完成CRUD操作。
项目的主要特性和功能
- 微服务架构:将系统拆分为api、note、user三个微服务,提升系统的可扩展性和可维护性。
- 高效通信:微服务间采用Kitex框架的RPC功能交互,使服务间通信更高效可靠。
- 服务注册与发现:通过ETCD实现服务的注册与解析,保障服务间有效通信。
- 链路追踪与观测:接入Opentelemetry和Jaeger,可对系统进行全面观测与链路追踪。
- 数据库操作:note与user服务使用GORM操作MySQL数据库,实现数据的增删改查。
- HTTP接口服务:api服务利用Hertz框架对外提供HTTP接口,方便客户端访问。
安装使用步骤
安装工具
shell
代码生成
通过Makefile进行代码生成,对应命令如下: | Catalog | Command | | -------------------- | ----------------------------------- | | hertz_api_model | make hertz_gen_model | | hertz_api_client | make hertz_gen_client | | kitex_user_client | make kitex_gen_user | | kitex_note_client | make kitex_gen_note | | hertz_api_new | cd cmd/api && make hertz_new_api | | hertz_api_update | cd cmd/api && make hertz_update_api | | kitex_user_server | cd cmd/user && make kitex_gen_server | | kitex_note_server | cd cmd/note && make kitex_gen_server |
启动依赖环境
bash
docker-compose up
启动服务
- 启动user服务
bash cd cmd/user make run
- 启动note服务
bash cd cmd/note make run
- 启动api服务
bash cd cmd/api make run
访问服务
参考 api_request/api_service/api_service_test.go
文件构建客户端,通过HTTP接口进行访问,该测试文件包含IDL中定义的所有api接口服务。示例接口如下:
thrift
service ApiService {
CreateUserResponse CreateUser(1: CreateUserRequest req) (api.post="/v1/user/register")
CheckUserResponse CheckUser(1: CheckUserRequest req) (api.post="/v1/user/login")
CreateNoteResponse CreateNote(1: CreateNoteRequest req) (api.post="/v1/note")
QueryNoteResponse QueryNote(1: QueryNoteRequest req) (api.get="/v1/note/query")
UpdateNoteResponse UpdateNote(1: UpdateNoteRequest req) (api.put="/v1/note/:note_id")
DeleteNoteResponse DeleteNote(1: DeleteNoteRequest req) (api.delete="/v1/note/:note_id")
}
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】