一种数据转移节点、方法、系统及计算机可读存储介质技术方案

技术编号:28464602 阅读:35 留言:0更新日期:2021-05-15 21:30
本发明专利技术提供了一种数据转移节点、方法、系统、装置及计算机可读存储介质,该节点包括:数据读取调度器,用于从源数据库读取待转移数据并放入内存内置队列中;队列调度器,用于从所述内存内置队列中获取所述待转移数据并写入所述目标数据库;所述内存内置队列,包括读取队列和读取缓冲队列,所述读取队列用于从所述数据读取调度器接收所述待转移数据,所述读取缓冲队列用于向所述队列调度器提供所述待转移数据;其中,每当所述读取队列已被写满且所述读取缓冲队列处于清空状态时,将当前的读取队列切换为读取缓冲队列,并将当前的读取缓冲队列切换为读取队列。利用上述数据转移节点,能够实现“读写分离”,保证数据转移的高效性、规避读瓶颈的问题。规避读瓶颈的问题。规避读瓶颈的问题。

【技术实现步骤摘要】
一种数据转移节点、方法、系统及计算机可读存储介质


[0001]本专利技术属于数据转移领域,具体涉及一种数据转移节点、方法、系统及计算机可读存储介质。

技术介绍

[0002]本部分旨在为权利要求书中陈述的本专利技术的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
[0003]数据转移在分布式系统中有强大的需求,尤其是传统关系型数据库转移到分布式文件系统(HDFS)中的场景更是错综复杂。然而在数据转移过程,常存在源端与目的端的读写性能不对等,进而导致目的端由于写入压力过大引发系统雪崩效应或源端读取速度慢而无法高效进行数据转移的问题。目前业界中的数据转移工具以logstash最为常用,然而logstash存在占用内存和CPU较高,且消息容易丢失等问题,并且也无法平衡数据源端与目的端的读写性能问题。

技术实现思路

