与Kinesis Stream中的PutRecords相比,GetRecords计数过多,导致重复记录

问题描述 投票:0回答:1

我有一个具有三个分片的Kinesis流,并且Producer应用程序使用随机的分区键将其写入该流。在Kinesis Metric中,我发现GetRecords.Records的计数几乎是PutRecords.Records计数的两倍。

精确计数(在一分钟内:)>

PutRecords.Records:10749

GetRecords.Records:21496

因此,在我的情况下,lambda的Kinesis记录处理器将获得很多重复的记录。

AWS文档确实建议在“at least once” delivery mechanism of Kinesis stream.处进行一些重复,但是GetRecords的几乎两倍不是很合适。这是我的处理器lambda的SAM模板。

  MyStream:
  Type: AWS::Kinesis::Stream
  Properties:
    Name: my-stream
    ShardCount: 3

  MyStreamProcessorLambda:
   Type: AWS::Serverless::Function
   Properties:
    FunctionName: my-stream-processor-lambda
   ...
   ...
   Events:
    Stream:
      Type: Kinesis
      Properties:
        Stream: !Ref MyStream
        BatchSize: 10000
        StartingPosition: LATEST
        MaximumBatchingWindowInSeconds: 300

现在,处理器lambda通过强制执行DB约束而成为幂等,以使来自Batch的同一记录永远不会插入DB中。而且Lambda的错误率是0。(Lambda没有错误/重试

)流度量标准中的

<<< [[[GetRecords.IteratorAgeMilliseconds

0读取/写入吞吐量超出]0。因此,我想摆脱批处理中的那些重复记录,lambda正在处理。这里任何配置出错了吗?

我有一个具有三个分片的Kinesis流,并且Producer应用程序使用随机的分区键将其写入该流。在Kinesis Metric中,我发现GetRecords.Records的计数几乎是...

amazon-web-services aws-lambda stream duplicates amazon-kinesis
1个回答
0
投票
SubscribeToShard也从

GetRecords

© www.soinside.com 2019 - 2024. All rights reserved.