[gRPC] gPRC (Google Remote Procedure Calls) 란?

참조

 

개요

  • gRPC에서 클라이언트 응용 프로그램은 마치 로컬 개체인 것처럼 다른 컴퓨터의 서버 응용 프로그램에서 메서드를 직접 호출할 수 있으므로 분산 응용 프로그램 및 서비스를 더 쉽게 만들 수 있습니다.
  • 많은 RPC 시스템에서와 같이 gPRC는 매개변수와 반환 유형을 사용하여 원격으로 호출할 수 있는 메서드를 지정하여 서비스를 정의한다는 아이디어를 기반으로 합니다.
  • 서버 측에서 서버는 이 인터페이스를 구현하고 gRPC 서버를 실행하여 클라이언트 호출을 처리합니다.
  • 클라이언트 측에서 클라이엍느에는 서버와 동일한 방법을 제공하는 Stub 이 있습니다.

 

gPRC 특징

  • gRPC는 HTTP/2 를 기반으로 동작하여 구글에서 만든 데이터 전송 구조인 프로토콜 버퍼를 사용합니다.
  • 프로토콜 버퍼는 csv, Json, xml과 같은 데이터 구조입니다.
  • 프로토콜 버퍼와 다른 데이터 구조와의 차이점은 프로토콜 버퍼의 경우 구글에서 제작하였고 직렬화가 Binary 파일로 되면서 속도가 빠르다는 장점이 있습니다.

 

프로토콜 버퍼 작업

  • 기본적으로 gRPC는 프로토콜 버퍼를 사용합니다.
  • 구조화된 데이터를 직렬화 하기 위한 Google의 오픈 소스 메커니즘을 사용합니다.

 

프로토콜 버퍼 작업 단계

  • 첫 번째 단계는 proto 파일에서 직렬화하려는 데이터의 구조를 정의하는 것입니다.
  • 이것은 .proto 확장자를 가진 일반 텍스트 파일입니다.
  • 프로토콜 버퍼 데이터는 메시지 로 구성됩니다.
  • 여기서 각 메시지는 필드라고 하는 일련의 이름-값 쌍을 포함하는 정보의 작은 논리적 레코드입니다.
message Person {
  string name = 1;
  int32 id = 2;
  bool has_ponycopter = 3;
}
  • 다음으로 데이터 구조를 지정하고 나면 프로토콜 버퍼 컴파일러를 사용하여 proto 정의에서 원하는 언어로 데이터 엑세스 클래스를 생성합니다.
  • 이들은 name() 및 set_name()과 같은 각 필드에 대한 간단한 접근자와 원시 바이트에서 전체 구조를 직렬화/파싱하는 메서드를 제공합니다.
  • 예를 들어, 선택한 언어가 c++ 인 경우 위의 예제에서 컴파일러를 실행하면 Person 이라는 클래스가 생성됩니다.
  • 그런 다음 애플리케이션에서 이 클래스를 사용하여 Person 프로토콜 버퍼 메시지를 채우고 직렬화하고 검색할 수 있습니다.
// The greeter service definition.
service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings
message HelloReply {
  string message = 1;
}
  • gRPC는 protoc 특수 gRPC 플러그인과 함께 사용하여 proto 파일에서 코드를 생성합니다.
  • 생성된 gRPC 클라이언트 및 서버 코드는 물론이고 메시지 유형을 채우고 직렬화하고 검색하기 위한 일반 프로토콜 버퍼 코드를 얻습니다.
728x90

이 글을 공유하기

댓글

Designed by JB FACTORY