ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Distributed System] Interprocess Communication
    Software Development/Distributed System 2023. 8. 6. 17:06

    The API for Internet protocols

    The characteristics of interprocess communication

    두 쌍의 프로세스가 통신하려면, send, receive가 필요

    Synchronous and asynchronous communication

    Queue는 메세지 destination과 관련이 있음.

    송신 프로세스는 원격 큐에 메세지를 추가.

    수신 프로세스는 로컬 큐에서 메세지 제거.

    송수신 프로세스의 통신은 동기 비동기 중 하나.

    동기 통신은 모든 메세지가 동기적으로 처리. 송신, 수신은 blocking 오퍼레이션임.

    송신 또는 수신 프로세스의 이슈가 서로의 통신에 영향을 미침.

    비동기 통신

    send operation을 non-blocking으로 사용. 로컬 버퍼에 메세지가 카피되자마자,  메세지 전달. 메세지 전송과 송신 프로세스가 병렬로 처리.

    receive operation은 blocking 및 non-blocking이 존재. non-blocking에서 수신 프로세스는 수신 작업을 실행한 후 처리. 이 작업은 백그라운드에서 보관할 버퍼를 제공하지만 polling 또는 interrupt을 통해 버퍼가 보관되었다는 알림을 별도로 수신해야 됨.

     

    시스템 환경에서는 Java와 같은 다중 스레드를 지원하는 경우, 블로킹 수신은 단일 프로세스 내에서 한 스레드가 블로킹 수신을 요청하면 다른 스레드들이 active하기 때문에 문제가 없음. recevie 스레드를 수신되는 메시지와 동기화하기가 간단하므로 이는 상당한 장점.

     

    반면 논블로킹 통신은 보다 효율적으로 보일 수 있지만, 메시지를 제어 흐름에서 가져오기 위한 수신 프로세스에 추가 복잡성이 포함.

    이러한 이유로 현재의 시스템은 일반적으로 논블로킹 수신 형태를 제공하지 않음.

     

    local port는 컴퓨터에서 메세지 목적지임. 포트는 정확히 하나의 수신자(multicast port는 제외)가 있고 많은 송신자 있음.

    프로세스는 메세지 수신을 위해 multiple port를 쓸 수 있음.

    port 번호를 알고 있는 어떤 프로세스든 port에 메세지를 보낼 수 있음. 클라이언트가 사용하라고 port number를 오픈함.

    Sockets

    UDP, TCP는 socket을 사용하는데, 소켓은 프로세스들 통신의 엔드포인트임.

    JAVA API for Internet addresses

    InetAddress는 인터넷 주소를 표현.

    UDP Datagram communication

    UDP에 의해 보내지는 datagram은 ack와 retry없이 송신 프로세스에서 수신 프로세스로 전달.

    Message size: 메세지가 너무 bytes array에 담기에 너무 크면 메세지가 일부 잘림. IP 프토로콜은 패킷 사이즈를 2^16로 허용(헤더 및 메시지 포함).

    대부분의 환경에서는 8킬로바이트의 크기 제한을 부과. 최대값보다 큰 메시지가 필요한 응용 프로그램은 메시지를 해당 크기의 청크로 자름. 애플리케이션에서 용도에 맞게 적한한 크기를 결정.

    Blocking: 소켓은 보통 non-blocking send와 blocking receive를 datagram communication에서 제공.
    Timeouts: 일부 프로그램에서는 수신 프로세스가 충돌하거나 예상 메시지가 손실되었을 수 있는 상황에서 수신 작업을 호출한 프로세스가 무기한 대기할 수 있음.

    Use of UDP

    DNS, Voice over IP 

    TCP stream communication

    다음 네트워크의 특징은 stream 추상화에 의해 숨겨짐.

    Message size: 애플리케이션이 얼마나 데이터를 쓰고 읽을지 결정.

    Lost messages: Ack. 만약 sender가 주어진 timeout내에 ack을 수신하지 않으면, 재전송.

    Flow control: 만약 reader에 비해 writer가 너무 빠르면, reader가 데이터를 충분히 소비할 때 까지 blocked.

    Message duplication and ordering: 메세지 indentifiers가 각 IP packet과 연관되어 있으며, 중복을 감지 및 거부하거나 발신자 순서대로 도착하지 않는 메시지를 재정렬.

    Message destinations: 커넥션이 만들어지면, Internet address 및 port를 읽고 쓸 때 사용할 필요가 없음.

    Use of TCP

    HTTP, FTP, SMTP

    External data representation and marshalling(데이터를 외부 데이터 표현 방식으로 변환)

    COBRA's Common Data Representation(CDR)

    primitive types: CDR은 빅에디안이나 리틀에디안으로 표현을 정의.

    Constructed types: 각 구조화된 타입을 구성하는 primitive values은 특정한 순서로 바이트의 시퀀스에 추가

    Java object serialization

    XML

    댓글

Designed by Tistory.