1

我正在寻找有关架构的一些高级指导。我有一个供应商将“交易”写入 Kinesis 管道(大约 1MM/天)。我需要一次处理一个事务,验证数据,访问其他 SOAP 或 Rest 服务以获取更多信息,应用一些业务逻辑,并将结果写入 S3。

已经提出的一种方法是使用永远运行的 Spark 作业,在 Spark 环境中提取数据并对其进行处理。这些好处被列举为可共享的缓存数据、SQL 的可用性以及 Spark 的内部知识。

我的想法是拥有一系列处理数据的 Lambda 函数。据我了解,我可以让 Lambda 监视 Kinesis 管道以获取新数据。我想通过一堆小步骤(lambdas)运行提取的数据,每个步骤都在过程中执行一个步骤。这似乎是 Step Functions 的理想用途。关于缓存,如果需要的话,我认为可以使用 ElastiCache 上的 Redis。

这可以使用 Lambda 和 Step Functions 的组合(使用 lambdas)来完成吗?如果可以做到,这是最好的方法吗?我应该考虑哪些其他选择?

4

1 回答 1

0

这可以使用 Lambda 和 Step Functions 的组合来实现。正如您所描述的,lambda 将监视流并启动状态机的新执行,将事务数据作为输入传递给它。您可以在此处查看有关 lambda 运动的更多文档: http ://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html 。然后,状态机会将数据从一个 Lambda 函数传递到下一个函数,在该函数中数据将被处理并写入 S3。您需要联系 AWS 以增加默认的每秒 2 次 StartExecution API 限制以支持 1MM/天。

希望这可以帮助!

于 2017-11-03T22:44:38.340 回答