/ 中存储网

关键系统第二平面建设的“抽-捕-收-装”

2023-12-05 17:24:41 来源:中国存储网

“ 我国基础软件行业正处于一个稳中求进、自主可控的新时代。基础软件生态蓬勃发展,新的数据库从选型到部署正在加速落地,金融及关键机构业务系统的第二平面建设势不可挡,以确保在极端情况下,第二平面能够保障企业关键业务的连续性。 ”  

关键业务系统是企业发展的生命线。在错综复杂的国际环境下,为保证在极端情况下,企业关键业务基本可运行,建设一个可靠、安全、高效的第二平面,成为了系统安全建设的一项重要任务。第二平面被定义为与主生产系统相互独立的战备系统(非灾备系统),可以看成是孪生系统。

第二平面的建设,核心是国产数据库的部署上线运行,这涉及到从原数据库到国产库的异构数据迁移的技术。传统的迁移方面,是采用手工操作导出导入的方式,通常在业务停机情况下,实现数据迁移,但这样耗时长,数据丢失风险高,对业务影响大。英方软件基于市场需求,持续在异构数据库复制上深耕,从主流数据库拓展到国产数据库,实现数据实时捕获、在线迁移、校验比对和定期演练等。

目前,英方i2Stream可支持跨版本跨平台的数据库数据迁移,不仅提高了同步效率,还确保了数据一致性,降低了项目风险。数据复制迁移过程可以用“抽-捕-收-装”四字来概括:

1 “抽”是全量数据抽取;

2 “捕”是增量数据捕获;

3 “收”是目标端的接收和格式转换;

4“装”是数据的装载导入。

全量数据抽取,降低生产影响提升安全性

第二平面的基础软硬件及网络建设完成后,在数据库复制的初始阶段,基于对生产数据库性能影响与安全性考虑,复制软件可在类似RAC ADG备库上对全量数据进行抽取,然后同步到目标端进行导入。

关键系统第二平面建设的“抽-捕-收-装”

△全量抽取架构原理

复制过程中,全量抽取模块按照复制策略,设置“获取策略”中所涉及的对象信息,按照“并发设置”多队列获取表数据。数据库表及数据扫描获取表数据生成二进制TF文件传递给接收进程,过程中软件不对源表进行锁表动作(主库抽取时),避免生产环境中锁表动作对业务的影响,提升了迁移项目的安全性。

全量数据抽取过程具有多线程并发抽取、多并发传输、无需锁表、支持多对象过虑、支持非归档模式、支持传输压缩加密等优势。

增量数据捕获,在线SQL日志分析提高传输效率

全量数据抽取过程中,生产系统源源不断写入新的增量数据。因此在设置数据同步策略时,可在全量数据抽取开启时,增量模块将同时进入实时捕获在线日志数据,并保存在磁盘缓存中。在全量数据复制完成后无缝进入增量模式,即将从日志中提取出的增量数据,通过在线日志分析模式写入到第二平面的数据库中,整个过程是实时且异构环境。

关键系统第二平面建设的“抽-捕-收-装”

△增量捕获架构原理

增量捕获模块由读取线程、分析线程、发送线程、分配队列线程四部分组成。其中读取线程捕获redo log的变化,将这些变化传给分析线程,分析线程根据规则的设置,将要复制的DML与DDL变化生成TF文件。由发送线程将TF文件的变化通过网络送到目标主机的磁盘中。发送过程中分配队列线程将TF文件读出,并按表的依赖关系自动分配不同队列进行并发传输。

增量数据捕获过程具有与全量抽取无缝衔接、支持SCN增量模式、支持断点续传、支持归档日志分析和非归档模式、支持传输压缩加密等优势。

数据接收和转换,降低开发量提高适配率

全量数据抽取和增量数据捕获后的数据发送,需要通过数据接收模块和装载模块实现数据的入库。在此过程中,发送的数据由接收进程接收并转换为一种轻量级的JSON数据格式,并发送至装载进程,由装载进程通过JDBC接口精准写入第二平面的异构数据库。

在数据转换时,由于JSON转换需要较大的算力,为提高JSON的转换速度,英方i2Stream采用多线程并行执行。在数据发送端,原始数据按次序均匀分配到多个JSON转换队列,每个转换队列对应一个转换线程,转换线程将原始数据转换为JSON(含顺序信息),JSON数据被放到转换线程自己的输出队列中,数据保持原有的顺序。所有的JSON数据由单一的发送线程发送到后端的装载进程,发送线程对所有的JSON输出队列的数据进行排序,由于每个队列是有序的,发送线程相当于处理多个有序队列,它对数据进行再排序后发出。

数据接收和转换通过以JSON格式标准为装载第二平面数据库数据源信息,可以更便捷地对接不同的数据库,极大降低了开发工作量,提高了适配效率。

数据装载导入,提高数据入库的灵活性和准确率

数据装载既需要考虑并发提速,又需要考虑相关数据的顺序,以确保装载数据的正确性。

关键系统第二平面建设的“抽-捕-收-装”

△i2Stream数据装载架构原理

第二平面数据库数据装载导入过程中,新接收的数据会被放到待分发队列中,数据分发线程会以表为任务单元拆分数据,相互依赖的表数据会被拆分到一个任务中。当一个任务中的数据达到一定行数或者等待超过一定时间后,会被灵活地分派给另一个装载队列进行装载,并开始组织新的装载任务。同时,分发出去的装载任务相关的主键信息会被记录,当其装载完成时,主键信息会被清除。当分发线程准备将一个新任务分派给分发线程时,首先判断有没有正在装载的任务同这一任务冲突,有冲突的任务不可以并行执行,没有冲突的任务才可以并行,以确保数据正确。

其中,装载进程同数据发送端通过协商机制控制速度,装载进程会根据自身的数据装载情况,主动同数据发送端协商,实时调整数据发送速度,避免装载端积压大量数据,耗费太多内存。

数据装载导入过程具有支持同构异构装载、智能感知进程、广泛兼容适配各个数据库等优势。

第二平面建设的重要意义

关键业务系统第二平面的建设,核心是紧跟国产化发展趋势潮流,通过英方实时数据复制迁移工具,实现生产系统到第二平面异构数据库数据的“抽-捕-收-装”。作为战备系统,建设第二平面是一个非常重要的过渡战略,也是基础软件国产化生态发展的重要组织。

未来,随着国产化转型和数字化发展的加速,数据业务化趋势愈加明显,关键行业的关键业务使用实时数据复制迁移工具将成为刚需。英方软件将继续优化迭代跨平台的复制迁移的产品方案,通过对各类数据进行“抽-捕-收-装”,实现联动数据库、数据中台、大数据平台等打造实时数据架构,为业务提供最新的实时数据,提升企业的业务竞争力。