基于状态机和数据持久化的数据传输方法、装置和设备与流程

文档序号:31359879发布日期:2022-08-31 14:22阅读:131来源:国知局
基于状态机和数据持久化的数据传输方法、装置和设备与流程

1.本技术的实施例涉及数据处理领域,尤其涉及基于状态机和数据持久化的数据传输方法、装置、设备和计算机可读存储设备。


背景技术:

2.当期,为了解决数据孤岛、数据烟囱的问题,达到数据汇聚传输和异构系统之间的数据交换需求。市面上企业解决这些问题通常使用etl工具进行数据的归集或交换,但是etl工具普通存在性能低下、单机化部署无法保证数据传输的高可靠,传统做法是在交换过程中进行实时的监控,当出现问题时采用人工进行手动处理及事后检查发现问题后进行数据补偿,这种方式工作量巨大,繁杂且需要大量的资源和人力投入其中,同时当发现任务失败时进行手动或自动的数据重跑,需要任务的幂等性和可重入性,且耗时会较长。
3.为了解决以上问题,且在数据传输过程中保证数据的高可靠,保证任务不会出现错误,以及在数据传输出现诸如网络中断、资源不足等问题导致的传输错误时,可以自动纠正或断点续传,保证任务继续运行和数据传输任务的高可靠,降低出现问题的风险和频率,所以亟需一种帮助企业在数据传输和交换的同时保证数据传输的高可靠的方法。


技术实现要素:

