TsgcGRPCClient

TsgcGRPCClient는 HTTP/2 위에서 gRPC 클라이언트를 구현하며(TsgcHTTP2Client를 전송으로 사용), 네 가지 gRPC RPC 패턴을 지원합니다.

소개

TsgcGRPCClient는 HTTP/2 위에서 실행되는 gRPC 클라이언트를 구현합니다. 이 구성 요소를 구성하려면 아래 단계를 따르십시오.

1. TsgcHTTP2Client 인스턴스를 Client 속성에 할당하십시오. 이 구성 요소는 HTTP/2 전송으로 사용됩니다. gRPC 서버를 가리키도록 전송의 Host, Port 및 TLS를 설정하십시오.

2. OnGRPCResponse 이벤트를 사용하여 응답을 처리한 다음, 연결하고 단항 메서드를 호출합니다. 예제:


    TsgcHTTP2Client *oHTTP2 = new TsgcHTTP2Client();
    oHTTP2->Host = "grpc.example.com";
    oHTTP2->Port = 443;
    oHTTP2->TLS = true;

    TsgcGRPCClient *oGRPC = new TsgcGRPCClient();
    oGRPC->Client = oHTTP2;
    oGRPC->OnGRPCResponse = OnGRPCResponseEvent;
    oGRPC->CallAsync("helloworld.Greeter", "SayHello", vRequestBytes);

    void OnGRPCResponseEvent(TObject *Sender, const TsgcGRPCResponse *aResponse)
    {
      if (aResponse->StatusCode == grpcOK)
        ShowMessage(aResponse->DataString);
    }

RPC 패턴

gRPC는 네 가지 RPC 패턴을 정의합니다. TsgcGRPCClient는 각 패턴에 대한 멤버 집합을 제공합니다.

다음 예제는 서버 스트리밍 호출을 수행하고 서버가 전달한 모든 메시지를 읽습니다.


    oGRPC->OnGRPCStreamMessage = OnGRPCStreamMessageEvent;
    oGRPC->ServerStreamingCall("routeguide.RouteGuide", "ListFeatures", vRequestBytes);

    void OnGRPCStreamMessageEvent(TObject *Sender, const TsgcGRPCStreamMessage *aMessage)
    {
      ShowMessage(aMessage->DataString);
    }

Features

Channel Options

ChannelOptions 속성은 메시지 Compression, ContentType, 최대 송수신 메시지 크기 및 HTTP/2 keep-alive 핑과 같은 채널 수준 동작을 구성합니다.

Metadata

DefaultMetadata를 사용하여 모든 호출에 사용자 지정 헤더를 첨부하거나, 호출 메서드 중 하나에 호출별 메타데이터를 전달하십시오. 이것이 Bearer 토큰과 같은 authorization 헤더가 서버로 전송되는 방식입니다.

데드라인 및 재시도

각 호출은 데드라인을 허용하므로 서버가 느릴 때 빠르게 실패합니다. RetryPolicy는 자동 재시도를 제어합니다: MaxAttempts, 지수 백오프 및 재시도 가능한 상태 코드 집합.

Load Balancing

TsgcGRPCLoadBalancer는 Pick First 또는 Round Robin 정책을 사용하여 여러 백엔드에 호출을 분산하고, DNS 이름 리졸버를 통해 백엔드 주소를 확인합니다.

Health Checking

TsgcGRPCHealthClient는 표준 grpc.health.v1.Health 서비스를 구현하며, 일회성 상태 쿼리를 위한 Check와 상태 변경을 스트림으로 수신하기 위한 Watch를 제공합니다.

Server Reflection

TsgcGRPCReflectionClient는 gRPC Server Reflection 서비스를 사용하여 서버가 제공하는 서비스를 나열하고 런타임에 파일 디스크립터를 가져옵니다.

Interceptors

인터셉터는 Interceptors 속성을 통해 체인으로 연결할 수 있습니다. 라이브러리에는 TsgcGRPCLoggingInterceptor, TsgcGRPCTimeoutInterceptor 및 TsgcGRPCMetadataInterceptor가 포함되어 있습니다.

