【发布时间】:2017-07-03 09:11:13
【问题描述】:
我正在尝试在 AWS 服务之上构建数据收集管道。下面给出了总体架构;
总之,系统应该从 API 网关 (1) 获取事件(每个事件一个请求),并且数据应该写入 Kinesis (2)。
我预计每秒约 100k 个事件。我的问题与 Lambda 函数上的 KPL 使用有关。在第 2 步中,我计划使用 KPL 编写一个 Lambda 方法,以便在 Kinesis 上以高吞吐量编写事件。但我不确定是否有可能,因为 API Gateway 分别为每个事件调用 lambda 函数。
在这样的架构中使用 KPL 是否可能/合理,或者我应该使用 Kinesis Put API 来代替?
1 2 3 4
+----------------+ +----------------+ +----------------+ +----------------+
| | | | | | | |
| | | | | | | |
| AWS API GW +-----------> | AWS Lambda +-----------> | AWS Kinesis +----------> | AWS Lambda |
| | | Function with | | Streams | | |
| | | KPL | | | | |
| | | | | | | |
+----------------+ +----------------+ +----------------+ +-----+-----+----+
| |
| |
| |
| |
| |
5 | | 6
+----------------+ | | +----------------+
| | | | | |
| | | | | |
| AWS S3 <-------+ +----> | AWS Redshift |
| | | |
| | | |
| | | |
+----------------+ +----------------+
我也在考虑直接写入 S3,而不是从 api-gw 调用 lambda 函数。如果第一个架构不合理,这可能是一个解决方案,但在这种情况下,我将延迟将数据写入 kinesis
1 2 3 4 5
+----------------+ +----------------+ +----------------+ +----------------+ +----------------+
| | | | | | | | | |
| | | | | | | | | |
| AWS API GW +-----------> | AWS Lambda +------> | AWS Lambda +-----------> | AWS Kinesis +----------> | AWS Lambda |
| | | to write data | | Function with | | Streams | | |
| | | to S3 | | KPL | | | | |
| | | | | | | | | |
+----------------+ +----------------+ +----------------+ +----------------+ +-----+-----+----+
| |
| |
| |
| |
| |
6 | | 7
+----------------+ | | +----------------+
| | | | | |
| | | | | |
【问题讨论】:
标签: amazon-web-services aws-lambda aws-api-gateway amazon-kinesis