运动数据流不是实时的?
kinesis data stream is not real time?
获得了在运动流消息上触发的函数 (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。
您将批量大小设置为 100,这会告诉 Lambda 在调用您的函数之前读取 100 条记录。
有2个与批处理相关的设置。
- 批量大小——从每个分片中读取的记录数
批次,最多 10,000 个。 Lambda 将批次中的所有记录传递给
该函数在一次调用中,只要
事件不超过同步调用的负载限制(6
MB).
- 批次window – 指定收集记录的最长时间
在调用函数之前,以秒为单位。
在调用您的函数之前,Lambda 会继续从流中读取记录,直到收集到完整的批次,或者直到批次 window 过期。
我还没有用这 2 个设置进行性能测试,但我会先将大小设置为 1,将 window 设置为 0。但是,启动大量 Lambda 可能会产生副作用但它应该给你尽可能少的延迟。
获得了在运动流消息上触发的函数 (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。
您将批量大小设置为 100,这会告诉 Lambda 在调用您的函数之前读取 100 条记录。
有2个与批处理相关的设置。
- 批量大小——从每个分片中读取的记录数 批次,最多 10,000 个。 Lambda 将批次中的所有记录传递给 该函数在一次调用中,只要 事件不超过同步调用的负载限制(6 MB).
- 批次window – 指定收集记录的最长时间 在调用函数之前,以秒为单位。
在调用您的函数之前,Lambda 会继续从流中读取记录,直到收集到完整的批次,或者直到批次 window 过期。
我还没有用这 2 个设置进行性能测试,但我会先将大小设置为 1,将 window 设置为 0。但是,启动大量 Lambda 可能会产生副作用但它应该给你尽可能少的延迟。