application에서 사용할 수 있는 high level 통신이 어떤게 있는지 살펴볼것이다.
분산 시스템에서는 두 프로세스 사이에 메세지 통신을 하는 interprocess communication이 있어야한다.
컴퓨터 네트워크단에서 우리가 생각하는 메세지를 주고 받으려면 소켓 프로그래밍을 해야한다.
하지만 큰 스케일의 분산 applicaiton에서 그런 소켓들만을 사용해 통신하는 것은 어렵다.
그래서 low level에서 소켓을 사용하고, 그 위의 레벨인 high level에서 사용하기 편한 통신 서비스를 이용하게 해주면
분산 시스템을 구축하기 용이해지고, 서비스를 사용하기 편리해진다.
널리 사용되는 communication model로는
-RPC (Remote Procedure call)
-MOM (Memory-oriented middleware)
-Data Streaming
-Multicast
RPC와 MOM은 application level이고, Multicast는 상대적으로 아래 level이다.
RPC는 applicaiton layer에서는 로컬함수처럼 호출하고 미들웨어에서 원격지의 함수에 요청한다.
application 이 편하게 통신을 이용하게 된다.
MOM 은 middleware에서 처리하는 메세지를 담는 큐를 이용한다.
담을 때 메세지를 application이 좀 더 편하게 이용할 수 있도록 가공한다. (예를 들어, 압축)
위의 두가지는 discrete한 데이터를 주고 받는 것이고,
Data Streaming은 multi-media data를 주고받는 것이다.
멀티미디어 데이터는 discrete한 data 전송보다 고려해야 할 점이많다. (예를 들어 timing 제약사항)
Multicast는 transport level 의 프로토콜의 한 종류이다.
메세지를 받는 수신 노드가 여러개일때 메세지를 보내는 효율적인 방법이다.
모든 통신은 네트워크 프로토콜이 있어야한다.
프로토콜은 통신하는 두 프로세스 사이의 지켜야 할 약속을 말한다.
약속이 너무 많기 때문에 layer 별로 약속들을 정한 표준 모델도 만들어졌다
-> OSI Model (Open System Interconnection Reference model)
지금은 잘 이용하진 않지만, 그 자체로 의미가있다.
소켓이 통해 application이 밑의 layer의 서비스를 이용할 수 있게 해준다.
프로토콜의 종류는 TCP, UDP가 있다.
TCP는 보낸 순서대로 받는 것을 보장하고, UDP는 받을 때 달라진다.
Layered architecture가 잘 구현된 예 중의 하나가 OSI Model이다.
- 메세지 보내는 과정
: 프로세스가 메세지를 만들어서application layer로 보낸다.
application layer software, 즉 프로토콜이 자신이 사용할 규칙을 헤더파일에 담아 밑의 layer로 보낸다
각 layer마다 위와 동일하게 헤더를 붙여나간다.
- 메세지 받는 과정
: 메세지 중 가장 바깥 쪽 헤더를 떼서 분석 후 layer의 역할을 수행한다. 반복.
(architecture 단원에 있는 내용)
이런 layered protocol의 장점은
각 layer가 독립적이여서 변경시에 해당 layer만 변경할 수 있다.
또한 위의 layer에 노출한 인터페이스를 변경할 경우는 해당 layer와 위의 layer만 바꾸면 된다.
관리가 편하다!
단점은 닿아있는 layer가 아니면 바로 이용하기 힘들다는 것이다.
OSI Model : low level protocol
- physical layer
: 가장 밑의 layer, 전기적 신호 전달 여부
- data link layer
: MAC layer라 불리고, checksum value로 메세지를 제대로 받았는지 체크한다.
- network layer
: 여러 router가 목적지까지 전달하는 최적의 길을 찾아준다 = routing
- transport layer
: network는 머신까지 전달해주는 것이고,
transport는 메세지를 타겟 머신의 프로세스까지 전달해준다.
UDP는 패킷이 없어질 수도 있다. reliable하게 보내려면 application이 자체적으로 처리해주어야한다.
: TCP에서 패킷이 사라지면 어떻게 재전송하는가?
applicaiton에서 보내준 메세지가 너무 길면 여러개의 패킷단위로 쪼개서 보낸다.
각각의 패킷에 sequence num을 부여한 다음 보내고 받는 쪽의 ACK 메세지를 기다린다.
ACK 안온 sequence num의 패킷을 재전송한다.
- session layer
: 세션 관리
- presentation layer
: 메세지의 포맷을 변경하는 역할
-application layer
: 표준 프로토콜의 예시 (FTP, HTTP)
'협동분산시스템' 카테고리의 다른 글
Hard Link vs Symbolic Link (0) | 2019.06.11 |
---|---|
Middleware Protocol (0) | 2019.04.19 |
Code migration - 2 (0) | 2019.04.16 |
Code migration - 1 (0) | 2019.04.16 |
Servers : Server clusters-3 (0) | 2019.04.16 |