yoongrammer

RPC (Remote Procedure Calls) 란? 본문

분산컴퓨팅

RPC (Remote Procedure Calls) 란?

yoongrammer 2020. 11. 10. 09:37
728x90

목차

    RPC (Remote Procedure Calls) 란?


    RPC (Remote Procedure Calls)란 원격에 있는 함수를 호출해 주는 프로세스 간 통신 기술입니다.

    RPC는 플랫폼에 제약 없이 사용할 수 있어 분산 시스템 기법에 효과적입니다.

     

    RPC는 IDL(Interface Definition Language)를 사용하여 인터페이스를 명시합니다.

     

    대표적인 IDL은 아래와 같습니다.

    • Google 의 ProtocolBuffer
    • Facebook 의 Thrift
    • Twitter 의 Finalge

    RPC 동작 흐름

    RPC는 아래와 같이 동작합니다.

    1. 클라이언트에서 매개변수를 Stub에 전달합니다.
    2. 클라이언트 Stub에서 매개변수를 메시지로 마샬링합니다.
    3. 클라이언트 Stub은 메세지를 전송계층으로 전달하여 Server에 보냅니다.
    4. 서버에서 메시지를 받아 Stub으로 전달하고 매개 변수를 언마샬링 하여 함수를 호출합니다.
    5. 함수 수행이 완료되면 서버 Stub으로 리턴되며 리턴값을 메시지로 마샬링합니다.
    6. 결과 메시지를 클라이언트에 보내고 클라이언트는 언마샬링 후, 리턴값을 호출자에게 반환합니다.

    Marshaling / UnMarshaling 의미

    • Marshaling은 데이터를 바이트로 쪼개서 TCP/IP 같은 통신 채널을 통해 전송될 수 있는 형태로 바꿔주는 과정입니다.

    • UnMarshaling은 반대로 전송받은 바이트를 원래의 형태로 복원하는 과정입니다.

    레이어 설명

    Client/Serve

    • 사용자(Client / Server)가 필요한 비즈니스 로직을 작성하는레이어
    • IDL(interface definition language)로 작성

    Stub

    • Stub Compiler가 IDL 파일을 읽어 원하는 Language로 생성
    • Parameter 객체를 Message 형태로 Marshaling/Unmarshalling 하는 레이어

    RPC Runtime

    • Client와 Server를 연결하는 레이어
    • 통신 중 발생한 에러처리도 진행
    728x90

    '분산컴퓨팅' 카테고리의 다른 글

    Raft Consensus Algorithm 알아보기  (0) 2021.01.20
    JSON 알아보기  (0) 2020.12.28
    gRPC 란?  (0) 2020.11.11
    Protocol Buffer 란?  (0) 2020.11.09
    Comments