许多亚马逊网络服务的无服务器实时分析参考架构建议通过Kinesis Firehose将处理后的数据从Lambda推送到S3。
为什么我们不能直接将数据从Lambda推送到S3?通过跳过mediator Kinesis Firehose组件来避免复杂性和额外成本不是更好吗?通过Lambda将实时数据直接写入S3有什么问题吗?
发布于 2020-12-27 01:42:19
主要是因为Firehose允许您对数据进行批处理。例如,它只会将128mb数据的文件压缩到S3中。它将收集传入的数据,直到达到阈值,将其写入S3并等待下一个数据。如果您让lambda直接写入S3,那么您将不得不自己进行批处理,如果您只有无状态的lambda,这是相当困难的。
也就是说,这主要适用于您的数据由许多记录/行组成的情况。另一方面,如果您基本上是在处理lambda输出的大小为50MB的数据,那么您可以/应该直接写入S3,因为在您的情况下,批处理可能是不可能的,也不是很有用。
你是否应该使用firehose仅仅取决于你有什么数据/吞吐量以及可能有什么需求。
直接将实时数据写入S3的一个问题是,如果你想用雅典娜查询它,如果你有几百万个几个字节大的文件,而不是100个大小为10 MB的文件,你会遇到很多麻烦。
https://stackoverflow.com/questions/65458856
复制相似问题