큐범
Just do debug
큐범
전체 방문자
오늘
어제
  • 전체보기 (128)
    • 회고 (4)
    • JAVA (16)
      • JAVA 기초 (18)
      • JAVA Algorithm, Datastruct (13)
    • Spring (11)
    • Micro Service Architecture (3)
    • JPA (6)
    • gRPC (4)
    • Network (8)
    • Process (7)
    • Cloud (4)
    • Python (10)
    • Web(vue) (2)
    • UMC (1)
    • DB (9)
    • CS (1)
    • Clean Code (1)
    • TDD (9)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
큐범

Just do debug

gRPC

[gRPC] Protocol Buffere(proto3) 소개, 사용법

2022. 12. 29. 00:13

Protocol Bufferes

구조화된 데이터를 직렬화 하기 위한 구글의 언어 중립적, 확장 가능한 메커니즘이다.

데이터를 한 번 구성하는 방법을 정의한 후에 특수 생성된 소스 코드를 사용하여 다양한 데이터 스트림과 다양한 언어를 사용하여 구조화된 데이터를 쉽게 쓰고 읽을 수 있다.

 

Protocol Buffere은 IDL로서 data structure를 정의한 다음, proto파일을 protocol buffere compiler를 통해 컴파일한다. 컴파일된 소스코드를 사용하여 데이터를 읽고 쓴다.

 

Protocol Bufferes는 현재 Java, Python, Objective-C, C++을 지원하고 proto3의 경우 Kotlin, Dart, Go, Ruby,  C#을 추가적으로 지원한다.

 

Proto3

서버는 클라이언트로부터 응답(Response)를 하는데 거기서 대부분 들어가는 statusCode와 statusMwssage가 있습니다. 아래의 예시 코드를 통해서 다음과 같이 구성할 수 있습니다.

Code

syntax = "proto3";
option java_package = "com.grpc.education";
option java_multiple_files = true;
package education;

message BasicResponse {
  int32 userNum = 1;
  string statusCode = 2;
  string statusMessage = 3;
}

BasicResponse 메시지 선언에서 볼 수 있는 것은 메시지를 구성하는 데이터에 대해서 각각 선언을 해주는 형식을 가진다. 

Field 특징

Field Types은 scalar types, enum, fild type선언이 가능하다.

각 field는 고유한 field 번호를 갖는다.

field 번호에 따라 다른 인코딩 방식 - 1~15 방식이 효율적이다.

  • 1~15 1Byte
  • 16~2047 2byte

 

Proto  장단점

Proto 장점

1. 데이터의 크기가 작다.

데이터의 크기가 작은 경우, 통신이 빠르다는 이점이 있다.

2. proto <-> json 전환 유틸을 지원한다.

3. xml비해 3~10배 작고 20~100배 빠르고 더 간결하고 덜 모호하고 더 쉬운 데이터 엑세스 클래스를 제공. <- 공식문서

 

 

Proto 단점

1. Proto 포맷에 대한 사전지식이 요구된다.

2. 바이트 형태로 인해서 가독성 저하된다.

 

 

 

Reference.

 

Protocol Buffers  |  Google Developers

Protocol buffers are a language-neutral, platform-neutral extensible mechanism for serializing structured data.

developers.google.com

 

    'gRPC' 카테고리의 다른 글
    • [gRPC] gRPC 사용후기
    • [gRPC] gRPC 특징, 장단점
    • [gRPC] gRPC 개념, RPC, IDL비교(XML, JSON, Protocol Buffer)
    큐범
    큐범

    티스토리툴바