분산 시스템의 RPC(원격 프로시저 호출) 프로토콜
⚡ 스마트 요약
원격 프로시저 호출(RPC)은 분산 클라이언트-서버 시스템에서 일반적인 로컬 함수 호출 뒤에 네트워크 세부 정보를 숨겨 프로그램이 다른 주소 공간이나 머신에 있는 프로시저를 실행할 수 있도록 하는 프로세스 간 통신 프로토콜입니다.

RPC란 무엇입니까?
원격 프로 시저 호출 (RPC) 는 Teledyne LeCroy 오실로스코프 및 LSA-XNUMX 시리즈 임베디드 신호 분석기가 프로세스 간 통신 클라이언트-서버 애플리케이션에 사용되는 기술입니다. RPC의 정식 명칭은 원격 프로시저 호출(Remote Procedure Call)입니다. RPC 메커니즘은 컴퓨터 프로그램이 다른 주소 공간에 있는 프로시저나 서브루틴을 실행할 때 사용되며, 프로그래머가 원격 상호 작용에 대한 세부 사항을 명시적으로 코딩하지 않고도 일반 프로시저 호출처럼 실행할 수 있습니다.
이 프로시저 호출은 프로그램 간에 메시지 데이터를 전송하기 위해 UDP 및 TCP/IP와 같은 하위 수준 전송 프로토콜도 관리합니다.
RPC 유형
RPC에는 세 가지 유형이 있습니다.
- 콜백 RPC
- 브로드캐스트 RPC
- 배치 모드 RPC
콜백 RPC
이러한 유형의 RPC는 참여 프로세스 간에 P2P(피어 투 피어) 패러다임을 가능하게 합니다. 이를 통해 프로세스는 클라이언트와 서버 역할을 모두 수행할 수 있습니다.
콜백 RPC의 기능:
- 원격으로 처리되는 대화형 애플리케이션 문제를 처리합니다.
- 클라이언트의 핸들을 서버에 제공합니다.
- 콜백 함수는 클라이언트 프로세스를 대기 상태로 만듭니다.
- 콜백 교착 상태를 관리합니다.
- 이는 참여 프로세스 간에 동료 간(peer-to-peer) 패러다임을 촉진합니다.
브로드캐스트 RPC
브로드캐스트 RPC는 클라이언트의 요청을 네트워크에 브로드캐스트하여 해당 요청을 처리할 수 있는 메서드를 가진 모든 서버에서 처리하는 방식입니다.
브로드캐스트 RPC의 기능:
- 클라이언트의 요청 메시지를 브로드캐스트하도록 지정할 수 있습니다.
- 브로드캐스트 포트를 선언할 수 있습니다.
- 이는 물리적 네트워크의 부하를 줄이는 데 도움이 됩니다.
배치 모드 RPC
배치 모드 RPC는 클라이언트 측의 전송 버퍼에 개별 RPC 요청을 대기열에 저장한 다음, 네트워크를 통해 한 번에 서버로 전송하는 데 도움이 됩니다.
배치 모드 RPC의 기능:
- 이 방식은 요청을 네트워크를 통해 서버로 한 번에 일괄 전송하므로 요청 전송에 따른 오버헤드를 최소화합니다.
- 이러한 유형의 RPC 프로토콜은 호출 빈도가 낮아야 하는 애플리케이션에만 효율적입니다.
- 신뢰할 수 있는 전송 프로토콜이 필요합니다.
RPC Archi강의
RPC 아키텍처는 주로 5가지 프로그램 구성요소로 구성됩니다.
- Client
- 클라이언트 스텁
- RPC 런타임
- 서버 스텁
- 서버
RPC Archi강의
RPC는 어떻게 작동하나요?
RPC 프로세스 중에는 다음과 같은 단계가 진행됩니다.
단계 1) 클라이언트, 클라이언트 스텁 및 RPC 런타임 인스턴스 하나가 클라이언트 컴퓨터에서 실행됩니다.
단계 2) 클라이언트는 일반적인 방식으로 매개변수를 전달하여 클라이언트 스텁 프로세스를 시작합니다. 클라이언트 스텁은 클라이언트 자체의 주소 공간에 저장됩니다. 또한 로컬 RPC 런타임에게 서버 스텁으로 요청을 보내도록 요청합니다.
단계 3) 이 단계에서 사용자는 일반적인 로컬 프로시저 호출을 통해 RPC에 접근합니다. RPC 런타임은 네트워크를 통해 클라이언트와 서버 간의 메시지 전송을 관리합니다. 또한 재전송, 확인 응답, 라우팅 및 암호화 작업도 수행합니다.
단계 4) 서버 프로시저가 완료되면 실행은 서버 스텁으로 돌아가고, 서버 스텁은 반환 값을 메시지로 패키징(마샬링)합니다. 그런 다음 서버 스텁은 해당 메시지를 전송 계층으로 다시 보냅니다.
단계 5) 이 단계에서 전송 계층은 결과 메시지를 클라이언트 전송 계층으로 다시 보내고, 클라이언트 전송 계층은 해당 메시지를 클라이언트 스텁으로 반환합니다.
단계 6) 이 단계에서 클라이언트 스텁은 결과 패킷의 반환 매개변수를 디마샬링(압축 해제)하고 실행은 호출자에게 반환됩니다.
RPC의 특성
RPC의 필수 특성은 다음과 같습니다.
- 호출된 프로시저는 다른 프로세스 내에 있으며, 해당 프로세스는 다른 컴퓨터에 있을 가능성이 높습니다.
- 프로세스는 주소 공간을 공유하지 않습니다.
- 매개변수는 값으로만 전달됩니다.
- RPC는 서버 프로세스 환경 내에서 실행됩니다.
- 이는 호출 절차의 환경에 대한 접근 권한을 제공하지 않습니다.
RPC의 특징
RPC의 중요한 기능은 다음과 같습니다.
- 간단한 호출 구문입니다.
- 알려진 의미론을 제공합니다.
- 명확하게 정의된 인터페이스를 제공합니다.
- 이는 동일하거나 다른 컴퓨터의 프로세스 간 통신을 가능하게 합니다.
RPC의 장점
RPC의 장점/이점은 다음과 같습니다.
- RPC는 고급 언어에서 사용되는 프로시저 호출 방식을 통해 클라이언트와 서버 간의 통신을 지원합니다.
- RPC는 로컬 프로시저 호출을 모델로 하지만, 호출된 프로시저는 대부분 다른 프로세스에서, 보통은 다른 컴퓨터에서 실행됩니다.
- RPC는 프로세스 지향 모델과 스레드 지향 모델을 모두 지원합니다.
- RPC는 내부 메시지 전달 메커니즘을 사용자에게 숨깁니다.
- 성능을 향상시키기 위해 많은 프로토콜 계층을 커밋합니다.
- RPC는 abs를 제공합니다.trac예를 들어, 네트워크 통신의 메시지 전달 특성은 사용자에게 숨겨져 있습니다.
- RPC는 분산 환경과 로컬 환경 모두에서 사용할 수 있습니다.
- 코드를 다시 작성하고 재개발하는 데 필요한 노력은 최소한입니다.
RPC의 단점
RPC 사용의 단점/단점은 다음과 같습니다.
- 원격 프로시저 호출은 매개변수를 값으로만 전달하며, 포인터(참조) 값은 허용되지 않습니다.
- 원격 프로시저 호출(및 반환) 시간, 즉 오버헤드는 로컬 프로시저보다 훨씬 높습니다.
- 이 메커니즘은 통신 시스템, 다른 기계, 그리고 다른 프로세스를 포함하고 있기 때문에 오류 발생 가능성이 매우 높습니다.
- RPC 개념은 다양한 방식으로 구현될 수 있으므로 단일 표준은 없습니다.
- 이 방식은 주로 상호작용 기반이기 때문에 하드웨어 아키텍처에 대한 유연성을 제공하지 않습니다.
- 원격 프로시저 호출로 인해 프로세스 비용이 증가합니다.

