[Remote Procedure Call] gRPC
Updated:
개요
- 사이트
- 라이센스
- Apache 2.0
- 구글이 개발한 RPC 프레임워크
- CNCF incubation project
- 11개의 언어를 대상으로 http/2 기반의 크로스 플랫폼 지원
- 주요 사용 시나리오
- MSA 기반의 서비스 연결
- 모바일, 브라우저와 같은 프론트엔트를 벡엔드 서비스에 연결
- protocol buffers를 IDL(Interface Definition Language)로 사용
- 서비스 종류
- unary RPC
- 클라이언트가 서비스에 단일 요청을 보내고 단일 응답을 받는 RPC
- server streaming RPC
- 클라이언트가 서버에 요청을 보내고 스트림을 가져와 일련의 메시지를 다시 읽는 RPC
- 클라이언트는 메시지가 없을 떄까지 반환된 스트림을 읽으며 메시지 순서 지정을 보장
- client streaming RPC
- 클라이언트가 제공된 스트림을 사용하여 메시지를 서버로 전송하는 RPC
- 클라이언트는 서버가 메시지를 읽고 응답을 반환할 때까지 대기
- bidirectional streaming RPC
- 양뱡향 스트리밍 RPC
- 두 스트림은 독립적으로 작동
- 각 스트립의 메시지 순서는 유지
- unary RPC
- deadlines과 timeouts
- 클라이언트는 타임아웃 설정이 가능하고 시간이 지나면 DEADLINE_EXCEEDED 오류가 발생
- 서버는 타임아웃인지 시간이 얼마나 남았는지 확인 가능
- RPC termination
- 호출 성공 여부를 클라이언트와 서버가 독립적으로 결정
- 타임아웃 상황의 경우 서버는 메세지를 보냈으므로 성공이고 클라이언트는 실패가 될 수 있음
- cancelling an RPC
- 클라이언트와 서버는 언제든 RPC 취소 가능
- 취소전 변경 내용은 롤백되지 않음
언어 별 사용방법
- 예제