前言
grpc 是一个高性能、开源和通用的 RPC 框架
protocol buffer 是 Google 出品的一种轻量 & 高效的结构化数据存储格式,性能比 JSON、XMS 强很多。
微服务架构中,由于每个服务对应的代码库是独立运行的,无法直接调用,彼此间的通信是个大问题。grpc 可以实现微服务,将大的项目拆分为多个小且独立的业务模块,也就是服务,各服务间使用高效的 protobuf 协议进行 RPC 调用,grpc 默认使用 protocol buffers。
grpc 文档地址:Quick start | Go | gRPC
protobuf 文档地址:Protocol Buffer Basics: Go | Protocol Buffers Documentation
安装 protoc
这里讲的是 Windows 环境下的安装,若为其他系统的设备,按照文档编译安装即可。
下载地址:https://github.com/google/protobuf/releases
可能很多小伙伴因为网速等打不开链接或下载速度慢, 分享一个下载好的
百度网盘 请输入提取码 提取码 s42z
下载完成后,配置全局环境变量:将 protoc/bin 配置到全局变量中
具体的 protoc/bin 路径按照自己的来即可
安装 grpc 和 protobuf
# 安装 grpc
go get google.golang.org/grpc
# 安装 protobuf
go get google.golang.org/protobuf
安装编译protoc的go插件
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
编译.proto文件
example.proto 文件:
syntax = "proto3";
option go_package = ".;proto";
service Example {
// 获取用户列表页
rpc GetUserList(SearchRequest) returns (ListResponse);
}
message SearchRequest {
string query = 1;
int32 page_number = 2;
int32 results_per_page = 3;
}
message InfoResponse {
int32 id = 1;
string password = 2;
string mobile = 3;
string nickName = 4;
uint64 birthDay = 5;
string gender = 6;
int32 role = 7;
}
message ListResponse {
int32 total = 1; // 总数
repeated InfoResponse data = 2;
}
编译:
protoc --go_out=. example.proto
# 生成 grpc
protoc -I . example.proto --go-grpc_out=:.
执行成功之后,会生成 example.pb.go 和 example_grpc.pb.go 文件
注意
若 .proto 文件中没有 service,执行生成 grpc 命令后不会生成 *_grpc.pb.go 文件