RabbitMQ에 대해서✨

YaR Lab·2024년 8월 7일
0

TIL✨

목록 보기
133/136
post-thumbnail

24.08.07

today 😉

[Message Queue의 기본 동작 원리는❓]

그림과 같이 Publisher가 Message를 보내면 Queue에 담겨있다가 Cunsumer/Customer 가 받아가는 구조이다.

[1:1 동기 1:N동기 1:1 비동기 1:N 비동기 에 대해 알아보자]

[데이터 통신 방식❓ feat. MSA]
분리된 어플리케이션(모듈)끼리 데이터를 주고 받는(통신) 방식을 알아보면 크게 두가지 동기식 통신방식과 비동기식 통신방식이 있다.

동기식: API 통신
비동기식: 메시지브로커 방식(기술)

메세지 브로커가 존재한다. 브로커는 메세지를 받아서 전달을 해주지 않고 컨슈머가 받아가기 전까지 메세지를 보관한다. 이로써 퍼블리셔와 컨슈머의 자유도를 높일 수 있다.

Kafka ("실시간" 데이터 취합 => 분산 "스트리밍")

  • Redis (공유 데이터베이스)
    ex. 메신저, 유튜브/넷플리스 등..

Message Queue

[blocking, non-blocking이 동기, 비동기와 다른 개념인가❓]

동기 vs 비동기

호출 메서드의 완료 여부를 신경 쓸지/말지
1. 동기
완료 여부를 신경 씀
2. 비동기
완료 여부를 신경 안씀

blocking vs non-blocking

제어권 넘김/안넘김
1. blocking
A -> B 제어권 넘김
A 멈춤 / B 실행
B 함수 완료시
A <- B 제어권을 다시 넘김

  1. non-blocking
    A 가 제어권 가진 상태로 B 호출
    A 계속 실행 / B 실행

동기 / 비동기⛔️

호출한 메서드의 실행흐름을 신경 써? 안써?

제어권 넘김 / 안넘김⛔️

로직을 종료시키는 권환이 있어? 없어?

동기 + blocking

완료여부도 신경쓰고 제어권 넘김

동기 + non-blocking

완료여부도 신경쓰고 제어권은 안넘김

비동기 + blocking

완료여부는 신경안쓰고 제어권 넘김

비동기 + non-blocking

완료여부는 신경안쓰고 제어권 안넘김

[다 필요없고 비동기만 보면 그게 뭐야❓]
병렬로 작업을 배치

[RabbitMQ 실습 해보기]
Get-Started

0개의 댓글