gRPCのrpcタイプ

2334 ワード

gRPCのrpcタイプ



rest apiはリクエスト/応答を有する.これとは異なり、gRPCは、複数のリクエスト/応答モデルを提供する.これは、gRPCがhttp/2に基づいてストリームをサポートし、複数のデータを1つの接続に送信できるためである.
  • Unary RPC
  • モデル、1つのリクエストに1つの応答
  • Server Streaming RPC
  • モデルでは、1つのリクエストに複数の応答があります.
  • Cleint Streaming RPC
  • モデルは、複数のリクエストに同時に対応
  • Bidirection Streaming RPC
  • モデルには、複数のリクエストと複数のリクエストがあります.
    https://docs.microsoft.com/ko-kr/aspnet/core/grpc/services?view=aspnetcore-6.0
    syntax = "proto3";
    
    service ExampleService {
      // Unary
      rpc UnaryCall (ExampleRequest) returns (ExampleResponse);
    
      // Server streaming
      rpc StreamingFromServer (ExampleRequest) returns (stream ExampleResponse);
    
      // Client streaming
      rpc StreamingFromClient (stream ExampleRequest) returns (ExampleResponse);
    
      // Bi-directional streaming
      rpc StreamingBothWays (stream ExampleRequest) returns (stream ExampleResponse);
    }
    サービスがメッセージをどのように送信および受信するかは、定義されたメソッドフォーマットに依存します.streamファイルでは、streamキーワードを使用してストリーム呼び出しを指定します.
    streamは、コールのリクエストメッセージ、レスポンスメッセージ、または2つのメッセージを配置することができる.
  • クライアントフロー管理方法
  • メッセージを受信せずに起動します.
  • は、クライアントからメッセージを読み出すためにStreamパラメータを要求する.応答メッセージを返すと、クライアントストリーム呼び出しが完了します.
  • クライアントは一連のメッセージを作成し、提供されたストリームを使用してサーバのクライアントストリームRPCに送信する.
  • クライアントがメッセージの書き込みを完了した後、サーバがメッセージを読み取り、応答を返すのを待つ.
  • Unary RPC
    クライアントからサーバへの単一のリクエスト、サーバは単一の応答
    rpc xxx(yyyRequest) returns (zzzResponse);
    Server Streaming RPC
    クライアントからサーバへの単一のリクエスト.サーバは連続的なストリーム応答です.
    クライアントは、処理が完了するまでストリームデータを受信します.
    rpc xxx(yyyRequest) returns (stream zzzResponse);
    Client Streaming RPC
    クライアントからサーバへの連続ストリーム要求、サーバは単一応答
    サーバは、処理が完了するまでストリームデータを受信します.
    受信中にストリームをキャンセルすることで、クライアント・メッセージを事前に停止できます.
    rpc xxx(stream yyyRequest) returns (zzzResponse);
    Bidirectional Streaming RPC
    クライアントとサーバは、互いに処理が完了するまで、独立したストリームを使用して連続したストリームを伝達します.
    rpc xxx(stream yyyRequest) returns (stream zzzResponse);