# gozero_grpc **Repository Path**: wuyuan/gozero_grpc ## Basic Information - **Project Name**: gozero_grpc - **Description**: gozero grpc gorm - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-07 - **Last Updated**: 2026-04-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # gozero_grpc 基于 go-zero 框架的 gRPC 微服务示例项目,展示了如何使用 go-zero 构建 RESTful API 和 gRPC 服务的完整架构。 ## 项目简介 本项目实现了一个完整的用户管理微服务,包含以下组件: - **REST API 层**:基于 go-zero 的 HTTP 服务,提供外部访问接口 - **gRPC 服务层**:用户管理核心服务,支持 CreateUser、GetUser、UpdateUser 操作 - **数据访问层**:使用 GORM 实现的数据持久化 ## 技术栈 - Go 1.x - go-zero (微服务框架) - gRPC (远程过程调用) - GORM (数据库 ORM) - MySQL/SQLite (数据库) ## 快速开始 ### 环境要求 - Go 1.18 或更高版本 - protoc 编译器 ### 安装依赖 ```bash go mod tidy ``` ### 编译 protobuf ```bash # 生成 gRPC 代码 protoc --go_out=. --go_opt=paths=source_relative \ --go-grpc_out=. --go-grpc_opt=paths=source_relative \ rpc/protoc/user.proto ``` ### 运行服务 **启动 gRPC 服务:** ```bash cd rpc go run user.go -f etc/user.yaml ``` **启动 REST API:** ```bash cd api go run greet.go -f etc/greet-api.yaml ``` ## 配置说明 ### gRPC 服务配置 (rpc/etc/user.yaml) ```yaml Name: user.rpc Log: ServiceName: user.rpc Mode: console Level: info DataBase: Type: sqlite # 或 mysql DataSource: ./data.db # MySQL: user:password@tcp(localhost:3306)/userdb ListenOn: :8080 ``` ### REST API 配置 (api/etc/greet-api.yaml) ```yaml Name: greet.api Host: localhost Port: 8081 ``` ## API 文档 ### REST API 端点 | 方法 | 路径 | 描述 | |------|------|------| | GET | /greet | 演示接口 | ### gRPC 服务方法 | 方法 | 请求 | 响应 | |------|------|------| | CreateUser | CreateUserRequest | CreateUserResponse | | GetUser | GetUserRequest | GetUserResponse | | UpdateUser | UpdateUserRequest | UpdateUserResponse | ## 项目结构 ``` . ├── api/ # REST API 层 │ ├── etc/ # 配置文件 │ ├── greet.go # 程序入口 │ └── internal/ # 内部实现 │ ├── config/ # 配置定义 │ ├── handler/ # HTTP 处理器 │ ├── logic/ # 业务逻辑 │ ├── svc/ # 服务上下文 │ └── types/ # 请求/响应类型 │ └── rpc/ # gRPC 服务层 ├── etc/ # 配置文件 ├── user.go # 程序入口 ├── userservice/ # gRPC 客户端 └── internal/ # 内部实现 ├── config/ # 配置定义 ├── logic/ # 业务逻辑 ├── model/ # 数据模型 ├── repo/ # 数据仓库 ├── svc/ # 服务上下文 └── server/ # gRPC 服务器 ``` ## 使用示例 ### 通过 gRPC 客户端调用 ```go cli, _ := zrpc.NewClient(zrpc.RpcClientConf{ Endpoints: []string{"localhost:8080"}, }) client := userservice.NewUserService(cli) resp, err := client.CreateUser(context.Background(), &userservice.CreateUserRequest{ Name: "张三", Age: 25, }) ``` ## 许可证 MIT License