[클라우드컴퓨팅/CloudComputing] 4. Communication
persistent vs transient
- persistent : 없어지지 않고 큐에 저장 되어있다가 전달됨. active 상관없음. ex) 이메일
- transient : 상태가 active 상태일때만 주고받을 수 있음. ex) socket
synchronous vs asynchronous
- synchronous : 동기, 동기화 지점까지 차단됨, 오버헤드 줄일 수 있음
- asynchronous : 비동기
RPC에서 client와 server stubs이 투명성 제공
- 투명성이란 구체적인 시스템 환경을 사용자가 알 수 없고 정보가 없어도 원하는 작업을 수행할 수 있다는 것을 말하는데,
- 클라이언트 stub은 어플리케이션을 대신해 요청 메시지를 전달하고 로컬 OS를 호출
- 서버 stub이 매개변수를 unpack하여 서버를 호출한다.
- 서버 stub이 서비스 결과를 메시지로 포장하고 로컬 OS를 호출한다
- 클라이언트 stub이 결과를 분석해 클라이언트에게 반환한다.
- stub을 통해서 클라이언트는 몇개의 복제 서버가 존재하는 지 알 수없고, 투명성이 제공된다.
marshaling
- 클라이언트 stub이 클라이언트의 요청을 메시지로 만들어 pack하는 과정을 marshaling이라고 한다.
- 반대로 서버 stub이 전달받은 메시지를 unpack하는 것을 unmarshaling이라한다.
stub에서 interface
- 클라이언트가 호출할 때 필요한 프로시저 모음
- IDL or 동일한 프로그래밍 언어로 지정
- 정적,동적 인터페이스와 함께 stub으로 함께 컴파일 된다 → 정적 인터페이스: 클라이언트 프로그램에 stub 포함해 제공, 동적 인터페이스 : 특정 프로시저 호출 시 동적으로 인터페이스 가져다 stub 생성
Multicast Communication의 유용성
- Falut-tolerance : 같은일을 하는 서버 중복시 같은 메시지를 받을 수 있게 multicast 되어야함
- Locating objects : 다 물어봐야함
- Replicated data for performance : 데이터 복제되어있는경우 (ex. ip주소바뀌면 도메인 주소값 update 시 멀티캐스팅해서 갱신)
- Multiple update(event notification) : 그룹들 간 event가 생겼을때 그룹들 간 공유 필요
신뢰 가능한 멀티캐스팅
- atomicity (원자성) : 모든 그룹 멤버가 데이터를 모두 받아야함
- Orderling : 같은 순서대로 받아야함
신뢰성있는 멀티캐스팅을 위한 기술
- holdback : holdback-queue (handler)에 가지고 있다가 다 받으면 Atonomic한거기 때문에 OK deliver해준다. 트래픽이 발생 가능. 어떤 노드가 메시지 못받으면 즉시 알 수 있음.
- negative acknowledgement: 시퀀서로 일련번호를 만들어주고, 일련순서가 이어져가면 괜찮은 것임. 잘못된 걸 다음 메시지가 도달했을 때에 알 수있음. 트래픽은 적지만, 오류탐지시간이 길고, 일련 번호 필드를 둬야한다.