阅读两种服务(Firehose 和 Streams)的文档后,听起来 Firehose 是“接近”实时的,可能在产生消息到发射之间有 60 秒的延迟,而 Streams 的文档没有提到这个潜在的延迟。请问有没有任何现实世界的见解,关于消息传递时间方面的差异?
【注】链接到 Firehose FAQ,提到基于 S3 事件缓冲区大小的延迟。
【注】链接到 Firehose FAQ,提到基于 S3 事件缓冲区大小的延迟。
这让我感到惊讶,促使我进行调查并报告我的发现。我曾看到Firehose在几种架构中被用作中间件,增加一分钟的延迟可能似乎是适得其反的。此外,水压下的压力可能会误导我,它更关注于包含和引导这种压力。流体动力学总是很难的。
目标缓冲区大小和缓冲区间隔
缓冲区大小和缓冲区间隔
Kinesis Data Firehose将传入的流数据缓冲到一定大小或一定时间后再将其传递到目的地。缓冲区大小以MB为单位,缓冲区间隔以秒为单位。
在我看来,Kinesis Firehose 更像是一个缓冲区,收集数据直到缓冲区满或其中最旧的消息达到 N 秒(N 由用户配置;我认为最大值为 900 秒),此时整个缓冲区内容将被写入其目标位置(例如 S3)。与 Streams 不同,无需担心扩展。
我不能完全评论 Kinesis Streams,因为我没有生产性地使用过它们。但是,Streams 比分区键所建议的缓冲区要复杂得多。这是解决 Firehose 尝试解决的同一问题的不同方法,但在处理方式/位置方面更加灵活。
也许这会比我更好地澄清什么是什么 :) https://www.sumologic.com/wp-content/uploads/DemystifyingAmazonKinesis_infographic.pdf