김묭의 자기개발

동기와 비동기 본문

내일배움캠프/기타

동기와 비동기

포령 2023. 9. 1. 11:03

<동기? 비동기?>

동기식

요청을 보내면 응답이 올 때까지 기다리고 처리합니다.
HTTP 위에서 REST 프로토콜을 사용합니다.


비동기식

응답과 상관없이 요청을 보냅니다.
분산형 시스템에 적합하고, 메시지 브로커를 통해서 메시지를 관리합니다.

  • 메시지 브로커: 송신자의 메시지 프로토콜 형식에서 수신자의 메시지 프로토콜 형식으로 변환하는 중간 모듈

비동기식 통신의 장점

  • 논블로킹: 기다리지 않고 다른 작업 수행가능하니 효율이나 반응속도가 뛰어남
  • 확장성: 동기식 보다 결합도가 떨어지기 때문에 확장성이 좋음

 

<메시지 브로커>


단기 메시지: Redis

Redis의 인메모리 데이터베이스는 지속성이 필요하지 않은 단기메시지를 사용할 때 적합합니다.
매우 빠른 인메모리 기능을 제공하기 때문에 단기 메시지를 처리할 때 최고의 성능을 보여줍니다.

  • Broker Scale: Configuration 과 Resource에 따라 달라짐, 대충 1초에 메시지 5만개 전송
  • Data Persistency: 지속성 메시지, 일회성 메시지 둘다 지원
    • 다만 지속성 메시지를 사용할 경우 성능 문제 발생 가능
  • Consumer Capability: 일대일, 일대다 모두 가능
  •  

대용량 데이터: Kafka

Kafka는 대용량 데이터를 장기간 저장하기 위해 구축된 처리량이 많은 분산 스트리밍 플랫폼입니다.

  • Broker Scale: 1초에 메시지 100만개 전송
  • Data Persistency: 지속성 메시지
  • Consumer Capability: 일대다만 가능

복잡한 라우팅: RabbitMQ

RabbitMQ는 복잡한 라우팅을 지원하는 많은 기능을 갖췄습니다.
메시지 큐에 도착하기 전에 exchange를 통해 라우트됩니다.

  • Broker Scale: 1초에 메시지 100만개 전송
  • Data Persistency: 메모리 내 데이터 저장소이기 때문에 휘발성임
  • Consumer Capability: 일대일, 일대다 모두 가능

'내일배움캠프 > 기타' 카테고리의 다른 글

1. Django 50문 50답  (0) 2023.07.19
CS 정리 - 1  (0) 2023.07.12
TIL.29 - 머신러닝 & 알고리즘  (0) 2023.05.21
TIL.28 - 머신러닝 강의  (0) 2023.05.17
Project.5- 회고록  (0) 2023.05.15