View a markdown version of this page

Amazon SQS 공정 대기열 작동 방식 - Amazon Simple Queue Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon SQS 공정 대기열 작동 방식

Amazon SQS 공정 대기열은 단일 테넌트가 다른 테넌트에 대한 메시지 처리를 늦출 수 없도록 하여 다중 테넌트 대기열의 노이즈가 많은 이웃 영향을 자동으로 완화합니다. 공정한 대기열은 한 테넌트가 대기열 소비자 용량의 불균형한 공유를 사용하고 있음을 감지하면 조용한 테넌트의 메시지 전송을 우선시합니다.

테넌트 식별

공정 대기열은 각 메시지의 MessageGroupId 속성으로 테넌트를 식별합니다. 동일한를 공유하는 메시지는 동일한 테넌트에 MessageGroupId 속합니다. 공정 대기열에는가 있는 메시지와 없는 메시지의 혼합이 포함될 수 있습니다MessageGroupId. MessageGroupId이 없는 각 메시지는 고유한 테넌트에 속하는 것으로 처리됩니다.

고객 ID, 클라이언트 애플리케이션 ID 또는 요청 유형과 같이 시스템의 실제 개체MessageGroupId에 매핑되는 식별자를 사용하여 공정 대기열로 보내는 모든 메시지에를 설정하는 것이 좋습니다.

탐지 작동 방식

Amazon SQS는 다음 두 가지 조치를 사용하여 시끄러운 이웃을 감지합니다.

  • 동시성 공유 - 테넌트의 진행 중 메시지는 대기열에 있는 모든 진행 중 메시지의 일부입니다. 이렇게 하면 높은 전송 볼륨, 느린 처리 또는 둘 다로 인해 많은 메시지가 한 번에 처리되는 테넌트를 감지할 수 있습니다.

  • 처리 시간 공유 - 테넌트의 최근 총 소비자 처리 시간 공유입니다. 이렇게 하면 메시지가 거의 없지만 처리 속도가 느린 테넌트를 감지하므로 테넌트는 한 번에 많은 메시지가 전송되지 않고 상당한 소비자 시간을 차지합니다.

다음 중 하나에 해당하는 경우 테넌트는 노이즈가 있는 이웃으로 표시됩니다.

  • 동시성 공유: 테넌트는 대기열에 있는 진행 중인 메시지의 10% 이상을 차지하며 자체 메시지 중 30개 이상을 보유하고 있습니다.

  • 처리 시간 공유: 테넌트의 최근 총 소비자 처리 시간 공유가 10%를 초과합니다.

Amazon SQS는 분산 시스템이므로 이러한 임계값은 근사치이며 설명된 정확한 값으로 감지가 활성화되지 않을 수 있습니다.

메시지 전송 순서 변경 방법

테넌트가 시끄러운 이웃으로 감지되면 Amazon SQS는 조용한 테넌트의 메시지 전송을 우선시합니다. 메시지를 폴링하는 소비자 인스턴스는 무음 테넌트 메시지를 사용할 수 있을 때마다 무음 테넌트로부터 메시지를 수신합니다. 이 우선순위는 노이즈가 많은 이웃의 동시성 공유 및 처리 시간 공유가 조용한 테넌트와 비슷한 수준으로 떨어질 때까지 계속됩니다.

노이즈가 많은 이웃 메시지는 삭제되거나 제한되지 않습니다. 저류 시간은 정숙 테넌트 메시지의 우선 순위가 지정되는 동안 증가하고 백로그가 지워지면 정상으로 돌아갑니다. 대기 중인 무음 테넌트 메시지가 없는 경우 소비자 인스턴스는 평소와 같이 시끄러운 이웃 메시지를 수신합니다.

여러 테넌트가 시끄러운 이웃으로 동시에 감지되는 경우 소비자 인스턴스는 가장 적은 진행 중 메시지와 함께 시끄러운 테넌트로부터 메시지를 먼저 수신합니다. 이렇게 하면 노이즈가 많은 테넌트 간에 처리 시간의 균형을 맞출 수 있습니다.

시끄러운 이웃이 조용해지면

다음 중 하나에 해당하는 경우 테넌트는 더 이상 시끄러운 이웃으로 취급되지 않습니다.

  • 테넌트의 백로그가 완전히 사용되었습니다.

  • 테넌트의 메시지가 5분 동안 연속으로 전송되지 않았습니다.

그 이후에는 테넌트의 메시지의 우선 순위가 더 이상 해제되지 않으며 다른 무음 테넌트의 메시지와 동일하게 처리됩니다.

소비자 용량 고려 사항

동시성 공유 측정값이 효과적으로 작동하려면 소비자가 한 테넌트의 진행 중인 메시지 공유가 눈에 띄도록 충분한 메시지를 동시에 처리해야 합니다. 소비자 플릿의 크기를 조정할 때이 점을 고려하세요.

이벤트 소스 매핑을 통해 Lambda를 소비자로 사용하는 경우 진행 중인 메시지 수는 Lambda 함수 동시성과 배치 크기에 따라 달라집니다. 소비자 크기를 조정할 때 이러한 설정을 함께 평가합니다.

진행 중인 메시지 수가 너무 적어 동시성 공유 임계값을 트리거할 수 없는 경우에도 처리 시간 공유 측정값은 여전히 노이즈가 많은 이웃을 감지할 수 있습니다. 그러나 공정 대기열은 소비자가 두 측정값을 모두 평가하기에 충분한 메시지를 동시에 처리할 때 가장 잘 작동합니다.