김묭의 자기개발
동기와 비동기 본문
<동기? 비동기?>
동기식
요청을 보내면 응답이 올 때까지 기다리고 처리합니다.
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 |