数据传输方法及其装置
技术领域
本申请涉及大数据领域,特别涉及一种数据传输技术。
背景技术
现有技术中,跨平台的大数据服务调用和查询复制,数据量通常都非常大,数据拉取过程非常长。过程中因为网络波动,服务器重启等异常中断后,需要先将上一次获取的不完整数据删除,再重新读取数据直至最终一次性成功。有可能出现100万数据,成功获取到99万后因服务器重启导致重新获取。可以看出,现有技术存在以下缺点:
1.任务在单台服务器上触发,必须一次性完成。数据量越大,越容易中断;
2.成功率低。不同的平台之间通过公网链接,网络出现异常可能性比较大;
3.数据可能存在不停读写删除现象,网络IO硬盘底层读写资源浪费比较多;
4.数据传输时间长。数据可能反复读写,平均耗时增加。
因此,目前亟需一种能确保数据的准确性和完整性的跨平台大数据传输技术。
发明内容
本申请的目的在于提供一种数据传输方法及其装置,可以最大限度地克服网络波动、服务器重启等造成的异常中断对数据传输的影响,减少不必要的网络开销和磁盘读写,大幅提升数据传输的成功率和传输速度。
为解决上述技术问题,本申请的实施方式公开了一种数据传输方法,包括:
获取断点信息,其中所述断点信息包括接口标识、查询时间和当前已查询到的页数;
根据所述断点信息进行分页查询;
保存查询结果,更新所述当前已查询到的页数;
其中,在同一个事务中执行所述保存查询结果和所述更新所述当前已查询到的页数的步骤。
本申请的实施方式还公开了一种数据传输装置,包括:
获取模块,用于获取断点信息,其中所述断点信息包括接口标识、查询时间和当前已查询到的页数;
查询模块,根据所述断点信息进行分页查询;
存储模块,用于保存查询结果;
更新模块,用于更新所述当前已查询到的页数;
其中,在同一个事务中所述存储模块保存查询结果和所述更新模块更新所述当前已查询到的页数。
本申请的实施方式还公开了一种数据传输设备,包括:
存储器,用于存储计算机可执行指令;以及,
处理器,用于在执行所述计算机可执行指令时实现上述方法中的步骤。
本申请的实施方式还公开了一种计算机可读存储介质,其中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述方法中的步骤。
本发明实施方式与现有技术相比,主要区别及其效果在于:
通过数据库管理维护数据查询信息,并从中断处开始继续后续数据传输,可以最大限度地克服网络波动、服务器重启等造成的异常中断对数据传输的影响,减少不必要的网络开销和磁盘读写,大幅提升数据传输的成功率和传输速度。
通过抢占分布式锁实现任务切分,任务成败不依赖单台服务器的稳定性,只要集群中存在可用的服务器,任务就能成功触发并顺利执行,实现对大批量数据的可靠传输。
通过合并分页查询结果然后再存储查询结果和更新断点信息,可以批量对分页查询结果进行处理,可以大大提高数据传输的效率。
本申请的说明书中记载了大量的技术特征,分布在各个技术方案中,如果要罗列出本申请所有可能的技术特征的组合(即技术方案)的话,会使得说明书过于冗长。为了避免这个问题,本申请上述发明内容中公开的各个技术特征、在下文各个实施方式和例子中公开的各技术特征、以及附图中公开的各个技术特征,都可以自由地互相组合,从而构成各种新的技术方案(这些技术方案均因视为在本说明书中已经记载),除非这种技术特征的组合在技术上是不可行的。例如,在一个例子中公开了特征A+B+C,在另一个例子中公开了特征A+B+D+E,而特征C和D是起到相同作用的等同技术手段,技术上只要择一使用即可,不可能同时采用,特征E技术上可以与特征C相组合,则,A+B+C+D的方案因技术不可行而应当不被视为已经记载,而A+B+C+E的方案应当视为已经被记载。
附图说明
图1是根据本申请第一实施方式的一种数据传输方法的流程示意图;
图2是根据本申请第一实施方式的断点信息的表结构设计图;
图3是根据本申请第一实施方式的一个优选实施例的***架构图;
图4根据本申请第一实施方式的一个优选实施例的断点续传方法的流程示意图;
图5根据本申请第一实施方式的一个优选实施例的类图;
图6是根据本申请第一实施方式的一个优选实施例的数据传输方法的整体流程图;
图7是根据本申请第二实施方式的一种数据传输装置的结构示意图。
具体实施方式
在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
部分概念的说明:
分布式环境:一种多网站架构模式,支持生成独立网站、多个网站,完成各个网站横向一体化和纵向一体化网站群的构建,主站、子站、网站间的信息可共享和信息互联。
断点续传:数据传输过程因异常导致中断后可以自动恢复,并从中断处开始继续后续数据传输。
任务切分:将任务分成多个子任务,串(并)行执行。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。
本申请的第一实施方式涉及一种数据传输方法,图1是该数据传输方法的流程示意图。
具体地说,如图1所示,该数据传输方法包括:
在步骤101中,获取断点信息,其中所述断点信息包括接口标识、查询时间和当前已查询到的页数。
进一步地,优选地,所述断点信息还包括分页大小和是否查询完毕标识。
图2是一个优选的断点信息的表结构设计图。如图2所示,所述断点信息可以包括:接口标识(例如接口id、接口名称等)、查询时间(例如查询日期等)、分页大小(page_size)、当前已查询到的页数(page_num)、以及是否查询完毕标识(status,例如可以数字“1”标识查询完毕,以数字“0”标识未查询完毕等)。
此外,可选地,在上述步骤101之前,还可以包括以下步骤:
判断所述断点信息是否存在,若不存在,则新建所述断点信息。
如果断点信息存在,则执行步骤101,获取断点信息;如果断点信息不存在,说明数据才刚开始传输或者之前的查询没有成功完成,在这种情况下需要新建断点信息,并在本次查询完成之后,更新该断点信息。
此后进入步骤103,根据所述断点信息进行分页查询。
在本申请的实施方式中,通过分页查询,能够将过多的查询结果在有限的界面上分多页来显示,从而提高查询效率。
此外,可选地,在上述步骤103之后,还可以包括以下步骤:
判断是否查询结束,若未结束,则继续进行分页查询。
如果查询结束,则进一步执行步骤105和107;如果查询未结束,则继续进行下一页的查询,直到查询结束或者本次查询任务完成,再执行步骤105和步骤107。
进一步地,优选地,在继续进行分页查询的步骤之后,还可以包括以下步骤:
合并所述分页查询结果。
通过合并分页查询结果然后再存储查询结果和更新断点信息,可以批量对分页查询结果进行处理,可以大大提高数据传输的效率。
此后进入步骤105,保存查询结果。
此后进入步骤107,更新所述当前已查询到的页数。
其中,在同一个事务中执行上述步骤105和步骤107。
也就是说,上述步骤105和107必须都完成以后,才算完成一个数据传输任务。如果只完成了步骤105,即只存储了查询结果,但是未完成步骤107,未对当前已查询到的页数进行更新的话,下次查询调用的时候,还是得从中断处(即上次已查询到的页数)开始继续后续数据传输,也就是得需要重复执行上述已经完成了的步骤。
此后结束本流程。
通过数据库管理维护数据查询信息,并从中断处开始继续后续数据传输,可以最大限度地克服网络波动、服务器重启等造成的异常中断对数据传输的影响,减少不必要的网络开销和磁盘读写,大幅提升数据传输的成功率和传输速度。
需要说明的是,在本申请的实施方式中,优选地,上述数据传输方法适用于集群***中,并由所述集群***中抢占到分布式锁的服务器执行上述方法中的各个步骤。
本领域技术人员可以理解,集群***中存在多台服务器,通过集群***,可以利用多台服务器并行进行数据传输从而获得较高的传输效率,也可以利用多台服务器做备份,从而使得任何一台服务器故障后,整个集群***还能正常运行。也就是说,在集群***中,数据传输任务的成败不依赖单台服务器的稳定性,只要集群中存在可用的服务器,数据传输任务就能成功触发并顺利执行。
通过将数据传输任务进行切分,每次的任务仅需要由集群***中的一台服务器来执行。那么如何决定由哪台服务器执行任务呢?在本申请的实施方式中,优选地,通过分布式锁的方式成功解决了这个问题。
本领域技术人员可以理解,分布式一致性***中的ephemeral文件有所有者(owner)概念,这确保了分布式锁的互斥性。一致***器(Quorum Server,即一致***组中的服务器)端会记录创建ephemeral文件的客户端(client)进程对应的会话(session)信息,其它客户端进程尝试创建已存在ephemeral文件,一致***器通过检查该ephemeral文件归属的会话与尝试创建的客户端进程对应的会话不匹配,则告知客户端创建文件失败,即抢占分布式锁失败。
分布式一致性***中的ephemeral文件还有生命期概念,这确保了分布式锁的可用性。ephemeral文件生命期,即其归属会话的生命期,依赖客户端进程与一致***器定期心跳来更新:客户端进程在本端认定的会话超时时间内没有收到任何来自一致***器的心跳包回复,则判定会话超时,确认丢锁;一致***器在本端认定的会话超时时间内没有接收到任何来自客户端进程心跳包,则判定会话超时,主动删除锁文件,释放该分布式锁所有权。
在集群***中,一个主调度服务器(master)调度不同工作机(worker,也称工作服务机器)加载不同分区(Partition)以提供并发的数据访问,进而提升***整体服务能力。为了避免一个分区被多个工作机同时加载从而导致数据被写坏,每个被调度的工作机需要抢占对应分区的分布式锁,在获取该分布锁所有权之后方可提供该分区数据的具体访问服务,然后通过定期心跳向主调度服务器汇报服务状态。
因此,在本实施方式中,优选地,在步骤101之前,还包括以下步骤:
抢占所述分布式锁,并由所述集群***中抢占到分布式锁的服务器执行上述方法中的各个步骤。
更进一步地,优选地,所述分布式锁每隔预定的时间间隔进行更新。换句话说,就是所述分布式锁的生命期为预定的时间间隔。在本实施方式中,优选地,所述预定的时间间隔可以为10分钟。也就是说,所述分布式锁每隔10分钟生成一次,在集群所有服务器中同时产生且完全一致,每次只有一台服务器能成功抢占所述分布式锁并执行所述数据传输任务。通过抢占分布式锁实现任务切分,任务成败不依赖单台服务器的稳定性,只要集群中存在可用的服务器,任务就能成功触发并顺利执行,保障了数据传输的速度和可靠性。
为了能够更好地理解本申请的技术方案,下面结合一个优选实施例来进行说明,该例子中罗列的细节主要是为了便于理解,不作为对本申请保护范围的限制。
蚂蚁金服的蚁盾风险大脑项目需要在金融云平台的***uctmng上展示用户的群组网络信息,包括用户属于哪个群组,群组内部有哪些用户,每个用户用到了哪些介质,具体介质被哪些用户使用,以及相关统计信息等。群组数据由蚂蚁金服主站离线生成,并推送至主站在线***ssdataprod。金融云***uctmng定时发起请求,到主站来读取数据。因群组数据量非常大,高达千万甚至亿级别,数据拉取过程非常长,需要确保数据的准确性和完整性。
图3该优选实施例的***架构图,讲述整体架构以及数据流向,每天千万级别数据量从主站ODPS推送到主站在线***ssdataprod,再通过查询服务调用方式,分页查询至金融云***uctmng。
图4该优选实施例的断点续传方法的流程示意图。如图4所述,所述断点续传方法包括以下步骤:查询之前先获取断点信息,查询之后存储数据时在同一个事务(或者说,同一个流程,同一个任务)中更新断点信息。如图2所示,断点信息(也可以称为:断点续传参数)包括接口名称,查询日期,分页大小,当前已查询到的页数,以及是否查询完毕标识。其中,“接口名称+查询日期”为业务唯一主键。
图5是该优选实施例的类图。图6是该优选实施例的数据传输方法的整体流程图。需要说明的是,分布式锁每10分钟生成一次,在集群所有服务器中同时产生且完全一致,每次只会有一台服务器能成功获取到分布式锁并执行数据传输任务。最后,“存储查询结果”与“更新断点续传参数”必须在同一个事务中进行。“存储查询结果”与“更新断点续传参数”必须都完成以后,才算一个数据传输任务完成。如果只完成了“存储查询结果”,未“更新断点续传参数”的话,下次查询调用的时候,还需要重复执行上述查询以及“存储查询结果”的步骤。
从上面的描述可以看出,该优选实施例主要包括以下两个方面:
1.通过抢占分布式锁实现任务切分
任务成败不依赖单台服务器的稳定性,只要集群中存在可用的服务器,任务就能成功触发并顺利执行。
2.断点续传方案
通过数据库管理维护数据查询信息,实现在跨平台分布式集群下,对大批量数据进行可靠传输。
本发明的各方法实施方式均可以以软件、硬件、固件等方式实现。不管本发明是以软件、硬件、还是固件方式实现,指令代码都可以存储在任何类型的计算机可访问的存储器中(例如永久的或者可修改的,易失性的或者非易失性的,固态的或者非固态的,固定的或者可更换的介质等等)。同样,存储器可以例如是可编程阵列逻辑(Programmable ArrayLogic,简称“PAL”)、随机存取存储器(Random Access Memory,简称“RAM”)、可编程只读存储器(Programmable Read Only Memory,简称“PROM”)、只读存储器(Read-Only Memory,简称“ROM”)、电可擦除可编程只读存储器(Electrically Erasable Programmable ROM,简称“EEPROM”)、磁盘、光盘、数字通用光盘(Digital Versatile Disc,简称“DVD”)等等。
本申请的第二实施方式涉及一种数据传输装置,图7是该数据传输装置的结构示意图。
具体地说,如图7所示,该数据传输装置包括:
获取模块,用于获取断点信息,其中所述断点信息包括接口标识、查询时间和当前已查询到的页数。
此外,优选地,所述断点续信息还包括分页大小和是否查询完毕标识。
查询模块,根据所述断点信息进行分页查询;
存储模块,用于保存查询结果;
更新模块,用于更新所述当前已查询到的页数;
其中,在同一个事务中所述存储模块保存查询结果和所述更新模块更新所述当前已查询到的页数。
通过数据库管理维护数据查询信息,并从中断处开始继续后续数据传输,可以最大限度地克服网络波动、服务器重启等造成的异常中断对数据传输的影响,减少不必要的网络开销和磁盘读写,大幅提升数据传输的成功率和传输速度。
进一步地,优选地,该数据传输装置还可以包括:
第一判断模块,用于判断所述断点信息是否存在。
创建模块,用于在所述第一判断模块判断所述断点信息不存在的情况下,新建所述断点信息。
第二判断模块,用于判断所述查询模块是否查询结束。
在所述第二判断模块判断查询未结束的情况下,所述查询模块继续进行分页查询。以及
合并模块,用于合并所述查询模块的分页查询结果。
通过合并分页查询结果然后再存储查询结果和更新断点信息,可以批量对分页查询结果进行处理,可以大大提高数据传输的效率。
在本实施方式中,更进一步地,优选地,该数据传输装置适用于集群***中,并由所述集群***中抢占到分布式锁的服务器执行数据传输任务。
因此,相应地,该数据传输装置还包括:抢占模块,用于抢占所述分布式锁,并且所述分布式锁每隔预定的时间间隔进行更新。也就是说,在该分布式集群下,每隔预定的时间间隔,在集群所有服务器中同时产生完全一致的分布式锁,每次只有一台服务器能成功抢占分布式锁并执行所述数据传输任务。通过抢占分布式锁实现任务切分,任务成败不依赖单台服务器的稳定性,只要集群中存在可用的服务器,任务就能成功触发并顺利执行,保障了数据传输的速度和可靠性。
第一实施方式是与本实施方式相对应的方法实施方式,第一实施方式中的技术细节可以应用于本实施方式,本实施方式中的技术细节也可以应用于第一实施方式。
需要说明的是,本领域技术人员应当理解,上述数据传输装置的实施方式中所示的各模块的实现功能可参照前述数据传输方法的相关描述而理解。上述数据传输装置的实施方式中所示的各模块的功能可通过运行于处理器上的程序(可执行指令)而实现,也可通过具体的逻辑电路而实现。本申请实施例中的数据传输装置如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read OnlyMemory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
相应地,本申请实施方式还公开了一种数据传输设备,包括:
存储器,用于存储计算机可执行指令;以及,
处理器,用于在执行所述计算机可执行指令时实现本申请的各方法实施方式中的步骤。
相应地,本申请实施方式还提供一种计算机存储介质,其中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现本申请的各方法实施方式。
需要说明的是,在本专利的申请文件中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本专利的申请文件中,如果提到根据某要素执行某行为,则是指至少根据该要素执行该行为的意思,其中包括了两种情况:仅根据该要素执行该行为、和根据该要素和其它要素执行该行为。多个、多次、多种等表达包括2个、2次、2种以及2个以上、2次以上、2种以上。
在本申请提及的所有文献都被认为是整体性地包括在本申请的公开内容中,以便在必要时可以作为修改的依据。此外应理解,在阅读了本申请的上述公开内容之后,本领域技术人员可以对本申请作各种改动或修改,这些等价形式同样落于本申请所要求保护的范围。