gRPC 基础教程之二

SpringBoot 整合 gRPC

gRPC 的四种服务类型定义

  • 一个简单 RPC,客户端使用存根发送请求到服务器并等待响应返回,就像平常的函数调用一样。

    1
    rpc GetFeature(Point) returns (Feature) {}
  • 一个服务器端流式 RPC,客户端发送请求到服务器,拿到一个流去读取返回的消息序列。客户端读取返回的流,直到里面没有任何消息。通过在响应类型前插入 stream 关键字,可以指定一个服务器端的流方法。

    1
    rpc ListFeatures(Rectangle) returns (stream Feature) {}
  • 一个 客户端流式 RPC,客户端写入一个消息序列并将其发送到服务器,同样也是使用流。一旦客户端完成写入消息,它等待服务器完成读取返回它的响应。通过在请求类型前指定 stream 关键字来指定一个客户端的流方法。

    1
    rpc RecordRoute(stream Point) returns (RouteSummary) {}
  • 一个双向流式 RPC 是双方使用读写流去发送一个消息序列。两个流独立操作,因此客户端和服务器可以以任意喜欢的顺序读写:比如,服务器可以在写入响应前等待接收所有的客户端消息,或者可以交替地读取和写入消息,或者其他读写的组合,每个流中的消息顺序都会被预留。通过在请求和响应前加 stream 关键字去制定方法的类型。

    1
    rpc RouteChat(stream RouteNote) returns (stream RouteNote) {}