본문 바로가기
Old/Network

Protobuf

by onenewkong 2024. 1. 22.

Protocol Buffers

  • Google에서 개발한 데이터 직렬화 형식으로, 구조화된 데이터를 이진 형식으로 효율적이고 컴팩트하게 저장하여 네트워크 연결을 통해 더 빠르게 전송할 수 있음
  • 작성된 프로그램을 다른 플랫폼으로 쉽게 포팅할 수 있고, 다양한 응용프로그램에서 사용할 수 있는 구조화된 데이터를 만드는 효율적이고 강력한 방법
  • 언어 독립적 구문을 사용하면 선택한 서로 다른 프로그래밍 언어를 사용하여 작성된 프로그램이 서로 안정적으로 통신할 수 있음
  • 구조화된 데이터는 바이너리 형식으로 저장되기 때문에 XML이나 JSON과 같은 텍스트 기반 형식보다 훨씬 작아 네트워크를 통한 전송이 더 빠름
  • 확장하기 쉽게 설계되어 빠르게 변화하는 데이터 구조와 새로운 기능을 처리하는 데 이상적

 

활용

  • 시스템 간의 데이터 스트림으로 사용할 수 있는 효율적인 API를 만드는 데 사용할 수 있음
  • 응용 프로그램 간의 RPC 통신에 사용 가능
  • 애플리케이션이 동일한 메시지 구조를 사용하여 데이터를 단순히 직렬화 및 역직렬화할 수 있으므로 애플리케이션이 서로 효율적으로 쉽게 통신할 수 있음

 

응용 프로그램 간 RPC 통신

RPC: 응용 프로그램이 네트워크를 통해 서로 통신할 수 있도록 하는 통신 유형

  • 클라이언트에서 서버로 요청을 보내고 응답 받는 방식으로 작동
  • 요청은 일반적으로 매개변수 및 반환 값과 같이 실행해야 하는 절차에 대한 정보가 포함된 데이터 패킷으로 전송됨
  • 서버가 패킷을 수신하면 이를 처리하고 관련 데이터 또는 결과와 함께 응답을 반환

 

gRPC

google 사에서 개발한 오픈소스 RPC 프레임워크

기능 gRPC HTTP API
계약 필수 OpenAPI
프로토콜 HTTP/2 HTTP
페이로드 Protobuf JSON
규범 엄격한 사양 느슨함, 모든 HTTP가 유효함
스트리밍 클라이언트, 서버, 양방향 클라이언트, 서버
브라우저 지원 N Y
보안 전송(TLS) 전송(TLS)
클라이언트 코드 생성 Y 도구

 

 

 

 

 

 

 

'Old > Network' 카테고리의 다른 글

게임 네트워크 엔진  (0) 2023.07.31
게임 네트워킹  (0) 2023.07.27
게임 서버와 클라이언트  (0) 2023.07.24
Socket Programming  (0) 2023.07.24
컴퓨터 네트워크  (0) 2023.07.24