DMDRS产品采用模块化的设计,通过灵活配置不同的功能模块,实现多功能的数据复制服务,以满足多种场景的数据复制业务需求。DMDRS产品架构如下图所示。
1 产品模块
DMDRS产品模块包括Manager管理模块、CPT模块、DSS模块、DSSA模块、EXEC模块、CVT模块和SCHED模块。
Manager管理模块
Manager管理模块是DMDRS服务的管理模块,启动DMDRS服务后,Manager管理模块开始运行,主要提供客户端监听、其他功能模块的加载和维护以及执行控制台命令等功能。
根据自定义配置,加载CPT模块、DSS模块、DSSA模块、EXEC模块和SCHED模块,实现不同的功能。
根据模块名称管理唯一标识的模块。
启动监听线程,监听客户端连接。
启动授权校验线程,校验License信息。
接收并执行控制台命令。
清理功能模块。
CPT模块
CPT模块主要实现源数据库的全量数据装载以及增量数据实时捕获、解析和投递。CPT模块主要提供数据装载、添加同步表、日志捕获、日志解析和消息投递等功能。
数据装载
基于源数据库接口,查询抽取源数据库的数据发送至目标DMDRS服务,目标DMDRS把数据同步到目标数据库,实现数据装载。
添加同步表
查询待同步表及部分数据库系统表的结构定义信息,并将其保存在本地磁盘。DMDRS在同步数据时,需要根据相匹配的同步表字典信息来解析日志中的表增量操作。
日志捕获
基于优化的日志扫描算法,实时日志增量捕获,保存在分析队列中。
日志解析
提取分析队列中的日志数据,将其解析为DMDRS内部统一的消息格式体,保存在投递队列中。
消息投递
提取投递队列中的消息数据将其整理后保存在发送队列中,等待网络模块进行网络发送。
DSS模块
DSS模块具备高可靠、高吞吐量的流存储和分发功能。DSS模块接收CPT模块发送的数据,并根据Topic主题将消息分类流式持久化存储在不同的Topic中,供下一级数据服务访问使用。
根据Topic主题进行分类消息存储,实现数据分发。
采用多线程并发IO读写、内存池、数据页缓存等技术,实现高性能的流式存储。
基于数据页缓存、优化的页淘汰算法和高效的内存管理等技术手段,实现高吞吐量的数据访问。
支持基于任意消费点和消费规则进行数据的消费。
支持主备架构,保障高可靠性,避免单点故障问题。
DSSA模块
DSSA模块在DSS模块的基础上面向用户提供了一套完整的API订阅接口,用于第三方应用程序实时订阅获取存储的数据,支持DML和DDL同步操作订阅。
根据Topic主题进行消息订阅消费,支持指定LSN位置消费。
支持DML同步操作及数据的订阅消费。
支持DDL同步SQL语句的订阅消费。
EXEC模块
EXEC模块主要功能为接收CPT模块发送的全量装载数据或者增量同步数据,在目标数据库进行应用,实现数据实时同步。同时,EXEC模块也可以从DSS流式存储中获取同步数据并应用到目标数据库。
支持分组缓存执行功能,通过装载分组、等待分组和执行分组等实现全量数据装载与增量数据同步同时执行的数据同步。
支持多线程并行执行入库,实现高效的数据同步。
支持数据转换功能,与CVT模块结合使用,实现实时的数据清洗转换同步。
支持分组执行功能,实现不同分组对应不同的执行策略,满足多样化的同步执行需求。
基于表粒度的同步及高效的检查点算法,解决长事务执行引起的同步阻塞问题。
CVT模块
CVT模块通过DRS语言实现自定义编程式编写数据转换规则和逻辑,实现数据清洗转换的功能。CVT模块从CPT模块或者EXEC模块中获取数据,并按照预先定义的转换规则及逻辑,以单个操作作为最小单元进行数据清洗转换。DRS语言提供了流程转换定义、转换逻辑语法定义和丰富的内置转换函数等。
支持编程式的转换逻辑规则编写。
提供丰富的转换处理函数,如数据函数、字符串函数、时间日期函数等。
复杂的转换数据结构支持,如HASH和B树,实现键值对的存储。
支持关联查询,可以自定义关联查询条件在第三方库上获取关联数据。
SCHED模块
SCHED模块主要提供定时自动执行功能调度任务,实现定时执行CVT脚本、定时删除多CPT归档、定时服务守护、定时数据装载、定时数据同步、定时静态数据校验和定时动态数据校验等调度功能。
Console远程控制工具
Console远程控制工具是基于TCP/IP的DMDRS远程控制工具。
连接DMDRS服务,管理服务中的模块,包括启动和停止模块。
监控DMDRS服务的运行情况,包括查看统计信息和查看装载信息等。
查看和修改配置参数。
查看命令帮助信息。
2 产品服务
DMDRS通过配置不同的功能模块,可以实现多功能的数据复制服务,常用的产品服务包括源DMDRS服务、目标DMDRS服务、DMDSS服务和DMDSSA服务。
服务名称 | 主要组成模块 | 程序名称 | 服务功能 |
---|---|---|---|
源DMDRS | Manager、 CPT、 CVT(可选) | drsvr | 部署在源数据库所在服务器,用于全量数据装载和增量数据实时捕获解析,并投递到下一级DMDRS服务。当配置有CVT模块时,还可实现实时清洗转换功能。 |
目标DMDRS | Manager、 EXEC、 CVT(可选) | drsvr | 部署在可通过网络连接目标数据库的服务器,或者部署在目标数据库所在服务器,用于接收源DMDRS发送的日志消息,进行同步执行,完成数据同步。当配置有CVT模块时,还可实现实时清洗转换功能。 |
DMDSS | Manager、 DSS | dssvr | DMDSS具备高可靠、高吞吐量的流式存储,部署在磁盘空间大和磁盘性能高的存储服务器,用于高性能的持久化存储同步数据。适用于一对多的数据分发场景。 |
DMDSSA | Manager、 DSSA | dsasvr | DMDSSA是高性能、高吞吐量的数据订阅服务,提供API访问接口给第三方应用,实现实时订阅源DMDRS的全量数据和增量数据。 |
也可以根据业务数据复制的需求,灵活地配置不同的功能模块,实现不同功能的服务,灵活构建数据复制链路,新功能服务如下表所示。
服务名称 | 主要组成模块 | 程序名称 | 服务功能 |
---|---|---|---|
定时调度服务 | Manager、 SCHED | dschsvr | 提供定时自动执行功能调度任务,实现定时执行CVT脚本、定时删除多CPT归档、定时服务守护、定时数据装载、定时数据同步、定时静态数据校验和定时动态数据校验等调度功能。 |
双向DMDRS | Manager、CPT、 EXEC、CVT(可选) | drsvr | 部署在数据库所在服务器,通常用于双向同步的应用场景,既实时捕获解析增量数据,也接收同步消息,执行同步。 |
级联DMDRS | Manager、CPT、 EXEC、CVT(可选) | drsvr | 部署在数据库所在服务器,通常用于级联同步或环形同步的应用场景,既实时捕获解析增量数据,也接收同步消息,执行同步。 |