一种数据上传方法及系统与流程

文档序号:14748519发布日期:2018-06-22 08:49阅读:232来源:国知局

本发明涉及数据上传技术领域,更具体地,涉及一种数据上传方法及系统。



背景技术:

随着IT技术的发展,公司、园区等配备的考勤、门禁等系统也越来越复杂,承载业务需要使用智能终端与服务器联网来完成。终端部署在门岗等位置,采集到考勤等信息,再上传到服务端处理。

由于公司的考勤数据对于每一位员工非常重要,因此终端采集的考勤这类信息必须确保不可漏传,另外上传还需要一定的实时性。

由于考勤数据量非常大,在实际上传的过程中,由于网络故障,多个终端同时上传数据给服务器可能会导致上传失败,从而导致数据漏传。



技术实现要素:

本发明提供一种克服上述问题或者至少部分地解决上述问题的一种数据上传方法及系统。

根据本发明的第一方面,提供一种数据上传方法,包括:

接收业务程序从本地数据库中添加的数据,将所述数据上传到服务器;

当数据上传失败时,采取设定的重传策略对上传失败的数据进行重传。

在上述技术方案的基础上,本发明还可以作如下改进。

进一步的,当上传数据成功时,回调业务程序,使得业务程序对数据库中的该条数据标记已上传标签,以及使得业务程序根据本地数据库中每条数据的标签,将未上传成功的数据添加到上传模块;

上传模块将业务程序添加的数据存储于数据列表中。

进一步的,设置所述数据列表的最大数据条数,当所述数据列表中的数据条数达到设置的所述最大数据条数,拒绝所述业务程序添加的数据,直到所述数据列表为空;

其中,当所述数据列表中的一条数据上传成功后,将该条数据从数据列表中移除。

进一步的,还包括:

当所述数据列表为空,则回调业务程序,使业务程序向上传模块中添加数据。

进一步的,所述当数据上传失败时,采取设定的重传策略对上传失败的数据进行重传具体包括:

当数据上传失败时,连续重传第一预设次数;

若连续重传第一预设次数依然失败,则按照预设时间间隔进行重传,直到上传成功。

根据本发明的第二方面,提供了一种数据上传方法,包括:

将本地数据库中需要上传的数据添加到上传模块,以使所述上传模块将所述数据上传至服务器,其中,当所述上传模块上传数据失败时,采取设定的重传策略对上传失败的数据进行重传。

进一步的,还包括:

当上传模块上传数据成功时,在本地数据库中将该条数据标记为已上传标签;

相应的,所述将本地数据库中需要上传的数据添加到上传模块具体包括:

根据本地数据库中每条数据的标签,将本地数据库中未成功上传的数据添加到上传模块,其中,每条数据的标签表征该条数据上传服务器是否成功。

进一步的,还包括:

当有数据需要上传时,业务程序采取主动的方式将本地数据库中需要上传的数据添加到上传模块中;

以及,当接收到上传模块的回调消息时,采用被动的方式向上传模块中添加数据。

根据本发明的第三方面,提供了一种数据上传系统,包括:

接收单元,用于接收业务程序从本地数据库中添加的数据,将所述数据上传到服务器;

重传单元,用于当数据上传失败时,采取设定的重传策略对上传失败的数据进行重传。

根据本发明的第四方面,提供了一种数据上传系统,包括:

添加单元,用于将本地数据库中需要上传的数据添加到上传模块,以使所述上传模块采用线程的方式将所述数据上传至服务器,其中,当所述上传模块上传数据失败时,采取设定的重传策略对上传失败的数据进行重传。

附图说明

图1为本发明一个实施例的数据上传方法流程图;

图2为本发明一个实施例的数据上传系统连接框图;

图3为本发明另一个实施例的数据上传系统连接框图;

图4为本发明又一个实施例的数据上传系统连接框图;

图5为本发明一个实施例的电子设备连接框图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

参见图1,提供了本发明一个实施例的数据上传方法,能够保证所有的数据都成功上传至服务器。该方法包括:接收业务程序从本地数据库中添加的数据,将所述数据上传到服务器;当数据上传失败时,采取设定的重传策略对上传失败的数据进行重传。

在本实施例中,设计一上传模块对数据进行上传,首先,在本地,将业务数据都存储于本地数据库中,当本地数据库中有数据需要上传至服务器时,业务程序会将这些需要上传的数据先添加到上传模块中,再由上传模块将这些数据上传至服务器。其中,上传模块开启一线程,采用线程在执行数据上传的任务。

