ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • gRPC streaming vs unary, grpc streaming의 종류와 life cycle
    Programming/Protocol 2023. 4. 22. 23:25
    반응형

    grpc의 가장 큰 특징은 unary와 streaming인 것 같다.

    uanry와 streaming의 구분은 되게 중요한데, 아주 간단히 설명하자면 Unary는 단방향 통신이고 streaming은 열려있는 파이프라인 같은 것을 만드는 개념이다.

    unary는 우리가 흔히 아는 rest api와 같은 느낌으로 단건 요청, 단건 응답이고, streaming은 파이프라인,,같은 것을 열어놓고 연속하여 응답을 받는 방식이다.

    또하나 신기한점은 streaming 또한 한가지 방식만 제공하는게 아니라 server side streaming, client side streaming, 양쪽에서 streaming을 하는 bi-direcitonal streaming을 모두 지원한다는 점이다.

    1️⃣ gRPC service method의 종류

    1. Unary RPC

    • client가 단건의 request를 서버로 보내고, 단건의 응답을 받는 형태이다.
    • 보통의 function과 동일한 역할을 한다.
    rpc SayHello(HelloRequest) returns (HelloResponse);
    

    2. Server Side Streaming

    • client가 server로 request를 보내고, stream을 응답받는다.
    • client는 stream들로 부터 더 이상 응답 값이 없을 때 까지 메시지를 읽는다.
    • grpc는 message의 order를 보장한다.
    rpc LostOfReplies(HelloRequest) returns (stream HelloReponse);
    

    3. Client Side Streaming

    • clien가 sequence of message를 server에 보낸다.
    • client가 stream message를 쓰는 것이 끝나면 server가 그것을 읽어가기를 기다리고, 그 후에 응답을 받는다.
    • 마찬가지로 message의 order를 보장한다.
    rpc LotsOfGreetings(stream HelloRequest) returns (HelloResponse);
    

    4. Bidirectional Streaming

    • 양쪽 모두 read-write streaming을 쓰는 형태이다.
    • 두 개의 stream이 각각 개별적으로 동작하므로, client와 server는 각각 그들이 원할 때 Read write가 가능하다.
    rpc BidiHello(stream HelloRequest) returns (stream HelloResponse);
    

    2️⃣ RPC Life Cycle

    1. Unary RPC

    1. client가 stub method를 call 하게 되면 server는 rpc가 호출되었다는 것을 알게 된다.
    2. server가 바로 initial metatdata를 전달해 줄 수도 있고, 아니면 client의 request를 기다린 후에 전달할 수도 있다. 뭘 먼저 전달 할지는 구현 나름이다.
    3. server가 client request message를 받게 되면 response를 만들고 리턴한다.
    4. 끝!

    2. Server Streaming RPC

    • unary와 비슷하지만 client의 request에 message stream을 리턴한다는 점이 다르다.
    • 모든 message를 보내고 나면 server의 status detail과 metadata가 client에 함께 전달된다.
    • client가 server의 모든 메시지를 받게 되면 그 때 종료된다.

    3. Client Streaming RPC

    • unary와 비슷하지만 client가 single message가 아닌 stream message를 서버에 보낸 다는 점이 다르다.
    • Server는 single response를 한다.

    4. Bidirectional Streaming RPC

    • 이 건은 client가 method를 호출하고, server가 client의 metadata, method name, deadline을 전달 받으면서 시작된다.
    • 서버는 바로 Metadata를 return하거나 client가 stream message를 하는 것을 기다릴 수 있다.
    반응형

    'Programming > Protocol' 카테고리의 다른 글

    gRPC란? gRPC vs REST / Protobuf, Profo file  (0) 2023.01.23

    댓글

Designed by Tistory.