在gRPC中,客户端应用程序可以直接在其他计算机上的服务器应用程序上调用方法,就好像它是本地对象一样,从而使您更轻松地创建分布式应用程序和服务。与许多RPC系统一样,gRPC围绕定义服务的思想,指定可通过其参数和返回类型远程调用的方法。在服务器端,服务器实现此接口并运行gRPC服务器以处理客户端调用。在客户端,客户端具有一个存根(在某些语言中仅称为客户端),提供与服务器相同的方法。
默认情况下,gRPC使用协议缓冲区,这是谷歌成熟的开源机制,用于序列化结构化数据(尽管它也可以用于其他数据格式,如JSON)。使用协议缓冲区时,第一步是为要在proto文件中序列化的数据定义结构:这是一个扩展名为.proto的普通文本文件。协议缓冲区数据结构为消息,其中每个消息都是包含一系列名为字段的名称-值对的信息的小逻辑记录。这里有一个简单的例子:
syntax = "proto3";
service Math{
rpc add(Params) returns(Response){}
rpc reduce(Params) returns(Response){}
}
message Params{
int32 num1 = 1;
int32 num2 = 2;
}
message Response{
int32 result = 1;
}
grpc使用protobuf进行数据传输,protobuf是一种数据交换格式,由三部分组成:
- proto文件:使用proto语法的文本文件,用来定义数据格式。proto语法现在有proto2与proto3两个版本,建议使用proto3
- protoc:protobuf编译器将proto文件编译成不同的语言实现&#x