运动数据流不是实时的?

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

有一个在运动学流消息上触发的函数(serverless.yml):

functions:
  kinesis-handler:
    handler: kinesis-handler.handle
    events:
      - stream:
          type: kinesis
          arn:
            Fn::Join:
              - ':'
              - - arn
                - aws
                - kinesis
                - Ref: AWS::Region
                - Ref: AWS::AccountId
                - stream/intercom-stream
          startingPosition: LATEST
          batchSize: 100
          enabled: true

该函数确实会最终触发(发送消息后2-5秒),但不会立即触发。这是设计使然吗?我可以假设运动学数据流不适用于(近)实时事件驱动的体系结构吗?

当触发器是运动流时,实际上触发lambda的是什么?似乎每隔1-2秒就有一次后台定期轮询,如果在流中发现新消息,则触发lambda。

amazon-web-services aws-lambda serverless-framework amazon-kinesis
1个回答
0
投票

您将批次大小设置为100,这告诉Lambda在调用函数之前先读取100条记录。

有两个与批处理相关的设置。

  • 批处理大小–每个分片中要读取的记录数最多10,000个。 Lambda将批次中的所有记录传递给该函数在一次调用中,只要事件未超过同步调用的有效负载限制(6MB)。
  • 批处理窗口–指定收集记录的最长时间在调用该功能之前,以秒为单位。

在调用函数之前,Lambda继续从流中读取记录,直到它收集了完整的批次,或者直到批次窗口到期为止。

我还没有使用这2个设置进行性能测试,但首先要将我的大小设置为1,将窗口设置为0。但是,启动大量Lambda可能会产生副作用,但是应该给您最小的可能会延迟。

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