2017-03-09 6 views
0

현재 대량의 센서 데이터를 수신하는 애플리케이션이 있습니다. 각 센서는 고유 한 센서 ID (예 : '5834f7718273f92cc326f620')를 가지고 있으며 서로 다른 간격으로 상태를 표시합니다. 들어오는 메시지의 처리 순서는 중요하지 않습니다. 예를 들어 다른 센서의 이전 메시지보다 한 센서의 최신 메시지를 처리 ​​할 수 ​​있습니다. 그래도 상관 없지만 주어진 센서에 대한 각 메시지는 순차적으로 처리되어야합니다. 그들이 스트림에 도착한 순서대로.AWS Kinesis 스트림 (FIFO 대기열)

Kinesis 클라이언트 라이브러리를 살펴본 결과, KCL이 샤드 당 하나의 프로세서에 메시지를 푸시한다는 것을 이해했습니다. 즉, 스트림에 하나의 샤드 만있는 경우 프로세서가 하나만있어 병목 현상을 만들 수 없습니까? 아니면 KCL에 둘 이상의 프로세서가 있으며, 어쨌든 파티션 키를 사용하면 같은 파티션 키를 가진 메시지가 동시에 처리되지 않을 수도 있습니다.

참고 : sqs fifo를 살펴 보았지만 초당 300 개의 메시지 제한이 곧 문제가 될 수 있으므로이를 제외 시켰습니다.

답변

1

예, 각 샤드는 주어진 순간 (애플리케이션 당)에만 하나의 프로세서 만 가질 수 있습니다.

그러나 센서 ID를 키네틱 풋 레코드 요청의 파티션 키로 사용할 수 있습니다. (see here)

이렇게하면 모든 센서 이벤트가 동일한 샤드 및 프로세서에 들어갈 것입니다. 이렇게하면 프로세스와 샤드의 크기를 조정할 수 있으며 단일 프로세서에서 각 센서 이벤트를 처리 할 수 ​​있습니다.

관련 문제