MQTT는 제한적인 전달 순서만 보장하고 재전송, 동시성, 장치 실행이 별도의 타임라인을 추가하므로 스마트 홈 장면은 서로 다른 순서로 완료될 수 있습니다.
장면은 Wi-Fi가 중단되기 전에 조명, 블라인드, 스피커, 온도 조절기에 명령을 게시할 수 있습니다. 연결이 복구되면 확인 응답을 받지 못한 QoS 메시지가 다시 전달되는 동안 이후 명령이나 다른 토픽이 서로 다른 큐를 통해 계속 처리될 수 있습니다. 브로커 순서, 구독자 동시성, 보존된 상태, 중복 처리 방식, 각 장치의 물리적 완료 시간이 가정에서 최종적으로 관찰되는 순서를 결정합니다.
MQTT는 제한된 프로토콜 범위 내에서 패킷 순서를 정합니다
TCP는 하나의 연결에서 바이트 순서를 보존하고, MQTT는 특정 QoS 및 처리 중인 메시지 조건에서 흐름을 순서대로 처리하도록 정의합니다. 하지만 게시자, 토픽, 브로커 경로, 구독자, 장치 컨트롤러 전체에 걸쳐 하나의 전역 순서를 만들지는 않습니다.
MQTT Receive Maximum은 MQTT 5의 Receive Maximum이 확인 응답을 받지 않은 QoS 1 및 QoS 2 게시 메시지를 어떻게 제한하는지 설명합니다. 창 크기를 1로 설정하면 연결에서 순차 처리가 강화되고, 더 큰 창을 사용하면 처리량이 증가하는 대신 더 많은 동시 처리 중 작업이 허용됩니다.
따라서 장면이 여러 토픽에 분산되어 있다면 게시 호출이 순서대로 실행되었다는 이유만으로 보편적인 순서가 보장되지 않습니다. 한 구독자는 직렬로 처리할 수 있지만 다른 구독자는 콜백을 동시에 실행할 수 있으며, 이들의 확인 응답은 물리적 동작의 완료가 아니라 메시지 전송을 나타냅니다.
재전송은 이전 명령을 이후 상태에 다시 끼워 넣습니다
QoS 1은 최소 한 번 전달을 제공하므로, 확인 응답을 받지 못한 PUBLISH가 연결 후 중복 플래그와 함께 다시 나타날 수 있습니다. QoS 2는 수신 애플리케이션에 한 번 전달하기 위한 핸드셰이크를 추가하지만, 세션 손실이나 애플리케이션 수준의 재시도로 인해 새로운 논리적 명령이 생성될 수 있습니다.
최소 한 번 전달은 QoS 0, 1, 2를 비교하고 확인 응답 교환이 처리량과 전달 보장 사이에서 어떻게 절충되는지 보여 줍니다. 장면에서 중요한 점은 신뢰성 수준이 메시지 전송을 좌우할 뿐, 장치 동작이 최신 상태인지 또는 반복 실행해도 안전한지를 보장하지 않는다는 것입니다.
명령 A가 재전송되기 전에 명령 B가 이미 장치를 변경했다면 최종 상태가 이전 상태로 되돌아갈 수 있습니다. 명령에는 장면 ID, 단계 ID, 목표 상태 버전, 만료 시간, 멱등적 적용 방식이 필요합니다. 그래야 늦게 도착한 중복 명령을 새로운 의도로 실행하지 않고 식별할 수 있습니다.
장치 완료 순서는 메시지 도착 순서와 별개입니다
전구는 즉시 확인 응답을 보낼 수 있지만, 블라인드는 20초 동안 움직일 수 있고 온도 조절기 브리지는 작업을 내부적으로 큐에 넣을 수 있습니다. MQTT 전달이 완전히 직렬화되어 있더라도 병렬 구독자, 프로토콜 브리지, 절전 장치, 속도 제한으로 인해 완료 순서가 달라질 수 있습니다.
영구 세션 큐는 클라이언트가 오프라인일 때 브로커가 구독 및 QoS 상태를 유지하고 메시지를 대기열에 보관할 수 있도록 하는 영구 세션과 대기 메시지를 설명합니다. 복구를 통해 연속성은 향상되지만, 애플리케이션이 만료 및 버전 의미를 추가하지 않으면 대기 중인 작업이 오래된 목표 상태를 나타낼 수 있습니다.
문제의 경계는 MQTT만으로 엄격한 전역 순서를 요구하는 데 있습니다. 모든 메시지를 직렬화하면 프로토콜 수준의 순서 변경을 줄일 수는 있지만, 물리적 장치를 동기화하거나 오래된 명령을 취소할 수는 없습니다. 장면 엔진은 전송 계층보다 상위에서 목표 상태와 완료 조건을 추적해야 합니다.
연결 끊김과 재전송을 거쳐 하나의 장면을 추적하세요
하나의 토픽을 사용한 경우와 여러 토픽을 사용한 경우에 번호를 매긴 명령으로 장면을 게시하세요. 확인 응답 전에 연결을 끊고, 서로 다른 Receive Maximum 값으로 다시 연결한 다음, 패킷 ID, 중복 플래그, 장면 버전, 도착, 확인 응답, 장치 완료를 기록하면서 구독자를 직렬 모드와 동시 모드로 실행하세요.
스마트 홈 이벤트 시간의 이벤트 시간 구분을 사용해 브로커 순서, 구독자 순서, 물리적 완료 순서를 비교하세요. 만료 및 멱등성을 추가한 뒤 늦게 도착한 중복 메시지가 더 오래된 목표 상태를 복원하지 못하는지 확인하세요. 이러한 구분은 이후 가정 환경 테스트에서도 계속 확인할 수 있습니다.
종속성상 반드시 필요한 단계에만 전역 순서를 요구하세요. 서로 독립적인 장치에는 동시성을 유지하고 장면 완료 장벽을 정의하세요. 종속된 단계에는 전송 QoS가 워크플로 엔진이라고 가정하지 말고 하나의 권위 있는 상태 머신을 사용하세요.
기술 및 AI 허브
더 읽어보기

로컬 추론 요청을 시작할 때 GPU 전력이 급증하는 이유는 무엇인가요?
추론 시작 시 GPU 클록 상승, 모델 프리필, 커널 초기화, 메모리 할당 및 샘플링 간격이 전력 스파이크를 어떻게 발생시키는지 확인해 보세요.

여러 인덱스 세그먼트를 함께 쿼리할 때 벡터 검색 순위가 변경되는 이유_久久爱
세그먼트별 후보 제한, 근사 그래프, 점수 보정, 업데이트 및 통합이 프라이빗 벡터 검색 순위를 어떻게 바꾸는지 알아보세요.

메타데이터를 편집한 후 사진 중복 제거 그룹이 분리되는 이유는 무엇인가요?
정확한 해시, 지각 해시, EXIF 방향, 타임스탬프, 임계값 및 파이프라인 버전으로 인해 비공개 사진 중복 그룹이 어떻게 분리되는지 확인하세요.

