首页 文章

Lambda来自API网关VS kinesis Streams

提问于
浏览
4

Background

我正在研究AWS kinesis,API网关 .

我明白,每当请求命中API网关时,我都可以将数据转发到流中,或者我可以选择触发lambda(将进行一些处理) .

Thoughts and Query

所以,我的想法是,如果我可以直接从API网关触发一个lambda(当请求到达时,它是实时的),有一个kinesis流(用于实时数据处理)的优势是什么?

我可以删除流并直接从API网关触发lambda(甚至为不同的任务创建多个API)

在这种情况下的任何想法!

2 回答

  • 7

    您使用的解决方案实际上取决于您正在处理的数据以及您想要使用的数据 . 有关您的方案的数据和结果的更多信息可以缩小AWS的合适范围 . 这是3个选项的简化:

    • Kinesis Streams基本上为大量数据提供时移窗口 . 它负责存储数据足够长的时间,以便您可以挑选相关数据或执行聚合 . 您对数据的分析可以存储在数据库中 . 当存储所有数据时,Kinesis Streams是一个不错的选择,并且成本很高 .

    • Kinesis Firehose为您提供将数据发送到S3,Redshift或Elastic Search(或某种组合)的 endpoints . 然后,您可以对存储的数据执行分析 . 如果您只希望原始数据最终存储在数据库中以供以后处理,那么这是一个不错的选择 . 但是,您需要为该数据的存储付费 . 如果您只需要数据的子集或分析结果,则成本很高 .

    • API网关到Lambda允许您实时处理数据 . lambda可以对数据执行任何操作,您可以使用此解决方案获得最大的灵活性 . 但您必须单独处理每个请求,而Kinesis Streams允许您分析一批数据 .

  • 1

    它取决于客户端访问的频率和lambda函数的时间长度 .

    lambda函数的并发执行次数限制为100.当lambda被限制时,API Gateway和Kinesis流之间的重试方法不同 .

    https://docs.aws.amazon.com/lambda/latest/dg/concurrent-executions.html .

    您可能想要检查请求率的估计 .

    此外,请记住,Kinesis流保证数据到达分片的顺序 .

相关问题