gRPC의 rpc 종류
gRPC의 rpc 종류
rest api는 Request/Response을 가집니다. 이와는 다르게 gRPC는 다양한 요청/응답 모델을 제공하고 있습니다. 이런 다양한 통신 모델을 가질 수 있는 이유는 gRPC는 http/2를 기반으로 사용하고 있으며 이에 따라 하나의 커넥션으로 여러개의 데이터를 보낼 수 있는 스트림을 지원하기 때문입니다.
- Unary RPC
하나의 request에 하나의 response를 가지는 모델 - Server Streaming RPC
하나의 request에 여러개의 response를 가지는 모델 - Cleint Streaming RPC
여러개의 request에 하나의 response를 가지는 모델 - Bidirection Streaming RPC
여러개의 request에 여러개의 request를 가지는 모델
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은 호출의 요청 메시지나 응답 메시지 또는 두 메시지 모두 배치할 수 있습니다.
- 클라이언트 스트리밍 메서드
- 메시지를 수신하지 않고도 시작됩니다.
- requestStream 매개변수는 클라이언트에서 메시지를 읽는 데 사용됩니다. 응답 메시지가 반환되면 클라이언트 스트리밍 호출이 완료됩니다.
- 클라이언트가 일련의 메시지를 작성하고 제공된 스트림을 사용하여 다시 서버로 보내는 클라이언트 스트리밍 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);
Author And Source
이 문제에 관하여(gRPC의 rpc 종류), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@s00ny0ung/gRPC의-rpc-종류저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)