使用 MRS CDL 实现实时数据同步的极致性能
摘要:MRS CDL 旨在实现最大的数据复制吞吐量和低复制延迟。
本文分享自华为云社区《使用MRS CDL实现实时数据同步的极致性能》,作者:大数据修行者 。
MRS CDL 提供从多个 RDBMS 捕获 CDC 事件并复制到大数据生态系统的机制,以实现实时数据湖分析和实时 DWH 场景。解决性能问题是数据复制解决方案解决低延迟、高吞吐量使用情形的关键要求之一。实时数据复制性能通常使用以下两个属性来衡量
吞吐量:在一个时间窗口中可以处理多少 GB 的事务日志卷、行或事务?
时延–将更改的数据从源系统复制到目标系统所需的时间
MRS CDL 旨在实现最大的数据复制吞吐量和低复制延迟。MRS CDL 提供以下多种竞争特性,以实现最佳性能:
过滤数据
MRS CDL 提供配置白名单和黑名单模式的机制,以过滤数据复制的表。白名单是与要复制的表的完全限定表标识符匹配的正则表达式列表;白名单中不包括的任何表都将从复制中排除。同样,黑名单是一个逗号分隔的正则表达式列表,它与要从复制中排除的表的完全限定表标识符匹配;将复制黑名单中不包括的任何表。此功能有助于仅从数据库事务日志中复制所需的数据,以提高整体吞吐量和效率。
任务并行化
MRS CDL 为并行性和可扩展数据复制提供内置支持,只需很少的配置。它提供了将 MRS CDL 单个作业分解为许多配置数量的任务的机制。使用多个任务,MRS CDL 提供了并行从多个数据库中获取 CDC 更改的机制。例如,如果架构中有 30 个表,则可以配置 30 个任务,这些任务将并行从每个表接收 CDC 数据,从而提高吞吐量。
在任务级别使用执行器多线程进行并行化
除了支持多个任务并行化之外,MRS CDL 还支持任务内的并行化。它在任务中使用日志复制按顺序从 RDBMS 捕获 CDC 事件。但是,一旦我们捕获 CDC 事件,我们就会将其推送到内部内存队列,并使用执行器线程池并行处理,如下所示。这些线程将从内部队列中提取事件,处理它并推送到 Kafka,从而提高性能。
分区表支持
RDBMS 的分区功能通过允许您将非常大的表分解为分区,解决了支持这些表的关键问题。像 Oracle 这样的 RDBMS 支持各种分区机制,如范围分区、哈希分区、列表分区和复合分区。MRS CDL 提供了使用多任务处理大型分区表的机制。这有助于我们使用日志复制技术并行捕获分区表的 CDC 事件,并推动并行分离 kafka topic partition,如下所示,从而提高吞吐量。
与 Schema Registry 集成
MRS CDL 与各种 SchemaRegistry 解决方案集成,该解决方案为元数据提供了服务层,并为存储和检索架构提供了 RESTful 接口。Schema Registry 根据指定的主题名称策略存储所有架构的版本历史记录,提供多个兼容性设置,并允许根据配置的兼容性设置进化架构,并扩展对这些架构类型的支持。它提供了插入 Apache Kafka 客户端的序列化器,这些序列化器处理以任何支持格式发送的 Kafka 消息的模式存储和检索。
使用集成的 Schema Registry,MRS CDL 不会在每个消息中都发布 schema 到 Apache Kafka,从而减少消息大小,这提高了从 Apache Kafka 发布和使用 CDC 消息所涉及的性能。我们进一步利用 Avro 格式与 Schema Registry 来提高性能。Avro 是一个开源数据序列化系统,速度非常快,它有助于在系统、编程语言和处理框架之间进行数据交换。
在未来,MRS CDL 会持续在吞吐量和时延方向上持续发力,为实时数据湖的数据时效性和质量保驾护航!
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/927a5d4d37e6830cf927b401a】。文章转载请联系作者。
评论