本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
清理资源
由于您需要付费使用 Kinesis 数据流,请确保在使用完后删除流和相应的 Amazon DynamoDB 表。即使您不发送和获取记录,活动流也会产生象征性的费用。这是因为活动流将持续“侦听”传入记录和获取记录的请求,这将耗用资源。
删除流和表
-
关闭所有可能仍在运行的生产商和消费者。
-
选择为此应用程序创建的流 (
StockTradeStream
)。 -
选择 Delete Stream (删除流)。
打开 DynamoDB 控制台,网址为。https://console.aws.amazon.com/dynamodb/
-
删除
StockTradesProcessor
表。
Summary
近乎实时地处理大量数据不需要编写复杂的代码或开发庞大的基础架构。它与编写处理少量数据(例如写入processRecord(Record)
)的逻辑一样基本,但是使用Kinesis Data Streams进行扩展,使其适用于大量的流数据。您无需担心处理的扩展方式,因为 Kinesis Data Streams 将为您完成这一工作。您只需将流记录发送到 Kinesis Data Streams 并编写用于处理收到的每条新记录的逻辑。
以下是针对此应用程序的一些可能的改进。
- 跨所有分片进行聚合
-
当前,通过聚合单个分片中单个工作线程收到的数据记录来获得统计数据。(一个分片不能同时由单个应用程序中的多个工作线程处理。) 当然,当您扩展并具有多个分片时,可能希望跨所有分片聚合。可通过部署管道架构完成此操作。在该架构中,每个工作线程的输出都注入具有单个分片的另一个流,分片由聚合第一个阶段输出的工作线程处理。由于来自第一个阶段的数据是有限的(每分片每分钟一个示例),因此一个分片即可轻松处理它。
- 缩放处理
-
当流进行扩展以包含多个分片(因为多个创建器正在发送数据)时,扩展处理的方式是添加更多工作程序。您可以在 Amazon EC2 实例中运行工作程序并使用 Auto Scaling 群组。
- 使用 Amazon S3/DynamoDB/Amazon Redshift/Storm 连接器
-
在连续处理流时,其输出可以发送到其他目的地。 AWS 提供了用于将 Kinesis Data Streams AWS 与其他服务和第三方工具集成的连接器
。