텔레메트리

MetricsCollector는 호출 수, 성공률 및 지연 시간을 포함한 메서드별 텔레메트리를 제공하며, 모니터링 및 진단에 유용합니다.

Protocol Buffers

gRPC 요청과 응답은 Protocol Buffers(protobuf)로 인코딩됩니다. 라이브러리에는 필드 번호별로 메시지를 작성하고 파싱하기 위한 TsgcProtobufWriter와 TsgcProtobufMessage가 포함되어 있습니다. Google Cloud 인터페이스는 형식화된 요청 및 응답 클래스를 제공하므로, 이러한 서비스를 호출할 때 protobuf를 직접 인코딩할 필요가 없습니다.

참조

Properties

Name설명
클라이언트모든 gRPC 호출에 대한 HTTP/2 전송으로 사용되는 TsgcHTTP2Client 인스턴스입니다.
ChannelOptions채널 수준 옵션: 압축, 콘텐츠 형식, 최대 메시지 크기 및 HTTP/2 keep-alive.
DefaultMetadataauthorization Bearer 토큰과 같이 모든 호출에 추가되는 메타데이터(사용자 지정 헤더)입니다.
Interceptors모든 호출에 적용되는 인터셉터 체인(로깅, 시간 초과, 메타데이터)입니다.
RetryPolicy자동 재시도 구성: 최대 시도 횟수, 지수 백오프 및 재시도 가능한 상태 코드.
ServiceConfig메서드 기본값, 재시도 설정 및 로드 밸런싱 정책을 포함한 서비스별 구성입니다.
MetricsCollector메서드별 텔레메트리를 수집합니다: 호출 수, 성공률 및 지연 시간.

Methods

Name설명
Call동기 단항 호출을 수행하고 TsgcGRPCResponse를 반환합니다.
CallAsync비동기 단항 호출을 수행합니다. 응답은 OnGRPCResponse 이벤트를 통해 전달됩니다.
ServerStreamingCall서버 스트리밍 호출을 시작합니다. 각 서버 메시지는 OnGRPCStreamMessage에 도착합니다.
OpenClientStream클라이언트가 일련의 메시지를 보낼 수 있도록 클라이언트 스트리밍 호출을 엽니다.
SendStreamMessage열려 있는 클라이언트 스트림에서 하나의 메시지를 보냅니다.
CloseClientStream클라이언트 스트림을 동기적으로 닫고 서버 응답을 반환합니다.
CloseClientStreamAsync클라이언트 스트림을 비동기적으로 닫습니다. 응답은 OnGRPCResponse를 통해 도착합니다.
OpenBidiStream양측이 메시지를 교환하는 양방향 스트리밍 호출을 엽니다.
SendBidiMessage열려 있는 양방향 스트림에서 하나의 메시지를 보냅니다.
CloseBidiStream양방향 스트림을 닫고 서버에 스트림 종료를 알립니다.
CancelCall완료되기 전에 활성 호출 또는 스트림을 취소합니다.
CallString요청을 보내고 응답을 문자열로 반환하는 단항 헬퍼입니다.

Events

Name설명
OnGRPCConnectgRPC 서버에 대한 기본 HTTP/2 연결이 설정될 때 발생합니다.
OnGRPCDisconnectgRPC 서버에 대한 연결이 닫힐 때 발생합니다.
OnGRPCResponse단항 호출이 완료될 때 발생하며, TsgcGRPCResponse를 전달합니다.
OnGRPCStreamMessage서버 스트리밍 또는 양방향 스트림에서 수신된 모든 메시지에 대해 발생합니다.
OnGRPCStreamEnd스트림이 완료될 때 발생하며, 최종 gRPC 상태를 전달합니다.
OnGRPCError호출이 OK가 아닌 gRPC 상태 코드로 완료될 때 발생합니다.
OnGRPCException호출을 처리하는 동안 예외가 발생할 때 발생합니다.
OnGRPCBeforeRequest요청이 전송되기 전에 발생하며, 헤더와 메타데이터를 검사하거나 수정할 수 있도록 합니다.

참조