从 Amazon 流式传输日记数据 QLDB - 亚马逊 Quantum Ledger 数据库(亚马逊QLDB)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

从 Amazon 流式传输日记数据 QLDB

重要

终止支持通知:现有客户将能够使用亚马逊,QLDB直到 2025 年 7 月 31 日终止支持。有关更多详细信息,请参阅将亚马逊QLDB账本迁移到亚马逊 Aurora Postgr SQL e。

Amazon QLDB 使用不可变的交易日志(称为日)进行数据存储。日记账会跟踪已提交数据的每一次更改,并保存完整、可验证的更改历史记录。

你可以在中创建一个,用于捕获提交到日QLDB记中的每份文档修订,并将这些数据以近乎实时的方式传输到 Amazon Kinesis Data Streams。QLDB流是指从账本日记账到 Kinesis 数据流资源的连续数据流。

然后,您使用 Kinesis 流平台或 Kinesis Client Library 来使用流、处理数据记录和分析数据内容。QLDB流以三种类型的记录将您的数据写入 Kinesis Data Streams 中控件、区块摘要和修订详情。有关更多信息,请参阅 QLDB在 Kinesis 中直播记录

常见使用案例

流媒体允许您在将期刊数据与其他服务集成时QLDB用作单一的、可验证的真实来源。以下是QLDB日记流支持的一些常见用例:

  • 事件驱动架构 - 使用解耦组件以事件驱动的架构风格构建应用程序。例如,银行可以使用 AWS Lambda 功能来实现通知系统,当客户的账户余额降至阈值以下时,该系统会提醒客户。在这样的系统中,账户余额保存在QLDB分类账中,任何余额变化都记录在日记账中。该 AWS Lambda 函数可以在消耗提交到日志并发送到 Kinesis 数据流的余额更新事件时触发通知逻辑。

  • 实时分析 - 构建 Kinesis 使用者应用程序,对事件数据进行实时分析。借助此功能,您可以近乎实时地获得见解,并对不断变化的业务环境做出快速响应。例如,电子商务网站可以分析产品销售数据,并在销售达到限制时立即停止打折产品的广告。

  • 历史分析 — 通过重播历史事件数据,利用 Amazon 面向日记QLDB的架构。您可以选择从过去任何时间点开始QLDB直播,在该直播中,自那时以来的所有修订版都将传输到 Kinesis Data Streams。使用此功能,您可以构建 Kinesis 使用者应用程序,对历史数据运行分析作业。例如,电子商务网站可以根据需要运行分析,从而生成以前未捕获的过去销售指标。

  • 复制到专门构建的数据库 — 使用日记流将QLDB账本连接到其他专门构建的数据存储。QLDB例如,使用 Kinesis 流数据平台与亚马逊服务集成,亚马逊 OpenSearch 服务可以为文档提供全文搜索功能。QLDB您还可以构建自定义 Kinesis 使用者应用程序,将您的日记账数据复制到其他提供不同实体化视图的专用数据库。例如,将关系数据复制到 Amazon Aurora,或者将基于图表的数据复制到 Amazon Neptune。

消耗您的流

使用 Kinesis Data Streams 持续使用、处理和分析大量数据记录。除了 Kinesis Data Streams 之外,Kinesis 流数据平台还包括亚马逊数据 Firehose 和适用于 Apach e Flink 的亚马逊托管服务。您可以使用此平台将数据记录直接发送到亚马逊服务、Amazon Redshift、Amazon S3 或 Splunk 等 OpenSearch 服务。有关更多信息,请参阅 Amazon Kinesis 数据流开发人员指南 中的 Amazon Kinesis Data Streams 消费者

您还可以使用 Kinesis 客户端库 (KCL) 来构建流使用者应用程序,以自定义方式处理数据记录。它通过在低级 Kinesis Data Streams 之上提供有用的抽象来KCL简化编码。API要了解更多信息KCL,请参阅亚马逊 Kinesis Data Streams 开发者指南中的使用 Kinesis 客户端库

交付保证

QLDB直播提供了at-least-once传送保障。数据QLDB流生成的每条数据记录至少会被传送到 Kinesis Data Streams 一次。相同的记录可以多次出现在 Kinesis 数据流中。因此,如果您的使用案例需要,您必须在消费应用程序层中实现去重逻辑。

也没有订购保证。在某些情况下,可能会在 Kinesis 数据流中乱序生成QLDB区块和修订版。有关更多信息,请参阅 处理重复和 out-of-order记录

传送延迟注意事项

QLDB直播通常以近乎实时的方式向 Kinesis Data Streams 提供更新。但是,在将新提交QLDB的数据发送到 Kinesis 数据流之前,以下情况可能会造成额外的延迟:

  • 根据您的 Kinesis Data Streams 配置QLDB,Kinesis 可以限制从中传输的数据。例如,如果您有多个QLDB流写入单个 Kinesis 数据流,并且请求速率QLDB超过 Kinesis 流资源的容量,则可能会发生这种情况。在使用按需预配时,如果吞吐量在不到 15 分钟内增长到超过前一个峰值的两倍以上,Kinesis 中也可能发生节流。

    您可以通过监控 Kinesis 指标 WriteProvisionedThroughputExceeded 来衡量超过的吞吐量。有关更多信息和可能的解决方案,请参阅如何排查 Kinesis Data Streams 中的节流错误问题?

  • 使用QLDB直播,您可以创建不确定的直播,其开始日期和时间均为过去且没有结束日期和时间。根据设计,只有在QLDB成功交付指定开始日期和时间的所有先前数据之后,才会开始向 Kinesis Data Streams 发送新提交的数据。如果您在这种情况下感觉到额外的延迟,您可能需要等待先前的数据被传递,或者您可以从较晚的开始日期和时间开始流。

数据流入门

以下简要概述了开始将日记账数据流式传输到 Kinesis Data Streams 所需的步骤:

  1. 创建 Kinesis Data Streams 资源。有关说明,请参阅 Amazon Kinesis Data Streams 开发者指南中的创建和更新数据流

  2. 创建一个允许QLDB担任 Kinesis 数据流写入权限的IAM角色。有关说明,请参阅直播权限 QLDB

  3. 创建QLDB日记流。有关说明,请参阅 在中创建和管理直播 QLDB

  4. 如上一节消耗您的流所述,使用 Kinesis 数据流。有关演示如何使用 Kinesis 客户端库或的代码示例 AWS Lambda,请参阅。使用直播进行开发 QLDB