DynamoDBMapper&Streams

DynamoDBMapper

AWS SDK for Java 提供了 DynamoDBMapper 类,使您能够将客户端类映射到 Amazon DynamoDB 表。要使用 DynamoDBMapper,您应在代码中定义 DynamoDB 表中项目与其相应对象实例之间的关系。利用 DynamoDBMapper 类,您能够访问自己的表,执行各种创建、读取、更新和删除 (CRUD) 操作,并执行查询。
参考:DynamoDB持久层框架
本文不对此做阐述,有兴趣可以自行aws文档查阅。

Streams使用 Amazon DynamoDB 更改数据捕获

当存储在 DynamoDB 表中的项目发生更改时,许多应用程序都会因能够捕获此类更改而受益。下面是一些用例示例:

  • 一个热门移动应用程序以每秒数千次更新的速率修改 DynamoDB
    表中的数据。第二个应用程序捕获和存储有关这些更新的数据,并提供针对该移动应用程序的近乎实时用量指标。
  • 财务应用程序修改 DynamoDB
    表中的股票市场数据。并行运行的不同应用程序实时跟踪这些变化,计算风险价值,并根据股票价格变动自动重新平衡投资组合。
  • 运输车辆和工业设备中的传感器将数据发送到 DynamoDB
    表中。不同的应用程序监控性能并在检测到问题时发送消息警报,通过应用机器学习算法预测任何潜在缺陷,并将数据压缩和存档到 Amazon
    Simple Storage Service (Amazon S3)。
  • 一旦某个好友上传新图片,一个应用程序就会自动向群组中的所有好友的移动设备发送通知。
  • 一个新客户将数据添加到 DynamoDB 表。此事件调用另一个应用程序,以便向该新客户发送欢迎电子邮件。

DynamoDB 支持近实时流式处理项目级别更改数据捕获记录。可以构建使用这些流并根据内容采取操作的应用程序。
DynamoDB 提供了两个用于更改数据捕获的流模型:Kinesis Data Streams for DynamoDB 和 DynamoDB Streams。
为了帮助选择适合应用程序的解决方案,下表总结了每个流式处理模型的功能。

在这里插入图片描述
我们重点说一下Kinesis Data Streams

使用 Kinesis Data Streams 捕获 DynamoDB 的更改

Kinesis Data Streams 捕获任何 DynamoDB 表中的项目级别修改,并将它们复制到 Kinesis Data Streams。您的应用程序可以访问此数据流,近实时查看项目级别的更改。

DynamoDB 表启用 Kinesis Data Streams

可以使用 AWS Management Console、AWS SDK 或 AWS Command Line Interface (AWS CLI),启用或禁用从现有 DynamoDB 表流式传输到 Kinesis。

  • 您只能从 DynamoDB 流式传输到从同一 AWS 账户和 AWS 区域中的 Kinesis Data Streams 作为您的表。
  • 您只能将数据从 DynamoDB 表流式传输到一个 Kinesis 数据流。

Kinesis Data Streams

为 DynamoDB 表启用 Kinesis 数据流时,该表将发送一条数据记录,其中捕获该表数据的任何更改。此数据记录包括:

  • 最近创建、更新或删除任何项目的具体时间
  • 该项目的主键
  • 修改前项目的镜像
  • 修改后项目的镜像

将近乎实时地捕获并发布这些数据记录。将它们写入 Kinesis 数据流后,就可以像任何其他记录一样读取它们。

Kinesis 客户端库(KCL)

KCL 充当您的记录处理逻辑和 Kinesis Data Streams 之间的中介。KCL 执行以下任务:

  • 连接到数据流
  • 枚举数据流中的分片
  • 使用租约来协调与其工作人员的分片关联
  • 为它管理的每个分片实例化一个记录处理器
  • 从数据流中拉取数据记录
  • 将记录推送到相应的记录处理器
  • 检查点处理的记录
  • 当工作程序实例计数发生变化或数据流被重新分片(分片被拆分或合并)时,平衡分片 - 工作程序关联(租约)

KCL 概念

  • KCL consumer application – 使用 KCL 定制构建的应用程序,旨在读取和处理数据流中的记录。
  • Consumer application instance- KCL 消费者应用程序通常是分布式的,一个或多个应用程序实例同时运行,以协调故障和动态负载平衡数据记录处理。
  • Worker – KCL 消费者应用程序实例用来开始处理数据的高级类。

Important
Each KCL consumer application instance has one worker.

Worker 初始化和监督各种任务,包括同步分片和租约信息、跟踪分片分配以及处理来自分片的数据。

在 KCL 1.x 中,此类称为Worker。
在 KCL 2.x 中,此类称为Scheduler。KCL 2.x 中调度程序的用途与 KCL 1.x 中 Worker 的用途相同。

KCL 2.x 与 KCL 1.x 区别

仅 KCL 2.x for Java 支持多流处理,从 KCL 2.3 for Java 及更高版本开始。

可以实现 KCL 2.x 的任何其他语言都不支持多流处理。

KCL 1.x 的任何版本都不支持多流处理。

Amazon Kinesis Streams消费者应用开发

引入KCL 2.x pom依赖

<dependency>
    <groupId>software.amazon.kinesis</groupId>
    <artifactId>amazon-kinesis-client</artifactId>
    <version>2.4.1</version>
</dependency>

本文以Java为例,来说明Kinesis stream的消费者应用开发。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值