[0004]针对上述现有技术中存在的问题,提出了一种通用且高效的数据转移节点、方法、系统及计算机可读存储介质,利用这种节点、方法、系统及计算机可读存储介质,能够解决上述问题。
[0005]本专利技术提供了以下方案。
[0006]第一方面,提供一种数据转移装置,包括:数据读取调度器,用于从源数据库读取待转移数据并放入内存内置队列中;队列调度器,用于从内存内置队列中获取待转移数据并写入目标数据库;内存内置队列,包括读取队列和读取缓冲队列,读取队列用于从数据读取调度器接收待转移数据,读取缓冲队列用于向队列调度器提供待转移数据;其中,每当所述读取队列已被写满且所述读取缓冲队列处于清空状态时,将当前的读取队列切换为读取缓冲队列,并将当前的读取缓冲队列切换为读取队列。
[0007]在一实施方式中,装置还用于:获取预先配置的SQL语句组,SQL语句组包括至少一个SQL语句以及配置信息;数据读取调度器根据SQL语句组创建读取线程以执行SQL语句组,其中每个SQL语句组对应于一个读取线程;队列调度器根据SQL语句组创建写入线程以执行SQL语句组;其中,配置信息至少包括目的数据库地址和源数据库地址。
[0008]在一实施方式中,装置还包括:磁盘队列,用于存储数据读取调度器同步写入的待转移数据;降级调度器,用于每当满足预设异常条件时对SQL语句组进行降级;其中,当SQL语句组降级时,数据读取调度器和队列调度器通过磁盘队列执行SQL语句组。
[0009]在一实施方式中,数据读取调度器还具体用于:判断SQL语句组是否已经降级;若SQL语句组未降级,则从源数据库读取待转移数据并写入读取队列中,其中,当读取队列已被写满且读取缓冲队列并非为清空状态时,通知降级调度器对SQL语句组进行降级,并记录已转移数据的数据偏移量;若SQL语句组已经降级,则从源数据库读取待转移数据并放入磁
盘队列中。
[0010]在一实施方式中,队列调度器还具体用于:判断SQL语句组是否已经降级;若SQL语句组未降级,则从读取缓冲队列获取待转移数据并写入目标数据库;若SQL语句组已降级,则根据记录的已转移数据的数据偏移量从磁盘队列中获取待转移数据并写入目标数据库。
[0011]在一实施方式中,预设异常条件包括以下中的任意一种或多种:网络超时、目的数据库/源数据库不稳定、数据读取调度器的数据读取速度高于队列调度器的数据写入速度。
[0012]在一实施方式中,装置还用于:若数据读取调度器在向读取队列写入数据时发生异常,则清空目标数据库中的已转移数据,并重新执行SQL语句组。
[0013]在一实施方式中,SQL语句组的配置信息包括执行节点信息和执行状态信息,节点还用于:遍历多个SQL语句组,根据当前遍历的SQL语句组的配置信息判断是否已经被其他节点抢占;若执行节点信息指示SQL语句组已经被其他节点抢占,则进一步遍历下一个SQL语句组;若执行节点信息指示SQL语句组未被其他节点抢占,则抢占SQL语句组并更新执行节点信息和执行状态信息。
[0014]在一实施方式中,SQL语句组的配置信息包括重试次数信息,用于指示SQL语句组的执行异常次数,节点还用于:获取SQL语句组之后,根据重试次数信息判断SQL语句组的执行异常次数是否达到上限,若达到上限,则暂停执行SQL语句组。
[0015]在一实施方式中,队列调度器具体用于:根据SQL语句组判断是否已经为目标数据库开启写入线程;若没有开启映射到目标数据库的写入线程,则从线程池中开启写入线程以执行SQL语句组,同时存储目标数据库与写入线程的映射关系;若已经开启映射到目标数据库的写入线程,则采用已有的写入线程执行SQL语句组。
[0016]第二方面,提供一种数据转移方法,包括:利用数据读取调度器从源数据库读取待转移数据并放入内存内置队列中;利用队列调度器从内存内置队列中获取待转移数据并写入目标数据库;其中,内存内置队列包括读取队列和读取缓冲队列,读取队列用于从数据读取调度器接收待转移数据,读取缓冲队列用于向队列调度器提供待转移数据;以及,每当所述读取队列已被写满且所述读取缓冲队列处于清空状态时,将当前的读取队列切换为读取缓冲队列,并将当前的读取缓冲队列切换为读取队列。
[0017]在一实施方式中,方法还用于:获取预先配置的SQL语句组,SQL语句组包括至少一个SQL语句以及配置信息;利用数据读取调度器根据SQL语句组创建读取线程以执行SQL语句组,其中每个SQL语句组对应于一个读取线程;队列调度器根据SQL语句组创建写入线程以执行SQL语句组;其中,配置信息至少包括目的数据库地址和源数据库地址。
[0018]在一实施方式中,方法还包括:利用磁盘队列存储数据读取调度器同步写入的待转移数据;以及,每当满足预设异常条件时,利用降级调度器对SQL语句组进行降级;其中,当SQL语句组降级时,数据读取调度器和队列调度器通过磁盘队列执行SQL语句组。
[0019]在一实施方式中,方法还包括:利用数据读取调度器具体执行:判断SQL语句组是否已经降级;若SQL语句组未降级,则从源数据库读取待转移数据并写入读取队列中,其中,当读取队列已被写满且读取缓冲队列并非为清空状态时,通知降级调度器对SQL语句组进行降级,并记录已转移数据的数据偏移量;若SQL语句组已经降级,则从源数据库读取待转移数据并放入磁盘队列中。
[0020]在一实施方式中,利用队列调度器具体执行:判断SQL语句组是否已经降级;若SQL
语句组未降级,则从读取缓冲队列获取待转移数据并写入目标数据库;若SQL语句组已降级,则根据记录的已转移数据的数据偏移量从磁盘队列中获取待转移数据并写入目标数据库。
[0021]在一实施方式中,预设异常条件包括以下中的任意一种或多种:网络超时、目的数据库/源数据库不稳定、数据读取调度器的数据读取速度高于队列调度器的数据写入速度。
[0022]在一实施方式中,方法还包括:若数据读取调度器在向读取队列写入数据时发生异常,则清空目标数据库中的已转移数据,并重新执行SQL语句组。
[0023]在一实施方式中,S本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据转移节点,其特征在于,包括:数据读取调度器,用于从源数据库读取待转移数据并放入内存内置队列中;队列调度器,用于从所述内存内置队列中获取所述待转移数据并写入所述目标数据库;所述内存内置队列,包括读取队列和读取缓冲队列,所述读取队列用于从所述数据读取调度器接收所述待转移数据,所述读取缓冲队列用于向所述队列调度器提供所述待转移数据;其中,每当所述读取队列已被写满且所述读取缓冲队列处于清空状态时,将当前的读取队列切换为读取缓冲队列,并将当前的读取缓冲队列切换为读取队列。2.根据权利要求1所述的节点,其特征在于,所述节点还用于获取预先配置的SQL语句组,所述SQL语句组包括至少一个SQL语句以及配置信息,所述配置信息至少包括目的数据库地址和源数据库地址;所述数据读取调度器根据所述SQL语句组创建读取线程以执行所述SQL语句组,其中每个SQL语句组对应于一个读取线程;所述队列调度器根据所述SQL语句组创建写入线程以执行所述SQL语句组。3.根据权利要求2所述的节点,其特征在于,所述节点还包括:磁盘队列,用于存储所述数据读取调度器同步写入的所述待转移数据;降级调度器,用于每当满足预设异常条件时对所述SQL语句组进行降级;其中,当所述SQL语句组降级时,所述数据读取调度器和所述队列调度器通过所述磁盘队列执行所述SQL语句组。4.根据权利要求2所述的节点,其特征在于,所述节点还用于:若数据转移中发生异常,则清空所述目标数据库中的已转移数据,并重新执行所述SQL语句组。5.根据权利要求3所述的节点,其特征在于,所述数据读取调度器还具体用于:判断所述SQL语句组是否已经降级;若所述SQL语句组未降级,则从源数据库读取所述待转移数据并写入所述读取队列中,其中,当所述读取队列已被写满且所述读取缓冲队列并非为清空状态时,通知所述降级调度器对所述SQL语句组进行降级,并记录已转移数据的数据偏移量;若所述SQL语句组已经降级,则从所述源数据库读取所述待转移数据并放入所述磁盘队列中。6.根据权利要求5所述的节点,其特征在于,所述队列调度器还具体用于:判断所述SQL语句组是否已经降级;若所述SQL语句组未降级,则从所述读取缓冲队列获取所述待转移数据并写入所述目标数据库;若所述SQL语句组已降级,则根据记录的已转移数据的数据偏移量从所述磁盘队列中获取所述待转移数据并写入所述目标数据库。7.根据权利要求3所述节点,其特征在于,所述预设异常条件包括以下中的任意一种或多种:网络超时、目的数据库/源数据库不稳定、所述数据读取调度器的数据读取速度高于所述队列调度器的数据写入速度。8.根据权利要求2所述的节点,其特征在于,所述SQL语句组的所述配置信息包括执行节点信息和执行状态信息,在获取所述SQL语句组之前,所述节点还用于:
遍历多个SQL语句组,根据当前遍历的SQL语句组的所述配置信息判断是否已经被其他节点抢占;若所述执行节点信息指示所述SQL语句组已经被其他节点抢占,则进一步遍历下一个SQL语句组;若所述执行节点信息指示所述SQL语句组未被其他节点抢占,则抢占所述SQL语句组并更新所述执行节点信息和所述执行状态信息。9.根据权利要求4所述的节点,其特征在于,所述SQL语句组的所述配置信息包括重试次数信息,用于指示重新执行所述SQL语句组的次数,所述节点还用于:获取所述SQL语句组之后,根据所述重试次数信息判断所述SQL语句组的执行异常次数是否达到上限,若达到上限,则暂停执行所述SQL语句组。10.根据权利要求2所述的节点,其特征在于,所述队列调度器具体用于:根据所述SQL语句组判断是否已经为所述目标数据库开启写入线程;若没有开启映射到所述目标数据库的写入线程,则从线程池中开启写入线程以执行所述SQL语句组,同时存储所述目标数据库与所述写入线程的映射关系;若已经开启映射到所述目标数据库的写入线程,则采用已有的写入线程执行所述SQL语句组。11.一种数据转移方法,其特征在于,包括:利用数据读取调度器从源数据库读取待转移数据并放入内存内置队列中;利用队列调度器从所述内存内置队列中获取所述待转移数据并写入所述目标数据库;其中,所述内存内置队列包括读取队列和读取缓冲队列,所述读取队列用于从所述数据读取调度器接收所述待转移数据,所述读取缓冲队列用于向所述队列调度器提供所述待转移数...

【专利技术属性】
技术研发人员:唐真周之敏汤茂安张佳安
申请(专利权)人:中国银联股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1