1

dynamodb documentation에는 조각이 있으며 먼저 반복해야하며 각 조각에 대해 레코드 수를 얻어야한다고 나와 있습니다.스트림 이벤트를 람다 (lambda)로 처리하면 dynamodb 스트림 파편을 신경 써야합니까?

문서는 말한다 :

(당신이 DynamoDB의 스트림 운동성 어댑터를 사용하는 경우,이 당신을 위해 처리됩니다 올바른 순서로 파편과 스트림 레코드를 처리, 자동으로 새를 처리하는 응용 프로그램이나 만료 된 파편뿐만 아니라 응용 프로그램이 더 많은 정보를 얻을 수 있습니다. 실행되는 동안 분할 파편,

확인). 스트림 기록을 처리 할 수있는 DynamoDB의 스트림 운동성 어댑터 사용을 참조하지만하지 운동성 람다를 사용 (OT 그들은 관련 서로에게?) 그리고 람다 함수가 dynamodb stream s에 첨부되어 있다면 파편들 걱정하지 않아도 될까요? 아니면 그냥 labda 코드를 작성해야 aws 환경에서 람다 레코드를 일부만 전달할 것으로 예상해야합니까?

답변

1

람다를 사용하여 DynamoDB 스트림을 사용하는 경우 API를 폴링하고 샤드 추적을 유지하는 작업이 모두 자동으로 처리됩니다. 테이블에 여러 샤드가 있으면 여러 개의 람다 함수가 호출됩니다. 개발자로서 잠재 고객으로부터 람다 함수의 코드를 작성하면 나머지는 여러분을 돌보아줍니다.

In-order 처리는 DynamoDB 스트림에서 계속 보장되므로 단일 샤드에는 한 번에 하나의 Lambda 함수 인스턴스 만 호출됩니다. 그러나 여러 파편이있는 경우 람다 함수의 여러 인스턴스가 동시에 실행되는 것을 볼 수 있습니다. 이 팬 아웃은 투명하며 문제를 일으키거나 람다 함수를 코딩하는 동안이를 인식하지 못하는 경우 놀라운 행동으로 이어질 수 있습니다.

어떻게 작동하는지 자세히 알아 보려면 YouTube 동영상 AWS re:Invent 2016: Real-time Data Processing Using AWS Lambda (SVR301)을 권 해드립니다. 초점은 주로 Kinesis Streams이지만 DynamoDB Stream을 사용하는 것과 동일한 개념이 기술이 거의 동일하므로 적용됩니다.

+0

더 많은 조각을 만들 수 있습니까? 스트림 데이터에 주요 처리량 문제가 있습니다. 테이블에 막대한 양을 쓸 수는 있지만 이벤트 스트림은 테이블에 쓰는 속도에 비해 상대적으로 낮은 속도로 고정되어있는 것으로 보입니다. 내 파티션 키는 본질적으로 임의의 uuid이므로 더 많은 파편을 만드는 방법을 잘 모르겠습니다. –

+0

파티션을 분할하기 위해 일시적으로 쓰기 작업을 매우 높은 수준으로 확장 할 수 있지만 경고는 스트림뿐만 아니라 항목을 읽고 쓸 수있는 능력에 영향을 미칠 것이라고 경고합니다. 첫 번째 샤드를 2로 나누려면 3,000 읽음 또는 1,000 쓰기를 설정해야합니다. 또는 작업을 수행하는 것이 비 효과적이라면 비동기 적으로 호출하여 다른 람다 함수에 적용하는 것이 가장 좋습니다. – JaredHatfield

+0

감사합니다. 실제 숫자는 약간 불투명합니다. 이 표에서 자동 크기 조정을 사용하고 있지만 실제로는 수동으로 높게 조정 한 후 병동에 자동으로 다시 조정할 수 있습니다. 나는 람다 팬을 고려하고있다. 그러나 나는 거기에서 무한 루프를 두려워한다. 조심해야 해. 나는 심지어 그들을 파편을 제어 할 수있는 또 다른 키네 시스 흐름으로 그들을 슬램 팅하는 것을 고려하고있다. 수동으로 또는 무언가로 16을 설정하라. 지금 당장 나는 다른 람다 (lambda)가 처리 속도가 빨라서 람다 (lambda)에서 실제 코드를 최적화하려고 시도하고 있음을 깨닫고 있습니다. –

0

DynamoDB를 사용하여 매일 수십억 개의 레코드를 처리하고 해당 레코드를 자동으로 실행하고 스트림으로 보냅니다.

모든 것이 AWS에서 처리되므로 스트림 (원하는 이미지 유형)을 구성하고 트리거를 추가하는 것 외에는 아무 것도 할 필요가 없습니다. 당신은 더 많은 데이터를 얻을 때

우리가했던 유일한 미세 조정,

, 우리는 더 빨리 처리하고 람다에 대한 호출의 수에 오버 헤드를 줄이기 위해 배치 크기 증가했다.

외부 프로세스를 사용하여 스트림을 반복하는 경우 동일한 작업을 수행해야 할 수도 있습니다.

참조 :

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html

그것이 도움이되기를 바랍니다.

+0

어떤 배치 크기를 사용하고 있습니까? 또한 테이블 스트림이 나를 위해 매우 느리거나 단일 샤드에 고정되어있는 것 같습니다. 스트림에서 호출 한 병렬 람다의 수를 늘리려면 샤드의 수를 어떻게 늘릴 수 있습니까? –

+0

우리의 일괄 처리 크기는 100입니다. 우리는 그 메시지에 대한 비즈니스 논리를 수행하지 않으며, 거기에서 배포하기 위해이 메시지를 사용합니다. 스트림에서 병렬 lambda를 호출하는 방법이 있다는 것을 나는 알지 못한다. – Kannaiyan