1. 程式人生 > >grpc型別

grpc型別

gRPC 基於如下思想:定義一個服務, 指定其可以被遠端呼叫的方法及其引數和返回型別。gRPC 預設使用 protocol buffers 作為介面定義語言,來描述服務介面和有效載荷訊息結構

service HelloService {
  rpc SayHello (HelloRequest) returns (HelloResponse);
}

message HelloRequest {
  required string greeting = 1;
}

message HelloResponse {
  required string reply = 1;
}

grpc 支援定義四類服務方法:單向RPC、服務端流式RPC、客戶端流式RPC、雙向流式RPC

  • 單項 RPC,即客戶端傳送一個請求給服務端,從服務端獲取一個應答,就像一次普通的函式呼叫。
rpc SayHello(HelloRequest) returns (HelloResponse){
}

 

  • 服務端流式 RPC,即客戶端傳送一個請求給服務端,可獲取一個數據流用來讀取一系列訊息。客戶端從返回的資料流裡一直讀取直到沒有更多訊息為止。
rpc LotsOfReplies(HelloRequest) returns (stream HelloResponse){
}
  • 客戶端流式 RPC,即客戶端用提供的一個數據流寫入併發送一系列訊息給服務端。一旦客戶端完成訊息寫入,就等待服務端讀取這些訊息並返回應答
rpc LotsOfGreetings(stream HelloRequest) returns (HelloResponse) {
}
  • 雙向流式 RPC,即兩邊都可以分別通過一個讀寫資料流來發送一系列訊息。這兩個資料流操作是相互獨立的,所以客戶端和服務端能按其希望的任意順序讀寫,例如:服務端可以在寫應答前等待所有的客戶端訊息,或者它可以先讀一個訊息再寫一個訊息,或者是讀寫相結合的其他方式。每個資料流裡訊息的順序會被保持。
rpc BidiHello(stream HelloRequest) returns (stream HelloResponse){
}