2017-01-24 2 views
-1

AWS SQS Queue 구현을 시도하여 백엔드 서버와의 데이터베이스 상호 작용을 최소화했지만 문제가 있습니다.AWS SQS queue 성능 향상

  • 하나의 SQS 대기열에서 메시지를 찾는 소비자 프로세스가 하나 있습니다.
  • 클라이언트가 웹 인터페이스에서 버튼을 클릭하면 JSON 메시지가 SQS 대기열에 저장됩니다.
  • 응용 프로그램 서버의 백엔드 작업은 SQS 대기열에서 JSON 메시지를 가져 와서 대기열에서 메시지를 삭제하고 처리합니다.

기능을 테스트하기 위해 하나의 클라이언트에 대한 로직을 구현했습니다. 잘 돌아 갔어. 그러나 3 개의 클라이언트를 추가 할 때 제대로 작동하지 않았습니다. SQS 대기열에 500 개의 메시지가 쌓여 있고 백엔드 작업이 대기열에서 올바르게 읽히고 있음을 알 수있었습니다.

백엔드 작업 수를 늘리거나 클라이언트 SQS 대기열 수를 늘려야합니까? 현재 모든 클라이언트가 동일한 큐로 메시지를 보냅니다.

필요한 백엔드 작업 수는 어떻게 계산합니까? 또한 SQS를 더 빨리 작동시킬 수있는 설정이 있습니까?

+1

우리는 더 많은 정보가 필요합니다. 나는 문제없이 SQS를 통해 수백 메시지/초를 밀어 넣었습니다. 코드/세부 정보가 필요합니다. – stdunbar

+1

"500 메시지로 갇혔다"는게 무슨 소리 야? 여기서 정확히 작동하지 않는 것은 무엇입니까? 대기열에 메시지를 추가 할 수 없다는 말입니까? SQS 큐는 메시지를 저장합니다. SQS가 수행하는 "일"이 없으므로 "일을 더 빨리"한다는 의미를 이해하지 못합니다. 다음과 같이 필요한 백엔드 작업 수를 계산합니다. 대기열의 항목이 원하는만큼 빨리 처리되지 않으면 더 많은 작업자를 추가합니다. –

+0

정보를 제공해 주셔서 감사합니다. 초당 저장할 수있는 메시지 수에 제한이 있는지 궁금합니다. 제한이 없으므로 더 많은 작업자 스레드를 추가하고 체크 아웃하는 것처럼 보입니다. – Arav

답변

2

대기열에 메시지를 저장하는 것이 좋습니다. 사실 대기열을 사용하는 것이 좋습니다.

백엔드 시스템이 생성 된 속도로 메시지를 소비 할 수없는 경우 큐는 처리 될 때까지 메시지를 보관할 버퍼로 작동합니다. 좋은 예는이 AWS 재입니다 : Building Elastic, High-Performance Systems with Amazon SQS and Amazon SNS

그 다음 규모 당신의 소비자가 메시지 생산의 속도에 맞게 신속하게 메시지를 처리하는 것이 중요 경우 대기열이 2 억 개 이상의 메시지와 함께 표시됩니다 프리젠 테이션을 발명 (또는 더 빨라서 백 로그를 사용할 수 있습니다).

프로세스가 "SQS 대기열에서 JSON 메시지를 가져 와서 대기열에서 메시지를 삭제하고 처리합니다."라고 언급했습니다. 가장 좋은 방법은 대기열에서 메시지를 받고 처리하고 을 삭제 한 다음 (완전히 처리 한 후)을 삭제하는 것입니다. 이렇게하면 프로세스가 실패 할 경우 메시지가 정의 된 보이지 않는 기간 후에 대기열에 자동으로 다시 나타납니다. 이렇게하면 응용 프로그램이 실패에보다 탄력적입니다.

+0

정보를 제공해 주셔서 감사합니다. 비디오 링크를 볼 것입니다. 현재 클라이언트가 기다리고 있다면 나는 소비자를 늘릴 것입니다. 내가 소비자를 늘릴 수 있음을 나타낼 수있는 aws 콘솔에서 볼 수있는 통계가 있습니까? SWF에 대해 더 알고 싶습니다. 좋은 비디오 링크를 공유하면 swf를 만드는 방법이 내가 이론적 인 부분을 논의 해 본 대부분의 비디오처럼 좋을까요? – Arav

+0

Amazon CloudWatch에는 Amazon SQS 대기열에있는 메시지 수에 대한 메트릭이 있습니다. 이러한 측정 항목을 자동 크기 조정과 함께 사용하면 대기열이 원하는 크기 이상으로 커질 때 자동으로 용량을 추가 할 수 있습니다. 참조 : [CloudWatch를 사용하여 Amazon SQS 모니터링] (http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/MonitorSQSwithCloudWatch.html) Amazon Simple Workflow (SWF)의 경우 [AWS Reinvent video] (https://www.youtube.com/watch?v=HR3XyvHFYEg). –

+0

지연된 응답에 대해 사과드립니다. 고마워. – Arav