来自 API 网关 VS kinesis Streams 的 Lambda
Posted
技术标签:
【中文标题】来自 API 网关 VS kinesis Streams 的 Lambda【英文标题】:Lambda from API gateway VS kinesis Streams 【发布时间】:2017-02-26 11:37:57 【问题描述】:背景
我正在研究 AWS kinesis,API 网关。
我知道,每当请求到达 API 网关时,我可以将数据转发到流,或者我可以选择触发 lambda(它将进行一些处理)。
想法和疑问
所以,我的想法是,如果我可以直接从 API 网关触发 lambda(当请求到达时,它是实时的),拥有 kinesis 流(用于实时数据处理)有什么好处?
我可以删除流并直接从 API 网关触发 lambda(甚至为不同的任务创建多个 API)
在这种情况下的任何想法!
【问题讨论】:
【参考方案1】:您使用的解决方案实际上取决于您正在处理的数据以及您想用它做什么。有关您方案的数据和结果的更多信息可能会缩小适合 AWS 的范围。以下是 3 个选项的简化:
Kinesis Streams 基本上为大量数据提供了一个时移窗口。它负责将数据存储足够长的时间,以便您可以挑选相关数据或执行聚合。您对数据的分析可以存储在数据库中。当存储所有传入的数据是不必要且成本高昂时,Kinesis Streams 是一个不错的选择。
Kinesis Firehose 为您提供了一个端点,可以将数据发送到 S3、Redshift 或 Elastic Search(或某种组合)。然后,您可以对该存储的数据执行分析。如果您只想将原始数据保存在数据库中以供以后处理,这是一个不错的选择。但是,您需要为该数据的存储付费。如果您只需要数据或分析结果的一个子集,成本会很高。
到 Lambda 的 API 网关允许您实时处理数据。 lambda 可以对数据做任何你想做的事情,这个解决方案让你拥有最大的灵活性。但是您必须单独处理每个请求,而 Kinesis Streams 允许您分析一批数据。
【讨论】:
【参考方案2】:这取决于客户端访问的频率和 lambda 函数的时间长度。
lambda 函数的并发执行次数限制为 100。当 lambda 受到限制时,API Gateway 和 Kinesis 流的重试方法不同。
见https://docs.aws.amazon.com/lambda/latest/dg/concurrent-executions.html。
您可能想要检查请求率的估计值。
此外,请记住 Kinesis 流保证数据到达分片的顺序。
【讨论】:
默认的并发执行次数限制为 100 以避免失控成本,或在无限递归中意外产生 lambdas。这是一个安全限制。您引用的链接使请求增加限制看起来很容易。我发现亚马逊的速度非常快,并且可以理解您可能需要的大多数限制增加。 我相信他们已经将此限制提高到 1000。来源:您的链接。 @shirono.kei以上是关于来自 API 网关 VS kinesis Streams 的 Lambda的主要内容,如果未能解决你的问题,请参考以下文章
API网关性能比较:NGINX vs. ZUUL vs. Spring Cloud Gateway vs. Linkerd
API网关性能比较:NGINX vs. ZUUL vs. Spring Cloud Gateway vs. Linkerd(转)
来玩 Serverless: 如何把 Express 应用迁移到 Amazon API 网关和 AWS Lambda 上