Pub-Sub 모델은 비동기 메시징 패러다임으로, Pub-Sub 모델에서 Publisher의 메시지는 특별한 수신자가 정해져 있지 않다. publish 된 메시지는 정해진 범주에 따라, 각 범주에 대한 Subscribe를 신청한 Subscriber에게 전달된다. Subscriber는 Publisher에 대한 정보 없이도 원하는 메시지만 수신할 수 있다.
MQTT는 아래와 같이 동작한다.
위의 그림을 보면 MQTT Broker가 존재하고 Publish와 Subscribe가 존재한다.
Publisher가 Hi! 라는 메시지를 보내면 Subscriber가 Broker를 통해 메시지를 받는 구조로 " /hello/world/ " 토픽을 구독하지 않은 Subscriber는 메시지를 받을 수 없다.
MQTT의 특징으로는 Broker를 통한 통신, QoS가 있다.
먼저, Broker를 통한 통신으로 위의 그림에서 봤듯이 Publisher가 발행한 메시지를 해당 토픽을 구독하는 Subscriber들이 받을 수 있고, 일대일 또는 일대다 통신이 모두 가능하다.
다음으로 QoS(Quality of Service)는 0, 1, 2 레벨로 구성되어 있는데 각 레벨은 아래와 같다.
◎ 0 : 최대 1회 전송, 토픽을 통한 메시지를 전송할 뿐 Subscriber가 받는 것은 보장하지 않는다.
◎ 1 : 최소 1회 전송, Subscriber가 메세지를 받았는지 불확실하다면 정해진 횟수만큼 재전송한다.
◎ 2 : Subscriber가 최소 1번 메시지를 받을 수 있도록 보장한다.
0에 가까울수록 메시지 처리에 대한 부하가 줄어들지만 메시지 손실에 대한 위험이 높아지고, 2에 가까울수록 손실 위험은 줄어들지만 메시지 처리 부하가 늘어난다. 보통 0~1 정도의 QoS 레벨이 널리 쓰이며, 손실의 위험은 상위 애플리케이션 차원에서 관리하는 방법으로 쓰인다.
참고 : https://2kindsofcs.tistory.com/6
'💻CS' 카테고리의 다른 글
[CS] DB 트랜잭션 격리 수준 (Transaction Isolation Levels) (0) | 2022.07.05 |
---|---|
[CS] DB Index (0) | 2022.07.03 |
[CS] CORS? (0) | 2022.06.25 |
[CS] Session vs Cookie (0) | 2022.06.22 |
[CS] 토큰 기반 인증과 JWT (0) | 2022.06.19 |