MQTT로 카톡서버 만들어보자 - 5/10. QoS 번외

빙고리우스·2024년 3월 28일
5
post-thumbnail

QoS는 맞춰라

MQTT 코딩할 때 가장 많이 고민되는게 있다.
보내는 놈의 QoS 랑, 받는 놈의 QoS.

나는 QoS=1로 보내고, 받는 놈이 QoS=2로 받으면 확실하지 않을까?

이거에 대한 썰을 풀고자 한다.

자, 자 각설하고
우리야 client와 server 라고 하지만, broker 입장에서는 둘 다 client 아니겠나.

다음을 생각해보자.
client와 server 가 서로 다른 QoS를 사용할 때 QoS는 어느 쪽을 따를까?

세상에 당신이 최초로 고민한 문제는 없다.
구글신한테 물어봐라.

사수한테 물어보면 위와 같은 대꾸를 듣는다.
사수님의 말이 맞다.
당연히 이것도 테스트한 사람이 있다.

Roger Light 가 만든 다음 시나리오 표를 보자.
앞에 2개는 설정(setting)이고, 뒤 2개는 결과다.

#QoS publishingQoS subscribingQoS Publisher >> BrokerQoS Broker >> Subscriber
101 or 200
21 or 201 or 20
32121
41111

출처: https://cedalo.com/blog/understanding-mqtt-qos/

1번은 받는 놈이 아무리 QoS를 1, 2로 하더라도 보내는 QoS가 0 이면 받는 QoS도 0 이라는 거다.
2,3번도 같은 맥락으로 이해할 수 있다.

즉 아무리 내가 보낼 때 높은 QoS로 보내도, 받는 쪽이 어떻게 받도록 설정하느냐에 따라 달라진다는 거다.

유식한 말로 QoS Downgrade 현상이라고 한다.

따라서 4번과 같이 보내는 QoS받는 QoS를 맞추는 것이 정신 건강에 이롭다.

QoS별 속도 차이

QoS가 높아질수록 신뢰도는 높아지지만 속도는 느려질 것같다는 느낌적 느낌은 받는데....

그렇다 이건 느낌이다. 숫자가 아니다.

회의 시간에 느낌만 이야기 하면 초급 취급 받는다.
숫자를 제시해야 한다.
QoS별로 초당 몇 개의 Packet을 보낼 수 있는지에 대한 다음 벤치마킹 데이터를 보자.

출처: https://blog.softwaretoolbox.com/mqtt-quality-of-service-datahub

보내는 건 별 차이가 없는데, 받는 건 드라마틱한 차이가 보인다.
솔직히 이 자료보고 나도 놀랐다.
생각보다 QoS=1이 QoS=2보다 안 빠르네 😰
이거 보니 괜히 QoS=0 으로 프로그램 고치고 싶어진다😝


QoS=0 으로 바꿀려면 server가 talk 쏠 때 보낸 놈한테도 쏘도록 수정하면 되지 않을까..솔직히 안해봤다😰

해보고 잘되면 목에 힘주고 아무한테도 알려주지 말고 연봉협상💰 때 넌지시 얘기하라.

profile
다할줄아는 사람보다 뭔가 한가지 똑부러지게하는 사람이되자.

4개의 댓글

comment-user-thumbnail
2024년 3월 28일

도움 많이 받았습니다. ^^

1개의 답글
comment-user-thumbnail
2024년 3월 28일

오호. 일단 목에 힘 쫌 주고 해보겠슴다.

1개의 답글