Updated:

less than 1 minute read

개요

  • 사이트
  • 라이센스
    • 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
      • 두 스트림은 독립적으로 작동
      • 각 스트립의 메시지 순서는 유지
  • deadlines과 timeouts
    • 클라이언트는 타임아웃 설정이 가능하고 시간이 지나면 DEADLINE_EXCEEDED 오류가 발생
    • 서버는 타임아웃인지 시간이 얼마나 남았는지 확인 가능
  • RPC termination
    • 호출 성공 여부를 클라이언트와 서버가 독립적으로 결정
    • 타임아웃 상황의 경우 서버는 메세지를 보냈으므로 성공이고 클라이언트는 실패가 될 수 있음
  • cancelling an RPC
    • 클라이언트와 서버는 언제든 RPC 취소 가능
    • 취소전 변경 내용은 롤백되지 않음


언어 별 사용방법

  • 예제