4.根据本技术的实施例,提供了一种基于状态机和数据持久化的数据传输方案。
5.在本技术的第一方面,提供了一种基于状态机和数据持久化的数据传输方法。该方法包括:基于预设批次顺序读取数据源中的数据,并依次注册到状态机中;通过第一节点的每个并行线程,读取已注册的批数据,并将其写入持久化存储,然后对所述批数据进行处理,将处理完成后的数据写入持久化存储以及发送至下一节点;同时,在读取、处理和完成开始的时刻将所述批数据对应的状态上报状态机;通过除第一节点外的其它节点,读取并处理批数据,并在处理完成后将处理后的批数据写入持久化存储以及发送下一节点,同时在读取、处理和完成开始的时刻将所述批数据对应的状态上报状态机;直至所有的批数据存储到目标数据库中,完成数据传输;若节点中的任一线程出现异常告警,则将对应批数据的异常上报至状态机;状态机根据异常处理策略驱动对应节点进行相应处理。
6.进一步地,所述基于预设批次顺序读取数据源中的数据,并依次注册到状态机中包括:其中,每个批数据均带有唯一的顺序编号;基于网络条件、单行数据量的大小和/或数据处理的复杂度,进行批次划分;根据划分的批次,顺序读取数据源中的数据,并依次注册到状态机中。
7.进一步地,所述状态机包括状态预定义、对象注册、状态注册、状态订阅、状态发布、状态更新、状态同步、状态清除和/或异常状态告警。
8.进一步地,还包括:当每个批数据存入目标数据后,删除状态机中与该批数据对应的状态以及持久化存储中该批数据唯一编号下的所有相关数据。
9.进一步地,所述持久化存储包括存储适配器接口、内置文件存储、内置mysql数据库、内存缓存数据库、外接关系型数据库、外接对象存储、外接文件存储和/或外接nfs服务。
10.进一步地,所述异常处理策略包括丢弃、跳过、重试、退回和/或挂起。
11.进一步地,所述状态机根据异常处理策略驱动对应节点进行相应处理包括:若所述异常处理策略为退回,则状态机根据该批数据的状态数据,将异常批数据的编号发送给发生异常节点的上一个正常处理节点,该节点接收到编号后,根据编号向持久化存储提取该编号批数据经本节点处理后的数据,并发送下一节点,重新对该批数据进行处理。
12.在本技术的第二方面,提供了一种基于状态机和数据持久化的数据传输装置。该装置包括:注册模块,用于基于预设批次顺序读取数据源中的数据,并依次注册到状态机中;第一处理模块,用于通过第一节点的每个并行线程,读取已注册的批数据,并将其写入持久化存储,然后对所述批数据进行处理,将处理完成后的数据写入持久化存储以及发送至下一节点;同时,在读取、处理和完成开始的时刻将所述批数据对应的状态上报状态机;第二处理模块,用于通过除第一节点外的其它节点,读取并处理批数据,并在处理完成后将处理后的批数据写入持久化存储以及发送下一节点,同时在读取、处理和完成开始的时刻将所述批数据对应的状态上报状态机;直至所有的批数据存储到目标数据库中,完成数据传输。
13.在本技术的第三方面,提供了一种电子设备。该电子设备包括:存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现如以上所述的方法。
14.在本技术的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如根据本技术的第一方面的方法。
15.本技术实施例提供的基于状态机和数据持久化的数据传输方法,通过基于预设批次顺序读取数据源中的数据,并依次注册到状态机中;通过第一节点的每个并行线程,读取已注册的批数据,并将其写入持久化存储,然后对所述批数据进行处理,将处理完成后的数据写入持久化存储以及发送至下一节点;同时,在读取、处理和完成开始的时刻将所述批数据对应的状态上报状态机;通过除第一节点外的其它节点,读取并处理批数据,并在处理完成后将处理后的批数据写入持久化存储以及发送下一节点,同时在读取、处理和完成开始的时刻将所述批数据对应的状态上报状态机;直至所有的批数据存储到目标数据库中,完成数据传输,实现了数据传输的不中断和高可靠。
16.应当理解,发明内容部分中所描述的内容并非旨在限定本技术的实施例的关键或重要特征,亦非用于限制本技术的范围。本技术的其它特征将通过以下的描述变得容易理解。
附图说明
17.结合附图并参考以下详细说明,本技术各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:图1示出了根据本技术的实施例的基于状态机和数据持久化的数据传输方法的流程图;图2示出了根据本技术的实施例的状态机功能架构图;图3示出了根据本技术的实施例的持久化存储架构图;图4示出了根据本技术的实施例的运行机制示意图;图5示出了根据本技术的实施例的基于状态机和数据持久化的数据传输装置的方框图;图6示出了适于用来实现本技术实施例的终端设备或服务器的结构示意图。
具体实施方式
18.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本公开保护的范围。
19.另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
20.图1示出了根据本公开实施例的基于状态机和数据持久化的数据传输流程图。所述方法包括:s110,基于预设批次顺序读取数据源中的数据,并依次注册到状态机中。
21.在一些实施例中,如图2所示,状态机包括状态预定义、对象注册、状态注册、状态订阅 、状态发布、状态更新、状态同步(系统所有节点状态的同步)、状态清除和/或异常状态告警等;其中,所述对象表示数据源的某个批次;图2中,参数配置表示每一批大小(条数),并发时并发数量等;状态订阅表示状态同步上传(发布)、下发(订阅)。
22.即所述状态机用于,构建数据批的元数据信息,状态预定义、状态迁移策略定义、状态同步、状态清除来获取每个批次数据的状态信息,并保持在分布式传输节点之间进行状态信息共享,让各个节点都实时的指导每一个过程中批次数据的保存位置和阶段状态,并在每个批次传输完成后发布通知进行状态的清理;所述元数据包括编号、条数、创建时间戳等定义批数据(二维行列组成结构化数据的集合)的信息。
23.在一些实施例中,结合网络条件、单行数据量的大小和/或数据处理的复杂度等因素划定批次。
24.优选地,每批次数据条数一般不超过2000条,且大于10条。批次条数过大会增加异常发生时的损失成本,且网络传输和磁盘读写时间过长,增加异常风险,批次过小会造成频繁读取源数据库,给源数据库造成过大压力。
25.进一步地,根据划分的批次,顺序读取数据源中的数据,并依次注册到状态机中。
26.其中,每个批数据均具有唯一的顺序编码;所述批数据不同于数据包,为二维行列组成的结构化数据的集合。
27.在一些实施例中,每个具有唯一编码的批数据,在源头进行状态注册,并在注册后等待进入第一个节点(第一个节点中的批数据处理完成,下一批数据);即,将当前批数据的编码和状态进行存储;所述状态包括存当前状态和历史状态(时间戳(交换机性能指标监控)+编号+状态),具体包括,读取(某节点)、处理中(某节点)、处理完成(某节点)、持久化完成(某节点)等。
28.在一些实施例中,批数据的注册方式为依次注册,即上一批数据注册完成后,进行下一批数据注册(可按照编码顺序进行排序)。
29.进一步地,注册完成后,排队等待节点处理完成,并行n线程,n等于内存大小除以每批数据大小乘以百分比,优选为60%s120,通过第一节点的每个并行线程,读取已注册的批数据,并将其写入持久化存储,然后对所述批数据进行处理,将处理完成后的数据写入持久化存储以及发送至下一节点;同时,在读取、处理和完成开始的时刻将所述批数据对应的状态上报状态机。
30.在一些实施例中,如图3所示,所述持久化存储为内置或者外接持久化存储,用于进行传输中数据批的持久化存储,防止因为网络波动或者认为造成的数据传输错误和数据丢失,做到即使发生错误也可以从持久化存储中获取数据进行接续传输,持久化存储可以内置的文件存储或者外接其它数据存储,提供统一的持久化存储适配器接口和数据清除、数据写入接口,支持关系型数据库、对象存储、分布式文件系统和/或nfs服务等。
31.进一步地,所述内置、外置存储,均可根据使用企业已有的it建设情况,设置关于存储方式的“参数配置”,运行时可通过“参数配置”来指定某一种存储类型,作为持久化存储。
32.进一步地,持久化存储包括:存储适配器接口(数据写入接口、数据清除接口)、内置文件存储 、内置mysql数据库、内存缓存数据库(redis)、外接关系型数据库、外接对象存储、外接文件存储、外接nfs(文件存储)服务等。
33.在一些实施例中,第一节点的每个并行线程在读取批数据后,将其写入持久化存储,然后进行处理,处理完成后将处理后的数据同时编号写入持久化存储以及发送下一节点;并在读取、处理、完成开始的时刻将所述批数据对应的状态上报状态机,即,每个节点对批数据进行数据处理后,都会将处理后的批数据存入持久化存储,在持久化存储内每个编号下包括每个节点处理后的批数据以及最初的批数据。
34.s130,通过除第一节点外的其它节点,读取并处理批数据,并在处理完成后将处理后的批数据写入持久化存储以及发送下一节点,同时在读取、处理和完成开始的时刻将所述批数据对应的状态上报状态机;直至所有的批数据存储到目标数据库中,完成数据传输。
35.在一些实施例中,批数据在节点中的处理过程可参考步骤s120中的相关步骤,在此不再赘述。
36.在一些实施例中,若在节点中的任一线程出现异常告警,则节点线程池管理模块会将对应批数据的异常上报状态机,状态机根据异常处理策略驱动对应节点进行相应处理;所述异常处理策略包括丢弃、跳过、重试、退回和/或挂起(等待人工处理)等;所述线程
池管理模块(任务队列管理),用于管理所在节点的并行数据处理线程,并向状态机上报每个线程对批数据的处理状态,以及异常告警,并在异常告警时接收状态机发送的异常处理消息(包括编号),并根据该消息从持久化存储中获取对应数据(退回获取节点处理后的数据,重试获取节点对该批数据首次读取的数据);其中,若所述异常处理策略为退回,则状态机根据该批数据的状态数据,将异常批数据的编号发送给发生异常节点的上一个正常处理节点,该节点接收到编号后,根据编号向持久化存储提取该编号批数据经本节点处理后的数据,并发送下一节点,重新对该批数据进行处理(重走处理流程)。
37.进一步地,可通过第j节点和第i节点以及对j、i大小的定义来区分发生异常节点和异常节点的上一个正常处理节点。
38.进一步地,还包括:在每个批数据存入目标数据后,删除状态机中与该批数据对应的状态以及持久化存储中该批数据唯一编号下的所有相关数据。
39.需要说明的是,本公开对批数据进行存储的步骤为异步存储(主处理流程与持久化存储的异步),批数据是否持久化存储不影响主处理流程节点对批数据的处理。
40.根据本公开的实施例,实现了以下技术效果:本公开提供了一种高可靠的数据分批传输方法,极大的提高数据传输任务的成功率和数据到达率,并具备传输任务故障自愈能力和断点传输能力。
41.如图4所示,本公开的传输方法,无需人工的参与手动处理异常,可以在数据传输过程中自动的将数据以分批的形式进行发送,同时记录每一个数据批的状态并在数据传输过程中实时进行数据批的状态同步,保持状态一致性,且在数据传输过程中可以通过配置选择性的按需对数据进行持久化留存,保证数据只要来到交换平台就不会丢失,即使某个数据批出现问题也可以根据状态同步和通知快速自动定位,通过纠错机制获取错误批的状态和信息,并自动从持久化中读取出错批的数据进行进行接续传输,实现数据传输的不中断和高可靠。
42.需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本技术所必须的。
43.以上是关于方法实施例的介绍,以下通过装置实施例,对本技术所述方案进行进一步说明。
44.图5示出了根据本技术的实施例的基于状态机和数据持久化的数据传输装置500的方框图,如图5所示,装置500包括:注册模块510,用于基于预设批次顺序读取数据源中的数据,并依次注册到状态机中;第一处理模块520,用于通过第一节点的每个并行线程,读取已注册的批数据,并将其写入持久化存储,然后对所述批数据进行处理,将处理完成后的数据写入持久化存储以及发送至下一节点;同时,在读取、处理和完成开始的时刻将对应的状态上报状态机;
第二处理模块530,用于通过除第一节点外的其它节点,读取并处理批数据,并在处理完成后将处理后的批数据写入持久化存储以及发送下一节点,同时在读取、处理和完成开始的时刻将对应的状态上报状态机,直至所有的批数据存储到目标数据库中,完成数据传输。
45.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,所述描述的模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
46.图6示出了适于用来实现本技术实施例的终端设备或服务器的结构示意图。
47.如图6所示,终端设备或服务器600包括中央处理单元(cpu)601,其可以根据存储在只读存储器(rom)602中的程序或者从存储部分608加载到随机访问存储器(ram)603中的程序而执行各种适当的动作和处理。在ram 603中,还存储有系统600操作所需的各种程序和数据。cpu 701、rom 602以及ram 603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。
48.以下部件连接至i/o接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至i/o接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
49.特别地,根据本技术的实施例,上文方法流程步骤可以被实现为计算机软件程序。例如,本技术的实施例包括一种计算机程序产品,其包括承载在机器可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(cpu)601执行时,执行本技术的系统中限定的上述功能。
50.需要说明的是,本技术所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本技术中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本技术中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
51.附图中的流程图和框图,图示了按照本技术各种实施例的系统、方法和计算机程
序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,前述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
52.描述于本技术实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
53.作为另一方面,本技术还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中的。上述计算机可读存储介质存储有一个或者多个程序,当上述前述程序被一个或者一个以上的处理器用来执行描述于本技术的方法。
54.以上描述仅为本技术的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本技术中所涉及的申请范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离前述申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本技术中申请的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1