通常情况下,由于需要上传的数据量很大,或者因为网络状态不好,都有可能导致数据上传失败,因此,本实施例中,当数据上传失败时,上传模块采取设定的重传策略对上传失败的数据进行重传,保证每一条数据都能成功上传至服务器。

在上述实施例的基础上,本发明的一个实施例中,还包括:当上传数据成功时,回调业务程序,使得业务程序对数据库中的该条数据标记已上传标签,以及使得业务程序根据本地数据库中每条数据的标签,将未上传成功的数据添加到上传模块;上传模块将业务程序添加的数据存储于数据列表中。

当上传模块上传数据成功时,回调业务程序,此时业务程序对本地数据库中该条数据标记为已上传标签,具体的,当数据上传成功时,业务程序可以在本地数据库中的该条数据后面添加一个字段,表明该数据已经成功上传至服务器。对于本地数据库中未上传成功的数据,可以标记未上传标签,也可以不作任何标记,没有做任何标记的数据默认为未上传成功。

业务程序在向上传模块中添加需要上传的数据时,根据本地数据库中每一条数据的标签,将未上传的数据都添加到上传模块中。上传模块接收到这些数据后,将这些数据存储到数据列表中。

在上述各实施例的基础上,本发明的一个实施例中,还包括:设置所述数据列表的最大数据条数,当所述数据列表中的数据条数达到设置的所述最大数据条数,拒绝所述业务程序添加的数据,直到所述数据列表为空;其中,当所述数据列表中的一条数据上传成功后,将该条数据从数据列表中移除。

业务数据向上传模块中添加数据,也会存在失败的情况,这是由于添加到上传模块中的数据存储于数据列表中,随着数据列表中数据量的增长可能导致内存溢出。因此,在本实施例中,对数据列表中的最大数据条数进行设置,当数据列表中的当前数据条数达到设置的最大数据条数时,即使业务程序再向上传模块中添加数据,上传模块也拒绝接收,业务程序接收到上传模块拒绝接收数据时,不再进行数据的添加了。

数据列表中的一条数据成功上传到服务器时,上传模块就将该条数据从数据列表中移除,当数据列表中的所有数据都成功上传至服务器后,上传模块会回调业务程序,通知业务程序可以向上传模块中添加需要上传的数据了。

此处,需要说明的是,由于业务程序在向上传模块中添加数据时,是根据本地数据库中每一条数据的是否已上传的标签为依据的,也就是说,业务程序不管数据向上传模块是否添加成功,只关注数据上传至服务器是否成功,如果数据未成功上传只服务器,就会向上传模块中添加。为了避免已经添加到上传模块中的数据还没有成功上传到服务器,业务成功再次将这些数据添加到上传模块,造成重复添加,因此,等到上传模块的数据列表中的所有的数据均成功上传到服务器,数据列表为空时,才允许业务程序再次向上传模块中添加数据。

在上述各实施例的基础上,本发明的一个实施例中,所述当数据上传失败时,采取设定的重传策略对上传失败的数据进行重传具体包括:当数据上传失败时,连续重传第一预设次数;若连续重传第一预设次数依然失败,则按照预设时间间隔进行重传,直到上传成功。

为了保证所有的数据均成功上传至服务器,当上传模块中的数据上传失败时,对数据进行重传,具体为先连续重传第一预设次数,若依然失败,则按照预设时间间隔进行重传,直到上传成功。比如,当某一条数据上传失败时,可以先连续重传三次,若连续重传三次依然失败,则间隔30s重传一次,这个重试时间间隔的设定,既是保障网络故障恢复后能及时上传,多次重传失败后又不至于过多的开销。

本发明还提供了一种数据上传方法,包括:将本地数据库中需要上传的数据添加到上传模块,以使所述上传模块采用线程的方式将所述数据上传至服务器,其中,当所述上传模块上传数据失败时,采取设定的重传策略对上传失败的数据进行重传。

前述的各实施例是从上传模块的角度来进行描述的,本实施例从业务程序的角度来描述,业务程序将业务产生的数据先存储到本地数据库中,当本地数据库中有数据需要上传给服务器时,业务程序将数据先添加到上传模块,由上传模块将这些数据上传给服务器。我了确保数据能够成功上传给服务器,当上传数据失败时,上传模块采取设定的重传策略对上传失败的数据进行重传。

