文章目录
官方文档 https://grpc.io/
中文版 https://doc.oschina.net/grpc?t=58008
前提:
- 了解rpc
https://blog.youkuaiyun.com/xyc1211/article/details/109611039
GRPC
官方文档 https://grpc.io/
中文版 https://doc.oschina.net/grpc?t=58008
gRPC = HTTP2 通讯协议 + ProtoBuf 序列化
默认使用protoBuf协议, 也可以使用其他协议 json等
了解protobuf
https://blog.youkuaiyun.com/xyc1211/article/details/121244969
服务注册与发现
gRPC开源组件官方并未直接提供服务注册与发现的功能实现
但其设计文档已提供实现的思路,并在不同语言的gRPC代码API中已提供了命名解析和负载均衡接口供扩展。
https://zhuanlan.zhihu.com/p/450777806
使用
1. 在.proto文件中定义 方法、参数
syntax = "proto3";
package rpc_package;
// define a service
service HelloWorldService {
// define the interface and data type
rpc SayHello (HelloRequest) returns (HelloReply) {}
}
// define the data type of request
message HelloRequest {
string name = 1;
}
// define the data type of response
message HelloReply {
string message = 1;
}
2. proto生成 stub桩代码:
下载对应插件
使用 protocol buffer 编译器 protoc
来生成创建应用所需的 客户端和服务端的stub桩代码
项目用那种语言就生成那种语言的代码
- Java
- C++
- C#
- Python
- go
- Node.js
- … …
例如 go的插件是:
$ go install google.golang.org/protobuf/cmd/protoc-gen-go
$ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc
生成桩代码命令是
$ protoc --go_out=. --go_opt=paths=source_relative \
--go-grpc_out=. --go-grpc_opt=paths=source_relative \
xxx.proto
3. 服务端 服务实现
实现服务端 stub桩代码里的服务接口,启动服务端
4. 客户端 调用服务
通过 客户端stub桩代码 调用服务