내 잡다한 노트

Communication 본문

분산시스템

Communication

peanutwalnut 2024. 12. 7. 23:03

 

 

1. Message-Oriented Middleware (메시지 지향 미들웨어)

  • 메시지 지향 미들웨어는 높은 수준의 영속적(persistent) 비동기 통신을 목표로 설계되었습니다.
  • 이 방식에서는 프로세스 간의 직접적인 동기화를 요구하지 않으며, 메시지가 **큐(queue)**에 저장됩니다.

2. 주요 특징

  1. 메시지 전달:
    • 프로세스 간에 메시지가 주고받아지며, 이 메시지들은 큐에 저장됩니다.
    • 큐는 메시지를 보관하여 수신자가 준비될 때 전달되도록 보장합니다.
  2. 비동기 통신:
    • 송신자는 즉각적인 응답을 기다릴 필요가 없습니다.
    • 응답을 기다리지 않고 다른 작업을 수행할 수 있습니다.
    • 이는 시스템의 효율성을 높이는 데 기여합니다.
  3. 장애 내성(Fault Tolerance):
    • 미들웨어는 메시지의 안정적인 전달과 장애 상황에서의 복구를 보장합니다.
    • 예: 메시지가 손실되지 않도록 보장하거나, 네트워크 오류 발생 시 재시도 메커니즘을 지원.

3. 장점

  • 비동기성:
    • 송신자와 수신자가 동시에 동작하지 않아도 작업 수행 가능.
  • 유연성:
    • 큐를 사용해 메시지를 버퍼링하므로, 수신자가 바쁘거나 다운되더라도 메시지가 손실되지 않음.
  • 확장성:
    • 분산 시스템에서 더 많은 노드가 추가되어도 메시지 전달 메커니즘이 동일하게 유지됨.

4. 단점

  • 복잡성 증가:
    • 큐 관리와 메시지 지연에 따른 처리가 필요.
  • 실시간 요구사항에 부적합:
    • 메시지가 큐에 저장되므로, 실시간 응답이 필요한 경우 적합하지 않을 수 있음.

5. 사용 사례

  • 분산 시스템:
    • 프로세스 간의 느슨한 결합(loose coupling)을 유지하며 비동기 통신이 필요한 환경.
  • 메시지 큐 시스템:
    • RabbitMQ, Kafka, AWS SQS 같은 메시지 브로커에서 사용.
  • 마이크로서비스 아키텍처:
    • 서비스 간 비동기 통신을 구현하기 위해 활용.

 

3. 주요 연산

OperationDescription

put 지정된 큐에 메시지를 추가합니다.
get 큐가 비어 있지 않을 때까지 대기한 후 첫 번째 메시지를 제거하고 반환합니다.
poll 지정된 큐에서 메시지를 확인하고 첫 번째 메시지를 제거합니다(절대 대기하지 않음).
notify 특정 큐에 메시지가 추가되었을 때 호출될 핸들러를 등록합니다.

4. 각 연산의 의미

  1. put:
    • 송신자가 큐에 메시지를 추가.
    • 메시지는 큐에 영속적으로 저장되어 수신자가 준비되면 처리됩니다.
  2. get:
    • 수신자가 큐에서 메시지를 가져오며, 큐가 비어 있으면 대기(blocking).
    • 메시지를 처리한 후 큐에서 제거.
  3. poll:
    • 메시지를 가져오는 동작은 get과 유사하지만, 큐가 비어 있어도 대기하지 않음(non-blocking).
  4. notify:
    • 특정 조건(예: 메시지가 큐에 추가됨)에 따라 지정된 핸들러를 호출.

 

 

 

 

Message-Oriented Persistent Communication: Message-Oriented Middleware (MOM)


1. 기본 개념

  • 메시지 큐잉 시스템(Message Queuing System):
    • 애플리케이션들은 공통의 메시징 프로토콜을 기반으로 동작하며, 메시지 구조와 데이터 표현 방식에 대해 합의합니다.
    • 이를 통해 이질적인 애플리케이션 간의 통신을 가능하게 만듭니다.

2. Broker의 역할

메시지 브로커는 메시지 큐잉 시스템에서 애플리케이션 간 **이질성(heterogeneity)**을 처리하는 중요한 역할을 합니다.

  1. 메시지 변환:
    • 브로커는 수신된 메시지를 타겟 애플리케이션이 이해할 수 있는 포맷으로 변환합니다.
    • 예: JSON 형식으로 받은 메시지를 XML 형식으로 변환.
  2. 애플리케이션 게이트웨이 역할:
    • 브로커는 서로 다른 애플리케이션 간 중재자(gateway) 역할을 수행합니다.
    • 서로 다른 프로토콜, 메시지 포맷, 또는 데이터 구조를 사용하는 애플리케이션 간의 통신을 가능하게 합니다.
  3. Subject-Based Routing (주제 기반 라우팅):
    • 브로커는 Publish-Subscribe 모델을 지원하여 메시지를 특정 주제(topic)나 구독자(subscriber)에게 전달합니다.
    • 이는 메시지를 필요한 수신자에게만 전달하도록 최적화합니다.

3. 장점

  • 애플리케이션 이질성 해결:
    • 서로 다른 형식과 프로토콜을 사용하는 애플리케이션 간 통신을 원활하게 만듭니다.
  • 확장성:
    • Publish-Subscribe 라우팅을 통해 대규모 분산 시스템에서도 효율적인 메시지 전달 가능.
  • 유연성:
    • 메시지 포맷 변환과 게이트웨이 역할로 애플리케이션 간 통합을 단순화.

4. 단점

  • 브로커 의존성:
    • 브로커가 단일 장애 지점(Single Point of Failure)이 될 수 있음.
    • 이를 방지하려면 복제 및 클러스터링이 필요.
  • 추가적인 처리 비용:
    • 메시지 변환 및 라우팅 과정에서 추가적인 성능 오버헤드 발생.

5. 사용 사례

  • 분산 시스템 통합:
    • 서로 다른 시스템 간의 데이터 통합과 통신.
  • 마이크로서비스 아키텍처:
    • 서비스 간 비동기 통신과 이벤트 전달.
  • 실시간 알림 시스템:
    • Publish-Subscribe 모델을 활용한 다수의 구독자 대상 알림.

 

 

 

'분산시스템' 카테고리의 다른 글

분산 코디네이터  (1) 2024.12.14