使用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与各种Schema Registry解决方案集成,该解决方案为元数据提供了服务层,并为存储和检索架构提供了RESTful接口。Schema Registry根据指定的主题名称策略存储所有架构的版本历史记录,提供多个兼容性设置,并允许根据配置的兼容性设置进化架构,并扩展对这些架构类型的支持。它提供了插入Apache Kafka客户端的序列化器,这些序列化器处理以任何支持格式发送的Kafka消息的模式存储和检索。
使用集成的Schema Registry,MRS CDL不会在每个消息中都发布schema到Apache Kafka,从而减少消息大小,这提高了从Apache Kafka发布和使用CDC消息所涉及的性能。我们进一步利用Avro格式与Schema Registry来提高性能。Avro是一个开源数据序列化系统,速度非常快,它有助于在系统、编程语言和处理框架之间进行数据交换。
在未来,MRS CDL会持续在吞吐量和时延方向上持续发力,为实时数据湖的数据时效性和质量保驾护航!
使用MRS CDL实现实时数据同步的极致性能的更多相关文章
- sersync+rsync实时数据同步
sersync+rsync实时数据同步 1.相关背景介绍 前面有关文章配置实现了rsync增量同步以及配置为定时同步,但是在实际生产环境中需要实时的监控数据从而进行同步(不间断同步),可以采取inot ...
- Linux学习系列之Inotify+Rsync实现实时数据同步
Inotify简介 inotify介绍 inotify是一种强大的.异步的文件系统监控机制,linux内核从2.6.13起,加入了inotify的支持,通过inotify可以监控文件系统中添加.删除. ...
- rsync+inotify实时数据同步多目录实战
rsync+inotify实时数据同步多目录实战 inotify配置是建立在rsync服务基础上的配置过程 操作系统 主机名 网卡eth0 默认网关 用途 root@58server1 1 ...
- rsync+inotify实时数据同步单目录实战
rsync+inotify实时数据同步单目录实战 rsync+inotify实时数据同步单目录实战 inotify是一个强大的.细粒度的.异步的文件系统事件监控机制,linux内核从2.6.13起 ...
- Linux系统实时数据同步inotify+rsync
一.inotify简介 inotify是Linux内核的一个功能,它能监控文件系统的变化,比如删除.读.写和卸载等操作.它监控到这些事件的发生后会默认往标准输出打印事件信息.要使用inotify,Li ...
- 【linux运维】rsync+inotify与sersync+rsync实时数据同步笔记
Rsync(remote sync)远程同步工具,通过rsync可以实现对远程服务器数据的增量备份通过,但rsync自身也有缺陷,同步数据时,rsync采用核心算法对远程服务器的目标文件进行对比,只进 ...
- Tapdata Real Time DaaS 技术详解 PART I :实时数据同步
摘要:企业信息化过程形成了大量的数据孤岛,这些并不连通的数据孤岛是企业数字化转型的巨大挑战.Tapdata Real Time DaaS 采用的CDC模式,具有巨大的优势,同时是一个有技术壁垒的活 ...
- Tapdata 在线研讨会:实时数据同步应用场景及实现方案探讨
数字化时代的到来,企业业务敏捷度的提升,对传统的数据处理和可用性带来更高的要求,实时数据同步技术的发展,给基于数据的业务创新带来了更多的可能性.9月8日晚,Tapdata 联合MongoDB 中文社区 ...
- TiDB 作为 MySQL Slave 实现实时数据同步
由于 TiDB 本身兼容绝大多数的 MySQL 语法,所以对于绝大多数业务来说,最安全的切换数据库方式就是将 TiDB 作为现有数据库的从库接在主 MySQL 库的后方,这样对业务方实现完全没有侵入性 ...
- Inotify+rsync实现实时数据同步
使用rsync可以实现数据同步,但是即使使用crontab定时任务最小执行间隔为1分钟,在数据实时性要求比较高场合需使用inotify+rsync实现实时同步 下载inotify wget https ...
随机推荐
- My Code Style
大家都在写,跟风. 头文件 万能头.因为我刚学 OI 的时候怎么都背不住 algorithm 怎么拼( 变量 数组开全局,一些前后重名/只在某一部分用的变量开局部. 尽量不使用指针/ stl 迭代器等 ...
- Wonder8.promotion营销规则引擎,轻松搞掂千变万化的营销玩法
超过10年没有更新过内容了,不知道现在园子的氛围这类文章还适不适合放首页 想着整点内容,也是支持园子! 旺德發.营销 引擎 概述 为了广泛支持营销活动的复杂与灵活,Wonder8.promotion( ...
- Python输入一行字符,分别统计出其中大小写英文字母、空格、数字和其它字符的个数。
import string def SlowSnail(s): up = 0 low = 0 space = 0 digit = 0 others = 0 for c in s: if c.isupp ...
- weblogic端口号和内存怎么修改?
在WebLogic中修改端口号和内存分配是一项重要的任务,它涉及到服务器性能和应用程序的可靠性.下面我将详细介绍如何修改WebLogic的端口号和内存设置. 修改端口号 WebLogic使用多个端口来 ...
- nordic的nrf52系列32M速率的SPI-SPIM3
简介:在nordic的nrf52系列中的nrf52833和nrf52840的SPIM3都是支持最大32M的spi速率,其余的只有8M,当在需要刷屏,或者一些需要高速32M-SPI时,这是一个很好的使用 ...
- Guava Preconditions类的各种用法
公众号「架构成长指南」,专注于生产实践.云原生.分布式系统.大数据技术分享. Guava Preconditions类 提供静态方法列表,用于检查是否使用有效参数值调用方法或构造函数.如果前提条件失败 ...
- 从0到1,手把手带你开发截图工具ScreenCap------003实现最小化程序到托盘运行
ScreenCap---Version:003 说明 上一篇:实现默认位置设置 为了方便截图干净,实现最小化程序到托盘运行,简洁,勿扰 实现最小化程序到托盘运行 实现托盘菜单功能 实现回显主窗体 实现 ...
- java监听全局组合键
1. jintellitype pom <!-- 不能注册多个组合键比如alt+abc --> <!-- https://mvnrepository.com/artifact/com ...
- 文心一言 VS 讯飞星火 VS chatgpt (155)-- 算法导论12.3 2题
二.用go语言,假设通过反复向一棵树中插人互不相同的关键字来构造一棵二叉搜索树.证明:在这棵树中查找关键字所检查过的结点数目等于先前插入这个关键字所检查的结点数目加 1. 文心一言: 为了证明这个结论 ...
- 聊一聊Rust的enum
enum在实际编程中是非常常用的,enum的目的就是为了清晰定义出散落在系统各个角落的相同概念的有限固定值. 一.enum介绍如果是简单定义固定值,我们可以使用常量const.比如 public co ...