数据的价值是时间敏感的。 实时处理使数据驱动的决策在几秒或几分钟而不是几小时或几天内准确且可操作。 变更数据捕获 (CDC) 是指识别和捕获对数据库中的数据所做的更改,然后将这些更改实时传送到下游系统的过程。 捕获源数据库中事务的每一个更改并将它们实时移动到目标数据库可以保持系统同步,并有助于实时分析用例和零停机数据库迁移。 以下是 CDC 的一些优势:
- 它通过启用增量加载或将数据更改实时流式传输到目标存储库,从而消除了批量加载更新和不便的批处理窗口的需要。
- 它确保多个系统中的数据保持同步。 如果您要在高速数据环境中做出时间敏感的决策,这一点尤为重要。
卡夫卡连接 是 Apache Kafka 的一个开源组件,作为一个集中式数据中心,用于在数据库、键值存储、搜索索引和文件系统之间进行简单的数据集成。 这 AWS Glue 架构注册表 允许您集中发现、控制和发展数据流模式。 Kafka Connect 和 Schema Registry 集成以从连接器捕获模式信息。 Kafka Connect 提供了一种机制,用于将数据从 Kafka Connect 使用的内部数据类型转换为表示为 Avro、Protobuf 或 JSON Schema 的数据类型。 AvroConverter、ProtobufConverter 和 JsonSchemaConverter 会自动注册由 Kafka 连接器(源)生成的模式,这些连接器会向 Kafka 生成数据。 除了每条消息的数据之外,使用来自 Kafka 的数据的连接器(接收器)还接收模式信息。 这允许接收器连接器了解数据的结构,以提供诸如在数据目录中维护数据库表架构等功能。
该帖子演示了如何使用构建端到端 CDC 亚马逊 MSK 连接,一项 AWS 托管服务,用于部署和运行 Kafka Connect 应用程序和 AWS Glue Schema Registry,使您能够集中发现、控制和发展数据流模式。
解决方案概述
在生产者方面,对于这个例子,我们选择一个 MySQL 兼容的 亚马逊极光 数据库作为数据源,我们有一个 去角质 执行 CDC 的 MySQL 连接器。 Debezium 连接器持续监控数据库并将行级更改推送到 Kafka 主题。 连接器从数据库中获取模式以将记录序列化为二进制形式。 如果该架构在注册表中尚不存在,则该架构将被注册。 如果模式存在但序列化程序使用的是新版本,则模式注册表会检查 兼容模式 更新模式之前的模式。 在这个解决方案中,我们使用 向后兼容模式. 如果新版本的模式不向后兼容,模式注册表会返回错误,我们可以配置 Kafka Connect 将不兼容的消息发送到死信队列。
在消费者方面,我们使用 亚马逊简单存储服务 (Amazon S3) 接收器连接器,用于反序列化记录并将更改存储到 Amazon S3。 我们使用 MSK Connect 构建和部署 Debezium 连接器和 Amazon S3 接收器。
示例架构
对于这篇文章,我们使用以下架构作为表的第一个版本:
先决条件
在配置 MSK 生产者和消费者连接器之前,我们需要先设置数据源、MSK 集群和新的模式注册表。 我们提供 AWS CloudFormation 用于生成解决方案所需的支持资源的模板:
- 与 MySQL 兼容的 Aurora 数据库作为数据源。 为了执行 CDC,我们在 数据库集群参数组.
- MSK 集群。 为了简化网络连接,我们为 Aurora 数据库和 MSK 集群使用相同的 VPC。
- 两个模式注册表来处理消息键和消息值的模式。
- 一个 S3 存储桶作为数据接收器。
- 此演示所需的 MSK Connect 插件和工作器配置。
- 一个 亚马逊弹性计算云 (Amazon EC2) 实例来运行数据库命令。
要在您的 AWS 账户中设置资源,请在支持 Amazon MSK、MSK Connect 和 AWS Glue Schema Registry 的 AWS 区域中完成以下步骤:
- 启动堆栈:
- 下一页.
- 针对 堆栈名称, 输入合适的名称。
- 针对 数据库密码,输入您想要的数据库用户密码。
- 其他值保持默认。
- 下一页.
- 在下一页,选择 下一页.
- 查看最后一页上的详细信息并选择 我承认AWS CloudFormation可能会创建IAM资源.
- 创建堆栈.
源和目标连接器的自定义插件
自定义插件是一组 JAR 文件,其中包含一个或多个连接器、转换或转换器的实现。 Amazon MSK 将在运行连接器的 MSK Connect 集群的工作线程上安装该插件。 作为这个演示的一部分,我们使用开源的源连接器 Debezium MySQL 连接器 JAR,对于目标连接器,我们使用许可的 Confluent 社区 Amazon S3 接收器连接器 JAR. 这两个插件还添加了用于 Avro 序列化器和反序列化器 AWS Glue Schema 注册表。 这些自定义插件已创建为上一步中部署的 CloudFormation 模板的一部分。
使用 AWS Glue Schema Registry 和 MSK Connect 上的 Debezium 连接器作为 MSK 生产者
我们首先使用 Debezium MySQL 插件部署源连接器,以流式传输来自 Amazon Aurora MySQL 兼容版 数据库到 Amazon MSK。 完成以下步骤:
- 在 Amazon MSK 控制台的导航窗格中,在 MSK连接,选择 同轴连接器.
- 创建连接器.
- 使用现有的自定义插件 然后选择名称开头的自定义插件
msk-blog-debezium-source-plugin
. - 下一页.
- 输入合适的名称,例如
debezium-mysql-connector
和一个可选的描述。 - 针对 Apache Kafka 集群,选择 MSK集群 并选择由 CloudFormation 模板创建的集群。
- In 连接器配置,删除默认值并使用以下配置键值对和适当的值:
- 姓名 – 用于连接器的名称。
- 数据库主机名 – 的 CloudFormation 输出 数据库端点.
- 数据库用户和数据库密码 – CloudFormation 模板中传递的参数。
- 数据库.history.kafka.bootstrap.servers – 的 CloudFormation 输出 卡夫卡引导程序.
- key.converter.region 和 value.converter.region – 您所在的地区。
其中一些设置是通用的,应该为任何连接器指定。 例如:
- connector.class 是连接器的 Java 类
- tasks.max 是应该为此连接器创建的最大任务数
一些设置(database.*
, transforms.*
) 特定于 Debezium MySQL 连接器。 参考 Debezium MySQL 源连接器配置属性 获取更多信息.
一些设置(key.converter.*
和 value.converter.*
) 特定于架构注册表。 我们使用 AWSKafkaAvroConverter
来自 AWS Glue 架构注册表库 作为格式转换器。 配置 AWSKafkaAvroConverter
,我们使用字符串常量属性的值 AWSSchemaRegistry常量 类:
key.converter
和value.converter
控制将写入 Kafka 用于源连接器或从 Kafka 读取用于接收器连接器的数据格式。 我们用AWSKafkaAvroConverter
适用于 Avro 格式。key.converter.registry.name
和value.converter.registry.name
定义要使用的模式注册表。key.converter.compatibility
和value.converter.compatibility
定义兼容性模型。
请参阅 将 Kafka Connect 与 AWS Glue Schema Registry 结合使用 获取更多信息.
- 接下来我们配置 连接器容量. 我们可以选择 已配置 并将其他属性保留为默认值
- 针对 工人配置, 选择名称开头的自定义工作器配置
msk-gsr-blog
作为 CloudFormation 模板的一部分创建。 - 针对 存取权限,使用 AWS身份和访问管理 CloudFormation 模板生成的 (IAM) 角色
MSKConnectRole
. - 下一页.
- 针对 安保行业, 选择默认值。
- 下一页.
- 针对 日志投递, 选择 传送到 Amazon CloudWatch Logs 并浏览由 CloudFormation 模板创建的日志组 (
msk-connector-logs
). - 下一页.
- 查看设置并选择 创建连接器.
几分钟后,连接器变为运行状态。
将 AWS Glue Schema Registry 与在 MSK Connect 上运行的 Confluent S3 接收器连接器一起用作 MSK 消费者
我们使用 Confluent S3 接收器插件部署接收器连接器,以将数据从 Amazon MSK 流式传输到 Amazon S3。 完成以下步骤:
-
- 在 Amazon MSK 控制台的导航窗格中,在 MSK连接,选择 同轴连接器.
- 创建连接器.
- 使用现有的自定义插件 并选择名称开头的自定义插件
msk-blog-S3sink-plugin
. - 下一页.
- 输入合适的名称,例如
s3-sink-connector
和一个可选的描述。 - 针对 Apache Kafka 集群,选择 MSK集群 并选择由 CloudFormation 模板创建的集群。
- In 连接器配置,删除提供的默认值并使用以下具有适当值的配置键值对:
-
- 姓名 – 与连接器使用的名称相同。
- s3.bucket.name – 的 CloudFormation 输出 铲斗名称.
- s3.region、key.converter.region 和 value.converter.region – 您所在的地区。
-
- 接下来我们配置 连接器容量. 我们可以选择 已配置 并将其他属性保留为默认值
- 针对 工人配置, 选择名称开头的自定义工作器配置
msk-gsr-blog
作为 CloudFormation 模板的一部分创建。 - 针对 存取权限, 使用 CloudFormation 模板生成的 IAM 角色
MSKConnectRole
. - 下一页.
- 针对 安保行业, 选择默认值。
- 下一页.
- 针对 日志投递, 选择 传送到 Amazon CloudWatch Logs 并浏览由 CloudFormation 模板创建的日志组
msk-connector-logs
. - 下一页.
- 查看设置并选择 创建连接器.
几分钟后,连接器开始运行。
测试端到端 CDC 日志流
现在 Debezium 和 S3 接收器连接器都已启动并正在运行,请完成以下步骤来测试端到端 CDC:
- 在 Amazon EC2 控制台上,导航到 安全组 页面上发布服务提醒。
- 选择安全组
ClientInstanceSecurityGroup
并选择 编辑入站规则. - 添加允许从本地网络进行 SSH 连接的入站规则。
- 点击 实例 页面,选择实例
ClientInstance
并选择 分享链接. - 点击 EC2 实例连接 标签,选择 分享链接.
- 确保您当前的工作目录是
/home/ec2-user
它有文件create_table.sql
,alter_table.sql
,initial_insert.sql
及insert_data_with_new_column.sql
. - 通过运行以下命令在 MySQL 数据库中创建一个表(提供来自 CloudFormation 模板输出的数据库主机名):
- 当提示输入密码时,输入 CloudFormation 模板参数中的密码。
- 使用以下命令将一些示例数据插入表中:
- 当提示输入密码时,输入 CloudFormation 模板参数中的密码。
- 在 AWS Glue 控制台上,选择 架构注册表 在导航窗格中,然后选择 架构.
- 导航
db1.sampledatabase.movies
版本 1 检查为 movies 表创建的新模式:
为 Kafka 主题的每个分区创建一个单独的 S3 文件夹,并将主题的数据写入该文件夹中。
- 在 Amazon S3 控制台上,在您的 Kafka 主题的文件夹中检查以 Parquet 格式写入的数据。
模式演变
定义初始模式后,应用程序可能需要随着时间的推移对其进行改进。 发生这种情况时,下游消费者能够无缝处理使用新旧模式编码的数据至关重要。 兼容模式允许您控制模式如何随时间演化或不演化。 这些模式形成了应用程序生产和消费数据之间的契约。 有关 AWS Glue Schema Registry 中可用的不同兼容模式的详细信息,请参阅 AWS Glue 架构注册表. 在我们的示例中,我们使用向后梳理来确保消费者可以读取当前和以前的模式版本。 完成以下步骤:
- 通过运行以下命令向表中添加一个新列:
- 通过运行以下命令将新数据插入表中:
- 在 AWS Glue 控制台上,选择 架构注册表 在导航窗格中,然后选择 架构.
- 导航到架构
db1.sampledatabase.movies
版本 2 检查为电影表电影创建的新版本模式,包括您添加的国家/地区列:
- 在 Amazon S3 控制台上,在 Kafka 主题的文件夹中检查以 Parquet 格式写入的数据。
清理
为帮助防止对您的 AWS 账户产生不必要的费用,请删除您在本文中使用的 AWS 资源:
- 在 Amazon S3 控制台上,导航到由 CloudFormation 模板创建的 S3 存储桶。
- 选择所有文件和文件夹,然后选择 删除.
- 按照指示输入永久删除并选择 删除对象.
- 在 AWS CloudFormation 控制台上,删除您创建的堆栈。
- 等待堆栈状态更改为 删除_完成.
结论
这篇文章演示了如何使用 Amazon MSK、MSK Connect 和 AWS Glue Schema Registry 构建 CDC 日志流并随着业务需求的变化发展数据流的模式。 您可以将此架构模式应用于具有不同 Kafka 连接器的其他数据源。 有关详细信息,请参阅 MSK 连接示例.
关于作者
卡利安贾纳基 是 Amazon Web Services 的高级大数据和分析专家。 他帮助客户在 AWS 上设计和构建高度可扩展、高性能和安全的基于云的解决方案。
- SEO 支持的内容和 PR 分发。 今天得到放大。
- 柏拉图区块链。 Web3 元宇宙智能。 知识放大。 访问这里。
- Sumber: https://aws.amazon.com/blogs/big-data/build-an-end-to-end-change-data-capture-with-amazon-msk-connect-and-aws-glue-schema-registry/
- :是
- $UP
- 1
- 10
- 11
- 7
- 8
- a
- Able
- 关于
- ACCESS
- 账号管理
- 精准的
- 承认
- 添加
- 增加
- 所有类型
- 允许
- 允许
- 已经
- Amazon
- Amazon EC2
- 亚马逊网络服务
- 分析
- 和
- 阿帕奇
- 阿帕奇卡夫卡
- 应用领域
- 使用
- 适当
- 架构
- 保健
- AS
- Aurora
- 自动
- 可使用
- AWS
- AWS CloudFormation
- AWS胶水
- BE
- before
- 好处
- 之间
- 大
- 大数据运用
- 引导
- 建立
- 商业
- by
- CAN
- 能力
- 捕获
- 捕获
- 例
- 检索目录
- 疾病预防控制中心
- 集中
- 更改
- 更改
- 收费
- 查
- 支票
- 程
- 簇
- 柱
- 社体的一部分
- 兼容性
- 兼容
- 完成
- 元件
- 计算
- 配置
- 连接点
- 分享链接
- 地都
- 安慰
- 常数
- 消耗
- 消费者
- 消费者
- 一直
- 合同
- 控制
- 国家
- 创建信息图
- 创建
- 危急
- 电流
- 习俗
- 合作伙伴
- data
- 数据集成
- 数据驱动
- 数据库
- 数据库
- 一年中的
- 决定
- 默认
- 默认
- 定义
- 交付
- 演示
- 证明
- 演示
- 部署
- 部署
- 描述
- 目的地
- 详细
- 详情
- 不同
- 通过各种方式找到
- 不会
- 下降
- 每
- 消除
- 使
- 端至端
- 确保
- 确保
- 输入
- 环境
- 错误
- 特别
- 醚(ETH)
- 所有的
- 发展
- 例子
- 现有
- 存在
- 少数
- 字段
- 文件
- 档
- 最后
- 姓氏:
- 以下
- 针对
- 申请
- 格式
- 止
- 生成
- 产生
- 团队
- 组的
- 处理
- 处理
- 发生
- 有
- 帮助
- 帮助
- 高度
- 历史
- 主持人
- HOURS
- 创新中心
- How To
- HTML
- HTTP
- HTTPS
- 中心
- IAM
- 确定
- 身分
- 履行
- 重要
- in
- 包含
- 指标
- 信息
- 初始
- 安装
- 例
- 代替
- 整合
- 积分
- 内部
- IT
- 爪哇岛
- JPG
- JSON
- 卡夫卡
- 键
- 知道
- 离开
- 库
- 行货
- 喜欢
- 加载
- 装载
- 本地
- 长
- 制成
- 制作
- 制作
- 管理
- 主
- 最大
- 最多
- 机制
- 的话
- 条未读消息
- 可能
- 分钟
- 模型
- 模式
- 显示器
- 更多
- 电影
- 移动
- 多
- MySQL的
- 姓名
- 导航
- 旅游导航
- 需求
- 打印车票
- 需要
- 网络
- 全新
- 下页
- 数
- of
- 老
- on
- 一
- 开放源码
- 其他名称
- 产量
- 页
- 对
- 面包
- 参数
- 参数
- 部分
- 通过
- 密码
- 模式
- 演出
- 永久
- 挑
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 插入
- 插件
- 帖子
- 防止
- 以前
- 过程
- 处理
- 生产
- 制片人
- 提供
- 提供
- 提供
- 阅读
- 真实
- 实时的
- 接收
- 记录
- 记录
- 指
- 地区
- 寄存器
- 在相关机构注册的
- 注册处
- 知识库
- 代表
- 资源
- 回报
- 角色
- 第
- 运行
- 运行
- 同
- 可扩展性
- 无缝
- 搜索
- 秒
- 安全
- 保安
- 前辈
- 敏感
- 分开
- 服务
- 特色服务
- 集
- 设置
- 应该
- 简易
- 简化
- 方案,
- 解决方案
- 一些
- 来源
- 来源
- 专家
- 具体的
- 指定
- 堆
- 开始
- Status
- 步
- 步骤
- 存储
- 商店
- 商店
- 流
- 流
- 流
- 结构体
- 合适的
- 支持
- 支持
- 同步。
- 系统
- 产品
- 表
- 目标
- 任务
- 模板
- test
- 这
- 他们
- 博曼
- 次
- 时间敏感
- 标题
- 至
- 主题
- 交易
- 转
- 类型
- 下
- 无用
- 更新
- 使用
- 用户
- 折扣值
- 价值观
- 版本
- 卷筒纸
- Web服务
- 这
- 将
- 窗户
- 工人
- 工人
- 加工
- 合作
- 书面
- 您一站式解决方案
- 和风网