grpc架构及原理

gRPC 采用protocol buffers 来做为它的接口定义语言 IDL 在protobuf文件 中定义好服务接口的参数和返回值类型 然后通过提供的编译器来生成客户端和服务端的具体实现代码

这样在 gRPC 里,客户端应用可以像调用本地对象一样调用另一台服务器上对应的方法。

服务定义

grpc可以定义四种服务方法

  1. Unary RPCs

    rpc SayHello(HelloRequest) returns (HelloResponse)
  2. Server streaming RPCs

    rpc LotsOfReplies(HelloRequest) returns (stream HelloResponse);
  3. Client streaming RPCs

    rpc LotsOfGreetings(stream HelloRequest) returns (HelloResponse);
  4. Bidirectional streaming RPCs

    rpc BidiHello(stream HelloRequest) returns (stream HelloResponse);

实现

通过编译器把proto文件中定义好的接口生成相应客户端服务端侧代码

服务端

实现接口定义的方法 并且提供一个grpc服务器来处理客户端调用 grpc底层负责解码请、执行服务方法、编码响应

客户端

客户端有一个本地对象叫stub 它也实现了服务中定义的相同的方法 客户端通过正确的封装参数在本地通过stub调用方法 grpc会把请求发送到服务端并且返回响应

Last updated

Was this helpful?