在上述实施例的基础上,本发明的一个实施例中,还包括:当上传模块上传数据成功时,在本地数据库中将该条数据标记为已上传标签;相应的,所述将本地数据库中需要上传的数据添加到上传模块具体包括:根据本地数据库中每条数据的标签,将本地数据库中未成功上传的数据添加到上传模块,其中,每条数据的标签表征该条数据上传服务器是否成功。

当上传模块向服务器上传数据成功时,回调业务程序,使得业务程序将本地数据库中该条数据标记为已上传标签。在业务程序向上传模块中添加数据时,根据本地数据库中每一条数据的标签,将未成功成功上传的数据添加到上传模块中。

在上述各实施例的基础上,还包括:当有数据需要上传时,业务程序采取主动的方式将本地数据库中需要上传的数据添加到上传模块中;以及,当接收到上传模块的回调消息时,采用被动的方式向上传模块中添加数据。

其中,业务数据向上传模块中添加数据时,可以主动添加,也可以被动添加,前述描述的当上传模块中的数据列表为空时,上传模块回调业务程序,使业务程序向上传模块中添加数据属于业务程序被动添加数据。当有数据需要上传时,业务程序也会主动向上传模块中添加数据。

另外,当有新数据需要上传服务器时,优先将新数据添加到上传模块中,上传模块也会优先将数据上传到服务器。

参见图2,提供了本发明一个实施例的数据上传系统,包括接收单元21和上传单元22。

接收单元21,用于接收业务程序从本地数据库中添加的数据,将所述数据上传到服务器。

上传单元22,用于当数据上传失败时,采取设定的重传策略对上传失败的数据进行重传。

参见图3,提供了本发明另一个实施例的数据上传系统,包括接收单元21、上传单元22、设置单元23、回调单元24和存储单元25。

接收单元21,用于接收业务程序从本地数据库中添加的数据,将所述数据上传到服务器。

上传单元22,用于当数据上传失败时,采取设定的重传策略对上传失败的数据进行重传。

回调单元24,用于当上传数据成功时,回调业务程序,使得业务程序对数据库中的该条数据标记已上传标签,以及使得业务程序根据本地数据库中每条数据的标签,将未上传成功的数据添加到上传模块。相应的,存储单元25,用于将业务程序添加的数据存储于数据列表中。

设置单元23,用于设置所述数据列表的最大数据条数,使得当所述数据列表中的数据条数达到设置的所述最大数据条数,拒绝所述业务程序添加的数据,直到所述数据列表为空;其中,当所述数据列表中的一条数据上传成功后,将该条数据从数据列表中移除。

回调单元24,还用于当所述数据列表为空,则回调业务程序,使业务程序向上传模块中添加数据。

上传单元22,还用于当数据上传失败时,连续重传第一预设次数;以及用于若连续重传第一预设次数依然失败,则按照预设时间间隔进行重传,直到上传成功。

参见图4,提供了本发明一个实施例的数据上传系统,包括标记单元31和添加单元32。

标记单元31,用于当上传模块上传数据成功时,在本地数据库中将该条数据标记为已上传标签;相应的,添加单元32,用于根据本地数据库中每条数据的标签,将本地数据库中未成功上传的数据添加到上传模块,其中,每条数据的标签表征该条数据上传服务器是否成功。

添加模块32,还用于当有数据需要上传时,业务程序采取主动的方式将本地数据库中需要上传的数据添加到上传模块中;以及用于当接收到上传模块的回调消息时,采用被动的方式向上传模块中添加数据。

参见图5,提供了本发明的一种电子设备,包括:处理器(processor)501、存储器(memory)502和总线503;其中,所述处理器501和存储器502通过所述总线503完成相互间的通信。

所述处理器501用于调用所述存储器502中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:接收业务程序从本地数据库中添加的数据,将所述数据上传到服务器;当数据上传失败时,采取设定的重传策略对上传失败的数据进行重传。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分方法。

本发明提供的一种数据上传方法及系统,对上传失败的数据,采取一定的重传策略进行重传,使得需要上传的数据不会丢失,由于网络故障、服务端故障等原因导致暂时不能上传数据,在故障恢复后能无误地上传,确保每一条数据最终都能上传到服务器;另,在本地数据库中存储有所有的数据,且对每一条数据都标记了上传状态,即使网络状态不能够即使恢复,也可以从数据库中找到完整的数据。

最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1