Kinesis Data Firehose 源“Direct PUT”与“Kinesis Data Stream”
Kinesis Data Firehose source `Direct PUT` vs `Kinesis Data Stream`
当我创建 Kinesis Data Firehose 流时,Source 有 2 个选项,
- 直接 PUT 或其他来源
- Kinesis 数据流
这些选项的优点和缺点是什么?
它们有不同的用途。但是,如果您的目标只是注入记录以在 S3、Redshift 或 ElasticSearch 中存储(并可选地转换),那么主要区别在于简单性。
直接 PUT 或其他来源
允许直接“手动”将记录注入 firehose
。对于摄取,您或您的应用程序必须使用 put-record or put-record-batch.
这些 api 调用使用起来非常简单直接,从某种意义上说,您不需要管理记录分区。因为您只需向他们提供 firehose
名称和要写入的记录。没有其他东西被重新获取。
此外 firehose
基本上是无服务器的,因此您无需管理其扩展或配置其吞吐量。这一切都自动为您完成。
但是,firehose
不完全“实时”。由于超时和缓冲,您的记录总是会延迟。
Kinesis 数据流
如果您在 firehose
前面加上 kinesis stream
,那么您必须将记录注入到流中。为此,您使用 put-record and or put-records。如果您查看这些 api 调用,它们 更复杂 因为您必须自己管理 key partitioning
。你必须正确地做到这一点,否则你最终会得到 hot/cold 个碎片并担心如何解决它。
而且 data streams
不是无服务器的,因为它们 不会自动缩放 。您必须自己管理他们的吞吐量。这意味着您必须计算并提供所需的分片数量。如果操作不当,就会出现问题。
结论
如果您只打算将记录存储(转换)到支持的存储目的地,请选择直接放入 firehose
。
如果您不仅需要存储,而且还需要用 中的记录做 其他事情,请选择在 firehose
前面使用运动数据流实时。这是因为您可以有除 firehose
之外的其他流消费者,它们确实需要实时数据。
主要区别(假设您没有向流附加任何其他内容)是您需要支持票证才能扩展 Firehose。
根据 docs:
When Direct PUT is configured as the data source, each Kinesis Data Firehose delivery stream provides the following combined quota for PutRecord and PutRecordBatch requests:
For US East (N. Virginia), US West (Oregon), and Europe (Ireland): 5,000 records/second, 2,000 requests/second, and 5 MiB/second.
For US East (Ohio), US West (N. California), AWS GovCloud (US-East), AWS GovCloud (US-West), Asia Pacific (Hong Kong), Asia Pacific (Mumbai), Asia Pacific (Seoul), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), Canada (Central), Europe (Frankfurt), Europe (London), Europe (Paris), Europe (Stockholm), Middle East (Bahrain), and South America (São Paulo): 1,000 records/second, 1,000 requests/second, and 1 MiB/second.
To request an increase in quota, use the Amazon Kinesis Data Firehose Limits form.
相比之下,Kinesis 流让您可以根据分片数量控制缩放:每秒 1,000 条记录或每个分片 1 MB/second 摄取。如果您发现需要更多容量,可以轻松增加分片数量。
另一个区别是,如果目标不可用,Firehose 仅将记录保留 24 小时,而 Kinesis 流可以配置为最多保留一周的记录。
为了获得稳健的架构,我建议结合使用 Kinesis 流进行摄取,并使用 Firehose 进行批处理和写入目标。
当我创建 Kinesis Data Firehose 流时,Source 有 2 个选项,
- 直接 PUT 或其他来源
- Kinesis 数据流
这些选项的优点和缺点是什么?
它们有不同的用途。但是,如果您的目标只是注入记录以在 S3、Redshift 或 ElasticSearch 中存储(并可选地转换),那么主要区别在于简单性。
直接 PUT 或其他来源
允许直接“手动”将记录注入 firehose
。对于摄取,您或您的应用程序必须使用 put-record or put-record-batch.
这些 api 调用使用起来非常简单直接,从某种意义上说,您不需要管理记录分区。因为您只需向他们提供 firehose
名称和要写入的记录。没有其他东西被重新获取。
此外 firehose
基本上是无服务器的,因此您无需管理其扩展或配置其吞吐量。这一切都自动为您完成。
但是,firehose
不完全“实时”。由于超时和缓冲,您的记录总是会延迟。
Kinesis 数据流
如果您在 firehose
前面加上 kinesis stream
,那么您必须将记录注入到流中。为此,您使用 put-record and or put-records。如果您查看这些 api 调用,它们 更复杂 因为您必须自己管理 key partitioning
。你必须正确地做到这一点,否则你最终会得到 hot/cold 个碎片并担心如何解决它。
而且 data streams
不是无服务器的,因为它们 不会自动缩放 。您必须自己管理他们的吞吐量。这意味着您必须计算并提供所需的分片数量。如果操作不当,就会出现问题。
结论
如果您只打算将记录存储(转换)到支持的存储目的地,请选择直接放入 firehose
。
如果您不仅需要存储,而且还需要用 中的记录做 其他事情,请选择在 firehose
前面使用运动数据流实时。这是因为您可以有除 firehose
之外的其他流消费者,它们确实需要实时数据。
主要区别(假设您没有向流附加任何其他内容)是您需要支持票证才能扩展 Firehose。
根据 docs:
When Direct PUT is configured as the data source, each Kinesis Data Firehose delivery stream provides the following combined quota for PutRecord and PutRecordBatch requests:
For US East (N. Virginia), US West (Oregon), and Europe (Ireland): 5,000 records/second, 2,000 requests/second, and 5 MiB/second.
For US East (Ohio), US West (N. California), AWS GovCloud (US-East), AWS GovCloud (US-West), Asia Pacific (Hong Kong), Asia Pacific (Mumbai), Asia Pacific (Seoul), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), Canada (Central), Europe (Frankfurt), Europe (London), Europe (Paris), Europe (Stockholm), Middle East (Bahrain), and South America (São Paulo): 1,000 records/second, 1,000 requests/second, and 1 MiB/second.
To request an increase in quota, use the Amazon Kinesis Data Firehose Limits form.
相比之下,Kinesis 流让您可以根据分片数量控制缩放:每秒 1,000 条记录或每个分片 1 MB/second 摄取。如果您发现需要更多容量,可以轻松增加分片数量。
另一个区别是,如果目标不可用,Firehose 仅将记录保留 24 小时,而 Kinesis 流可以配置为最多保留一周的记录。
为了获得稳健的架构,我建议结合使用 Kinesis 流进行摄取,并使用 Firehose 进行批处理和写入目标。