초보자를 위한 gRPC에 대한 간결한 가이드

5104 단어 grpcprotobufs

A series of simple, beginner friendly tutorials that explain the what, why and how of gRPC.



시작하기 - RPC 이해



RPC란 무엇입니까?


  • RPC(원격 프로시저 호출)는 함수와 같습니다.
  • 이러한 함수는 일부 원격 시스템에서 실행되며 따라서 이름이 지정됩니다.
  • 요청 - 응답 모델을 따릅니다.
  • 클라이언트에서 요청이 시작되었습니다. 이 요청은 특정 매개 변수가 있는 함수 호출이고 서버가 응답을 반환합니다.
  • 실제 응용 프로그램 - 분산되고 확장 가능한 클라이언트 서버 기반 응용 프로그램을 구성합니다.

  • gRPC


  • gRPC는 RPC API를 구현하는 기술입니다.


  • 다른 프로그래밍 언어를 사용하여 서버 및 클라이언트를 작성할 수 있습니다. Python을 사용하여 작성된 클라이언트는 Golang으로 작성된 서버와 상호 작용할 수 있습니다.
  • 기본적으로 gRPC는 프로토콜 버퍼를 IDL(인터페이스 정의 언어)로 사용하여 페이로드 메시지의 구조와 RPC 서비스를 정의합니다.

  • 프로토콜 버퍼 및 .proto 파일 이해



    프로토버프란?


  • 프로토콜 버퍼는 구조화된 데이터를 효율적인 방식으로 직렬화하는 방법입니다.
  • JSON과 같은 텍스트 기반 직렬화 방식보다 빠른 바이너리 직렬화 방식을 사용합니다.
  • protobuf 사양은 다양한 프로그래밍 언어로 구현될 수 있습니다.

  • .proto 파일이란?



    .proto 파일에는 작동 중인 프로토콜 버퍼를 확인하는 데 필요한 정의가 포함됩니다.
    확장자가 .proto인 파일에는 메시지 및 서비스 정의가 포함됩니다. 서비스는 프로시저/기능과 유사하며 메시지는 이러한 기능에 전달될 수 있는 매개변수의 데이터 유형과 유사합니다.

    syntax = "proto3";
    
    message UrlRequest{
        string req = 1;
    }
    
    message UrlResponse{
        int res = 1;
    }
    
    service Url{
        rpc CallUrl(UrlRequest) returns (UrlResponse){}
    }
    


    위의 예에서 파일의 첫 번째 줄은 proto3 구문을 사용 중이고 CallUrl은 서비스이고 UrlRequest 및 UrlResponse는 메시지 정의임을 지정합니다. CallUrl은 입력 매개변수가 HelloRequest이고 출력이 UrlResponse인 함수로 작동하는 것을 볼 수 있습니다. 메시지 정의에는 그 안에 필드가 있을 수 있습니다. 각 필드에는 이름과 유형이 있습니다. 여기에 UrlRequest에 데이터 유형 문자열이 있는 req 필드가 있고 res는 UrlResponse에서 데이터 유형이 int인 필드입니다.

    중요 단계 - .proto 파일 컴파일
  • 이렇게 하면 선택한 프로그래밍 언어로 서버 및 클라이언트 코드를 구현하기 위한 도우미 코드가 생성됩니다.
  • JSON, XML과 같은 텍스트 기반 직렬화 방법에 비해 데이터가 더 효율적으로 전송될 수 있는 이진 형식으로 직렬화되므로 생성된 코드는 구조화된 데이터의 구문 분석도 처리합니다.

  • 추가 자료 - Language Guide (proto3)

    코딩하자



    기본 워크플로


  • 프로토콜 정의 - .proto 파일 작성
  • 메시지 정의
  • 각각의 매개변수 및 반환 유형으로 RPC 서비스 프로시저를 정의합니다. 4가지 유형의 RPC 절차가 있을 수 있습니다.
  • 단순 RPC
  • 서버측 스트리밍 RPC
  • 클라이언트측 스트리밍 RPC
  • 양방향 스트리밍 RPC

  • .proto 파일 컴파일 - 데이터의 이진 직렬화를 위한 protobuf 관련 코드를 생성합니다. 클라이언트 및 서버 스텁도 생성함

  • 생성된 스텁의 도움으로 선택한 언어를 사용하여 서버 및 클라이언트 코드를 작성합니다.
  • gPRC는 현재 다음 언어를 지원합니다.
  • C#
  • C++
  • Dart
  • Go
  • Java
  • Kotlin
  • Node
  • Objective-C
  • PHP
  • Python
  • Ruby


  • 최종 응용 프로그램 컴파일 및 실행

  • 추가 자료
    gRPC Documentation
    gRPC vs REST: Understanding gRPC, OpenAPI and REST and when to use them in API design

    좋은 웹페이지 즐겨찾기