본문 바로가기
자바/개념

[java] 자바 RMI(Remote Method Invocation)

by drCode 2021. 9. 10.
728x90
반응형
728x90

자바(java) RMI(Remote Method Invocation) 아키텍처

 

자바 RMI. 원격 함수 호출이다.

 

클라이언트에서 바로 서버로 접속이 불가능한 환경일때, 가상환경에 인터페이스를 두고 통신하는 방식이다.

 

RMI를 알기 전에 분산 컴퓨팅, 분산 객체를 먼저 알아야 한다.

 

반응형

분산 컴퓨팅이란?

 - 네트워크에서 서로 다른 시스템 간에 응용프로그램을 분산해서 처리하는 환경을 말한다.

 - 즉 하나의 컴퓨터에 존재하는 Application이나 프로세스에서 스스로 처리하거나 수행하기 어려운 작업을 다중 프로세서나 컴퓨터에 분산시키는 것

 - 분산 컴퓨팅을 적용한 Application을 Distributed Application이라고 한다.

 

분산 객체(Distributed Object)

 - 분산 컴퓨팅 기술이 객체 지향과 접목되어 하나의 프로세서나 컴퓨터에서 실행되는 객체가 다른 프로세서나 컴퓨터에서 객체와 통신이 가능하도록 하는 기술이 분산 객체 기술이다.

 - RMI는 java-to-java

 - 분산 객체란 자신이 존재하는 런타임 환경과는 다른 런타임에 있는 객체와 통신이 가능한 객체이다.

RMI(Remote Method Invocation)

 - 직렬화 된 Java 클래스의 전송, 원격 프로시저 호출(RPC)과 같은 객체 지향적인 원격 메서드 호출을 수행하는 Java API

 - 기존 자바 언어의 장점과 풍부한 API를 분산 객체 기술에 이용이 가능하게 됨

 - 다른 실행 환경에 있는 객체의 메소드를 로컬에서 생성한 객체의 메소드와 다름 없이 호출할 수 있도록 하는 "자바의 분산 객체 기술"이다.

 - RMI를 사용하면 객체가 다른 JVM에서 실행중인 객체의 메서드를 호출할 수 있다.

 - RMI 스펙에 대한 구현은 JRMP(Java Remote Method Protocol)이다.

 - Distributed computing model을 구현하기 위한 자바 Object 간의 통신을 구현한 도구이다.

 - RMI는 두 개의 객체 스텁 및 스켈레톤을 사용하여 애플리케이션 간의 원격 통신을 제공한다.

 

스텁

 - 스텁은 객체이며 클라이언트 측의 게이트웨이 역할을 한다.

 - 모든 나가는 요청은 Stub을 통해 라우팅 된다.

 - 클라이언트 측에 위치하며 원격 개체를 나타내는데 실제 원격 객체가 아니라 원격 객체의 껍데기이다.

 - 클라이언트가 Stub 객체에서 메서드를 호출하면 다음 작업을 수행한다

    - 원격 가상머신(JVM)과의 연결을 시작한다.

    - 원격 가상머신(JVM)에 매개 변수를 쓰고 전송(마샬링, 직렬화)합니다.

    - 결과를 기다린다.

    - 반환 값 또는 예외를 읽는다.(언마샬링, 역직렬화)

    - 마지막으로 클라이언트에게 값을 반환합니다.

 

스켈레톤(Skeleton)

 - Skeleton은 객체이며 서버 측의 게이트웨이 역할을 한다.

 - 서버로 들어오는 모든 요청은 Skeleton을 통해 라우팅 된다.

 - 클라이언트 측에 위치하며 원격 개체를 나타내는데 실제 원격 객체가 아니라 원격 객체의 껍데기이다.

 - Skeleton이 수신 요청을 받으면 다음 작업을 수행한다.

    - 원격 메소드의 매개 변수를 읽는다.

    - 실제 원격 개체에서 메서드를 호출한다.

    - 결과를 작성하고 호출자에게 전송(마샬링, 직렬화)한다.

    - Java 2 SDK에서는 스켈레톤이 필요없는 스텁 프로토콜이 도입되었다.

 

728x90
반응형

댓글