RPC 服务
基于 Protocol Buffers 的高性能 gRPC 微服务框架
jzero new your_project --frame rpc
特性
- Protocol Buffers 定义服务接口
- gRPC 高性能二进制协议
- 字段验证(buf.validate)
- 多 proto 文件支持
- 中间件配置支持
- 类型安全接口
- 自动生成 zrpc 客户端
- 服务网格就绪
快速开始指南
RPC 服务模板指南
概述
RPC 服务模板基于 Protocol Buffers 提供高性能的微服务框架。通过 Proto 描述语言定义服务接口,支持自动代码生成和类型安全的通信。
核心特性
1. Proto 描述语言
使用 Protocol Buffers 定义服务接口:
syntax = "proto3";
package user;
option go_package = "./user";
service UserService {
rpc CreateUser(CreateUserRequest) returns (CreateUserResponse);
}
message CreateUserRequest {
string name = 1;
string email = 2;
}
message CreateUserResponse {
int64 id = 1;
string name = 2;
}2. 字段验证
使用 buf.validate 进行字段验证:
import "validate/validate.proto";
message CreateUserRequest {
string name = 1 [(validate.rules).string.min_len = 1];
string email = 2 [(validate.rules).string.email = true];
}3. 中间件支持
支持在服务中配置中间件,用于认证、日志、限流等功能。
常用命令
添加 Proto 文件
将在 desc/proto 文件夹下新增 proto 文件:
# Service 为 Test
jzero add proto test生成代码
# 生成服务代码
jzero gen
# 基于变更文件生成
jzero gen --git-change
# 指定描述文件目录或文件生成
jzero gen --desc desc/
jzero gen --desc desc/proto/user.proto生成客户端
# 生成 zrpc 客户端
jzero gen zrpcclient项目结构
.
├── desc/ # 描述文件目录
│ └── proto/ # Proto 描述文件
│ └── user.proto # 用户服务 Proto 定义
├── internal/
│ ├── logic/ # 业务逻辑
│ ├── server/ # gRPC 服务器
│ ├── svc/ # 服务上下文
│ └── middleware/ # 中间件
└── cmd/
└── server.go # 服务入口开发流程
- 添加 Proto 文件:运行
jzero add proto test在 desc/proto/ 目录创建 proto 文件 - 生成代码:运行
jzero gen生成代码 - 实现逻辑:在
internal/logic/中实现业务逻辑 - 生成客户端:运行
jzero gen zrpcclient生成客户端