许多用于无服务器实时分析的 AWS 引用架构建议通过 Kinesis Firehose 将处理过的数据从 Lambda 推送到 S3。
例如
https://aws.amazon.com/blogs/big-data/create-real-time-clickstream-sessions-and-run-analytics-with-amazon-kinesis-data-analytics-aws-glue-and-amazon-athena/
为什么我们不能直接从 Lambda 推送数据到 S3?通过跳过中介 Kinesis Firehose 组件来避免复杂性和额外成本不是更好吗? Lambda 将实时数据直接写入 S3 有什么问题吗?
最佳答案
主要是因为 Firehose 使您能够批量处理数据。它会例如仅将 128mb 数据的文件写入 S3。它将收集传入数据,直到达到阈值,将其写入 S3 并等待下一个数据。如果您让 lambda 直接写入 S3,那么您将不得不自己进行批处理,如果您只有无状态 lambda,这将非常困难。
话虽如此,这主要适用于您的数据由许多记录/行组成的情况。另一方面,如果您基本上处理的是 lambda 输出的 50MB 数据块,那么您可以/应该直接写入 S3,因为在您的情况下批处理可能不可行或没有用。
您是否应该使用 firehose 仅取决于您拥有的数据/吞吐量以及可能的要求。
直接将实时数据写入 S3 的一个问题是,如果您想例如使用 Athena 查询它,如果您有数百万个大小为几个字节的文件而不是 100 个大小为 10 个 MB 的文件,您会遇到很多麻烦。
关于amazon-web-services - 在近实时分析中,为什么 Lambda-->Firehose-->S3 优于 Lambda-->S3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65458856/