本发明涉及数据处理技术领域,特别是涉及一种数据处理方法、装置及计算机可读存储介质。
背景技术:
现有的数据处理系统中,用户在发起业务请求时,容易出现同一个用户连续发起多次相同的业务请求的情况,此时服务器会接收到同一用户的多次业务请求,并分别针对这多个业务请求产生多个响应数据,此时如果多个响应数据太大,则需要分别进行分片处理再发送到数据处理系统,数据处理系统接收到后再对多个响应数据各自包含的多个原始响应包进行合并得到完整响应包,从而得到完整的响应数据。
但是,现有的原始响应包合并方式都是以业务标识为合并依据,这样,数据处理系统接收到服务器返回的原始响应包之后,以业务标识为依据对原始响应包的合并不准确,容易导致业务异常。
技术实现要素:
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种数据处理方法、装置及计算机可读存储介质。
为了解决上述问题,本发明实施例公开了一种数据处理方法,应用于数据处理系统,所述数据处理系统与服务器通信连接,所述方法包括:
接收用户输入的至少一个业务参数;
根据至少一个所述业务参数,确定各个所述业务参数对应的业务命令包,一个所述业务命令包携带唯一的身份标识;
将各个所述业务命令包发送给所述服务器;
接收所述服务器返回的与各个所述业务命令包分别对应的原始响应包,相互对应的所述原始响应包与所述业务命令包携带相同的身份标识;
根据各个所述原始响应包携带的身份标识、包分片总数和当前分片号,确定各个业务命令包分别对应的完整响应包。
可选地,所述业务参数包括业务标识和业务数据,根据至少一个所述业务参数,确定各个所述业务参数对应的业务命令包,包括:
对各个所述业务标识赋值,生成各个所述业务标识对应的身份标识,每个身份标识具有唯一性;
根据所述身份标识和预设封装规则,对各个所述业务数据进行封装,生成各个所述业务参数对应的业务命令包。
可选地,在根据各个所述原始响应包携带的身份标识、包分片总数和当前分片号,确定各个业务命令包分别对应的完整响应包之前,所述方法还包括:
根据各个所述原始响应包携带的包分片总数,判断各个所述业务命令包对应的完整响应包是否已被分片处理;
所述根据各个所述原始响应包携带的身份标识、包分片总数和当前分片号,确定各个业务命令包分别对应的完整响应包,包括:
在所述业务命令包对应的完整响应包已被分片处理的情况下,以所述业务命令包对应的原始响应包作为所述业务命令包对应的完整响应包;
在所述业务命令包对应的据包未被分片处理的情况下,根据同一身份标识对应的所有原始响应包,按照各个原始响应包的当前分片号,对所述各个原始响应包进行排序合并,获得所述业务命令包对应的完整响应包。
可选地,在根据同一身份标识对应的所有原始响应包,按照各个原始响应包的当前分片号,对所述各个原始响应包进行排序合并,获得所述业务命令包对应的完整响应包之前,所述方法还包括:
在所述业务命令包对应的完整响应包已被分片处理的情况下,建立所述业务命令包的身份标识与响应包存储队列的关联关系;
将所述身份标识对应的所有原始响应包存入所述响应包存储队列;
判断所述响应包存储队列中的原始响应包数量是否等于包分片总数;
在所述响应包存储队列中的原始响应包数量等于所述包分片总数的情况下,以所述响应包存储队列中的原始响应包作为同一身份标识对应的所有原始响应包。
可选地,将各个所述业务命令包发送给所述服务器之后,所述方法还包括:
根据所述业务命令包的身份标识,判断是否能够在本地获取到所述业务命令包对应的完整响应包;
在未获取到所述完整响应包的情况下,获取所述业务命令包对应的响应超时时间;
判断所述响应超时时间是否大于预设超时时长;
在所述响应超时时间小于所述预设超时时长的情况下,返回步骤:根据所述业务命令包的身份标识,判断是否能够在本地获取到所述业务命令包对应的完整响应包,直到所述响应超时时间大于所述预设超时时长,或者直到根据所述业务命令包的身份标识,在本地获取到所述业务命令包对应的完整响应包。
本发明实施例还公开了一种数据处理装置,应用于数据处理系统,所述数据处理系统与服务器通信连接,所述装置包括:
第一接收模块,用于接收用户输入的至少一个业务参数;
第一确定模块,用于根据至少一个所述业务参数,确定各个所述业务参数对应的业务命令包,一个所述业务命令包携带唯一的身份标识;
发送模块,用于将各个所述业务命令包发送给所述服务器;
第二接收模块,用于接收所述服务器返回的与各个所述业务命令包分别对应的原始响应包,相互对应的所述原始响应包与所述业务命令包携带相同的身份标识;
第二确定模块,用于根据各个所述原始响应包携带的身份标识、包分片总数和当前分片号,确定各个业务命令包分别对应的完整响应包。
可选地,所述业务参数包括业务标识和业务数据,所述第一确定模块,包括:
第一生成子模块,用于对各个所述业务标识赋值,生成各个所述业务标识对应的身份标识,每个身份标识具有唯一性;
第二生成子模块,用于根据所述身份标识和预设封装规则,对各个所述业务数据进行封装,生成各个所述业务参数对应的业务命令包。
可选地,所述装置还包括:
第一判断模块,用于根据各个所述原始响应包携带的包分片总数,判断各个所述业务命令包对应的完整响应包是否已被分片处理;
所述第二确定模块,包括:
第一获得子模块,用于在所述业务命令包对应的完整响应包已被分片处理的情况下,以所述业务命令包对应的原始响应包作为所述业务命令包对应的完整响应包;
第二获得子模块,用于在所述业务命令包对应的据包未被分片处理的情况下,根据同一身份标识对应的所有原始响应包,按照各个原始响应包的当前分片号,对所述各个原始响应包进行排序合并,获得所述业务命令包对应的完整响应包。
可选地,所述装置还包括:
创建模块,用于在所述业务命令包对应的完整响应包已被分片处理的情况下,建立所述业务命令包的身份标识与响应包存储队列的关联关系;
存储模块,用于将所述身份标识对应的所有原始响应包存入所述响应包存储队列;
第二判断模块,用于判断所述响应包存储队列中的原始响应包数量是否等于包分片总数;
第三确定模块,用于在所述响应包存储队列中的原始响应包数量等于所述包分片总数的情况下,以所述响应包存储队列中的原始响应包作为同一身份标识对应的所有原始响应包。
可选地,所述装置还包括:
第三判断模块,用于根据所述业务命令包的身份标识,判断是否能够在本地获取到所述业务命令包对应的完整响应包;
获取模块,用于在未获取到所述完整响应包的情况下,获取所述业务命令包对应的响应超时时间;
第四判断模块,用于判断所述响应超时时间是否大于预设超时时长;
返回模块,用于在所述响应超时时间小于所述预设超时时长的情况下,返回步骤:根据所述业务命令包的身份标识,判断是否能够在本地获取到所述业务命令包对应的完整响应包,直到所述响应超时时间大于所述预设超时时长,或者直到根据所述业务命令包的身份标识,在本地获取到所述业务命令包对应的完整响应包。
本发明实施例还公开了一种数据处理装置,包括:
一个或多个处理器;和
其上存储有指令的一个或多个计算机可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如本发明实施例任一所述的数据处理方法。
本发明实施例还公开了一种计算机可读存储介质,其存储的计算机程序使得处理器执行如本发明实施例所述的数据处理方法。
本发明实施例包括以下优点:
在本发明实施例提供的数据处理方法中,通过接收用户输入的至少一个业务参数,根据至少一个业务参数,确定各个业务参数对应的业务命令包,一个业务命令包携带唯一的身份标识,将各个业务命令包发送给服务器,接收服务器返回的与各个业务命令包分别对应的原始响应包,相互对应的原始响应包与业务命令包携带相同的身份标识,根据各个原始响应包携带的身份标识、包分片总数和当前分片号,确定各个业务命令包分别对应的完整响应包,使用本发明实施例的数据处理方法,由于每个业务命令包携带唯一的身份标识,使得服务器返回的对应的原始响应包也能够携带对应的身份标识,进而根据各个原始响应包携带的身份标识、包分片总数和当前分片号获得业务命令包对应的完整响应包,本发明实施例中,以身份标识为依据,可以提高用户在发起相同业务时获得完整响应包的准确性,进而保证业务正常。
附图说明
图1是本发明一实施例提供的一种数据处理方法的步骤流程图;
图2是本发明一实施例提供的另一种数据处理方法的步骤流程图;
图3是本发明一实施例提供的一种数据处理系统各部分的结构框图;
图4是本发明一实施例提供的一种数据处理系统各部分的功能框图;
图5是本发明一实施例提供的一种数据处理装置的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
用户在发起业务请求时,如果连续发起了两次相同的业务请求,即第一个业务请求对应的原始响应包未接收完毕,就再次发送了第二个业务请求,此时,前后两个业务请求携带的业务标识是相同的,现有的原始响应包合并方式都是以业务标识为合并依据,因此,数据处理系统面对接收到的前后两个业务请求对应的多个原始响应包,在进行原始响应包的合并时,根据业务标识不能正确区分前后两个业务请求各自对应的原始响应包,很容易出现合并错误的情况,即将第二个业务请求的原始响应包错当成第一个业务请求的原始响应包进行合并,产生异常数据,从而导致业务异常。
请参考图1,图1示出了本发明实施例提供的一种数据处理方法的步骤流程图,该方法可以应用于数据处理系统,所述数据处理系统与服务器通信连接,具体可以包括如下步骤:
步骤s11,接收用户输入的至少一个业务参数。
本实施例中,数据处理系统可以是基于服务器进行开发的系统,数据处理系统可以通过tcpsocket连接到服务器,并使用服务器中注册的账号登录到服务器,之后便可以获取服务器产生的响应数据。此外,数据处理系统可以接收用户输入的业务参数,从而对用户的业务进行处理。
业务参数可以包括业务标识和业务数据,其中,业务标识用于唯一标识用户发起的业务请求的类型,例如,业务标识可以标识用户发起的业务是下载业务、会议业务或者视频播放业务等;业务数据是针对业务请求的操作数据,可以是用户执行该操作针对的对象,例如可以是下载业务针对的下载对象,会议业务针对的参会方或者视频播放业务的播放对象等等。
用户的业务请求的类型可以是网络中各种业务请求,例如文件下载业务、会议业务、视频播放业务等,本实施例中对用户的业务不做具体限定。
以用户业务标识为文件下载业务为例,用户在操作时可能发生了误操作,短时间内点击了同一个下载按键两次,此时,数据处理系统可以接收用户输入的两个业务参数,由于两次下载业务都是点击的同一个下载按键,因此,这两个业务参数对应的业务标识相同,又或者,用户在进行下载业务时,第一次下载业务选择的是第1和第2个文件下载,接着开始了第二次下载业务,第二次下载业务选择的是第3和第4个文件下载,此时,数据处理系统可以接收用户输入的两个业务参数,同样地,由于两次下载业务都是点击的同一个下载按键,因此,这两个业务参数对应的业务标识也相同。
步骤s12,根据至少一个所述业务参数,确定各个所述业务参数对应的业务命令包,一个所述业务命令包携带唯一的身份标识。
本实施例中,数据处理系统在接收到业务参数之后,能够对各个业务参数进行处理,分别生成各个业务参数对应的业务命令包,并且每个业务命令包携带唯一的身份标识。其中,业务命令包是服务器用于解析并执行,产生完整响应包的数据包。
在一种实施方式中,上述步骤s22具体可以包括以下步骤:
步骤s121,对各个所述业务标识赋值,生成各个所述业务标识对应的身份标识,每个身份标识具有唯一性。
步骤s122,根据所述身份标识和预设封装规则,对各个所述业务数据进行封装,生成各个所述业务参数对应的业务命令包。
本实施例中,数据处理系统在接收到业务参数之后,可以获取业务参数中的业务标识,并对每个业务标识赋不同的值,赋值之后的业务标识即为所述业务标识对应的身份标识,如此,经过数据处理系统处理之后生成的每个身份标识具有唯一性。
在一种实施方式中,数据处理系统对每个业务标识赋不同的值时,具体可以采用数值累加的规则进行赋值,并且,赋值过程不会删除原本的业务标识。示例地,数据处理系统先后接收到3个业务标识a、a、b,对接收到的第一个业务标识a赋值为1,第二业务标识a赋值为2,第三个业务标识b赋值为3,此时赋值后的业务标识分别为a1、a2、b3。本实施例中,通过数值累加的规则进行赋值能够保证每个业务标识具有唯一性,并且赋值过程不会删除原本的业务标识,方便服务器识别业务请求的类型。
在对各个业务标识赋值之后,便能够根据身份标识和预设封装规则,对属于同一个业务参数中的业务数据进行封装,生成各个业务参数对应的业务命令包,而对于数据包的具体封装过程可以参考任一合适的现有技术,此处不再赘述。
在一种实施方式中,根据预设封装规则可以将身份标识封装在业务命令包的最外层,便于服务器或者数据处理系统可以较快地解析数据包,获得身份标识,而不必解析到业务命令包的内层。
步骤s13,将各个所述业务命令包发送给所述服务器。
本实施例中,数据处理系统本地可以创建发包队列,数据处理系统在生成业务命令包之后,便可以将业务命令包放入发包队列中,等待发送发包队列中的业务命令包。
步骤s14,接收所述服务器返回的与各个所述业务命令包分别对应的原始响应包,相互对应的所述原始响应包与所述业务命令包携带相同的身份标识。
本实施例中,原始响应包是指数据处理系统接收到的原始状态的响应包,即数据处理系统还未做合并处理的响应包。
服务器在收到数据处理系统发送的各个业务命令包之后,可以对各个业务命令包进行解析,获得各个业务命令包对应的身份标识和业务数据,并进行相应的处理,生成各个业务命令包分别对应的响应数据,并将各个响应数据按照预设封装规则封装之后发送到数据处理系统,如此,数据处理系统便能够开启线程实时接收服务器返回接收服务器返回的与各个所述业务命令包分别对应的原始响应包。由于服务器能够获得各个业务命令包对应的身份标识和业务数据,因此,服务器可以在封装响应包时,在响应包中添加对应的身份标识,如此,服务器对应生成的原始响应包与服务器接收到的业务命令包便能够携带相同的身份标识。
示例地,仍以下载任务为例,服务器接收到业务命令包之后,便能够对业务命令包进行解析,获得身份标识(下载命令和赋值)和下载对象,并从数据库中获取下载对象对应的下载数据,作为响应数据,并将身份标识(下载命令和赋值)和响应数据封装成原始响应包,发送到数据处理系统。
步骤s15,根据各个所述原始响应包携带的身份标识、包分片总数和当前分片号,确定各个业务命令包分别对应的完整响应包。
本实施例中,由于服务器发包大小限制,服务器根据业务命令包生成的响应数据有两种可能的情况,一种情况是,响应数据超过发包大小限制,此时响应数据需要被分为多个包发送,即服务器对生成的响应数据进行分片处理,生成多个分片包再发送到数据处理系统;另一种情况是,响应数据未超过发包大小限制,此时不需要分片处理,直接以一个响应包发送响应数据。但是不管是哪一种情况,服务器在封装数据时,均会携带身份标识、包分片总数和当前分片号。若服务器封装响应数据时不需要分片处理,则该身份标识对应的封装后的响应包的包分片总数为1,当前分片号为1;若服务器封装响应数据时需要分片处理,则该响应数据封装时被分为多少个数据包,那么该身份标识对应的响应包的包分片总数就是多少,另外,该身份标识对应的响应包的当前分片号为也按照实际封装顺序来确定。
数据处理系统在接收到服务器返回的原始响应包之后,可以对各个原始响应包进行解析,获得各个原始响应包携带的身份信息、包分片总数和当前分片号,并根据各个原始响应包携带的身份信息、包分片总数和当前分片号,得到各个业务命令包分别对应的完整响应包。
本实施例中,通过接收用户输入的至少一个业务参数,根据至少一个业务参数,确定各个业务参数对应的业务命令包,一个业务命令包携带唯一的身份标识,将各个业务命令包发送给服务器,接收服务器返回的与各个业务命令包分别对应的原始响应包,相互对应的原始响应包与业务命令包携带相同的身份标识,根据各个原始响应包携带的身份标识、包分片总数和当前分片号,确定各个业务命令包分别对应的完整响应包,使用本发明实施例的数据处理方法,由于每个业务命令包携带唯一的身份标识,使得服务器返回的对应的原始响应包也能够携带对应的身份标识,进而根据各个原始响应包携带的身份标识、包分片总数和当前分片号获得业务命令包对应的完整响应包,本发明实施例中,以身份标识为依据,可以提高用户在发起相同业务时获得完整响应包的准确性,进而保证业务正常。
结合以上实施例,考虑到服务器在返回完整响应包时有的响应数据会被分片处理,有的响应数据不会被分片处理,因此,为了准确获得业务命令包对应的完整响应包,参考图2,图2是本申请一实施例提供的另一种数据处理方法,如图2所示,在步骤s15之前,本申请的数据处理方法还可以包括以下步骤:
步骤s104,根据各个所述原始响应包携带的包分片总数,判断各个所述业务命令包对应的完整响应包是否已被分片处理。
相应地,上述步骤s15具体可以包括以下步骤:
步骤s151,在所述业务命令包对应的完整响应包已被分片处理的情况下,以所述业务命令包对应的原始响应包作为所述业务命令包对应的完整响应包。
步骤s152,在所述业务命令包对应的据包未被分片处理的情况下,根据同一身份标识对应的所有原始响应包,按照各个原始响应包的当前分片号,对所述各个原始响应包进行排序合并,获得所述业务命令包对应的完整响应包。
本实施例中,数据处理系统可以根据各个原始响应包携带的包分片总数,判断各个所述业务命令包对应的完整响应包是否已被分片处理。
示例地,若原始响应包携带的包分片总数为1,则说明该原始响应包中的身份标识所标识的业务命令包对应的完整响应包未被分片处理,若原始响应包携带的包分片总数不为1,则说明该原始响应包已被分片处理。
若业务命令包对应的完整响应包未被分片处理,则不需要对原始响应包进行合并处理,可以直接以该原始响应包作为业务命令包对应的完整响应包;若业务命令包对应的完整响应包已被分片处理,则需要对原始响应包进行合并处理。具体地,需要数据处理系统接收到同一身份标识对应的所有原始响应包,所有的原始响应包中的数据才构成业务命令包的响应数据,接着再按照各个原始响应包的当前分片号对各个原始响应包进行排序,最后再将排序后的各个原始响应包进行合并,最终获得业务命令包对应的完整响应包。
本实施例中,通过对各个业务命令包对应的完整响应包是否已被分片处理进行判断,可以方便、准确的获得各个业务命令包对应的完整响应包。
在一种实施方式中,在获得业务命令包对应的完整响应包之后,可以以键值对的方式暂存在本地,具体地,以身份标识为键,以完整响应包为值。
在一种实施方式中,为了便于对数据处理系统接收到的各个原始响应包进行管理,在步骤s152之前,本申请的数据处理方法还可以包括以下步骤:
步骤s1041,在所述业务命令包对应的完整响应包已被分片处理的情况下,建立所述业务命令包的身份标识与响应包存储队列的关联关系。
步骤s1042,将所述身份标识对应的所有原始响应包存入所述响应包存储队列。
步骤s1043,判断所述响应包存储队列中的原始响应包数量是否等于包分片总数。
步骤s1044,在所述响应包存储队列中的原始响应包数量等于所述包分片总数的情况下,以所述响应包存储队列中的原始响应包作为同一身份标识对应的所有原始响应包。
本实施例中,如果数据处理系统判断有业务命令包对应的完整响应包已被分片处理,此时,数据处理系统可以创建一个响应包存储队列,并建立业务命令包的身份标识与响应包存储队列的关联关系,用来存储各个业务命令包对应的原始响应包,具体地,响应存储队列中的数据可以以键值对的方式存储,具体地,可以以身份标识为键,以该身份标识对应的集合为值进行存储,该身份标识对应的集合中则存储该身份标识对应的所有原始响应包。
在按照身份标识存储对应的原始数据包之后,数据处理系统可以判断响应包存储队列中各个身份标识对应的原始响应包数量是否等于包分片总数,如果响应包存储队列中的原始响应包数量等于包分片总数,则说明该身份标识对应的原始数据包已经全部被接收,此时,便可以将响应包存储队列中该身份标识对应的所有原始响应包作为同一身份标识对应的所有原始响应包,继而继续执行上述步骤s152。
本实施例中,通过建立业务命令包的身份标识与响应包存储队列的关联关系来存储各个原始响应包,便于对各个原始响应包进行管理,便于统计各个身份标识对应的原始响应包的总数,从而判断同一身份标识的原始响应包是否接收完成,提高了完整响应包的获得效率。
在一种实施方式中,考虑到数据处理系统可以与服务器之间建立多条tcpsocket连接,从而提供给多个用户接入,此时,多个用户可能同时发送业务参数给数据处理系统,在某些极端情况下,例如,两个用户前后发送两个业务参数时间间隔非常接近,此时可能导致数据处理系统在对业务参数包括的业务标识赋值时,赋上相同的值,此时,根据身份标识则不能准确业务命令包对应的获得完整响应包,因此,数据处理系统在接收服务器返回的原始响应包时,还可以记录下该原始响应包对应的tcpsocket连接的连接信息,从tcpsocket连接的连接信息信息中可以获取到使用该条tcpsocket连接的用户标识,这样数据处理系统便能够根据身份标识和用户标识共同确定完整响应包。
此外,考虑到在根据业务命令包获取完整响应包的实际过程中,可能会存在一定的正常延迟,以及发送完整的数据包需要一定的时间,因此,为了提高数据处理系统对完整响应包的获取准确性,在步骤s13之后,本申请实施例的数据处理方法还可以包括以下步骤:
步骤s131,根据所述业务命令包的身份标识,判断是否能够在本地获取到所述业务命令包对应的完整响应包。
步骤s132,在未获取到所述完整响应包的情况下,获取所述业务命令包对应的响应超时时间。
步骤s133,判断所述响应超时时间是否大于预设超时时长。
步骤s134,在所述响应超时时间小于所述预设超时时长的情况下,返回步骤:根据所述业务命令包的身份标识,判断是否能够在本地获取到所述业务命令包对应的完整响应包,直到所述响应超时时间大于所述预设超时时长,或者直到根据所述业务命令包的身份标识,在本地获取到所述业务命令包对应的完整响应包。
本实施例中,响应超时时间是指各个业务命令包从数据处理系统发出之时起,开始计算的时间。示例地,业务标识a1对应的业务命令包在12时58分00秒时刻发出,当前时刻为12时58分01秒,则该业务命令包在当前时刻的响应超时时间为1秒钟。
预设超时时长是指考虑正常延迟情况下,预先设置的允许业务命令包返回的时长,也就是说在预设超时时长内,都可以正常接收业务命令包。预设超时时长可以根据业务类型进行设置,也可以根据当前网络状况进行设置。
数据处理系统在获得业务命令包对应的完整响应包之后,会暂存在本地,因此,数据处理系统在将各个业务命令包发送给服务器之后,可以实时根据各个业务命令包的身份标识查找本地是否暂存有对应的完整响应包,如果获取到某个业务命令包对应的完整响应包,则数据处理系统可以进行相关的业务处理,如果未获取到某个业务命令包对应的完整响应包,数据处理系统则首先获取该业务命令包对应的响应超时时间,并判断该业务命令包对应的响应超时时间是否小于预设超时时长,如果响应超时时间是否小于预设超时时长,则再次重复地判断是否能够在本地获取到所述业务命令包对应的完整响应包,一直到响应超时时间大于预设超时时长或者在本地获取到所述业务命令包对应的完整响应包。如果响应超时时间大于预设超时时长时仍然未获取到业务命令包对应的完整响应包,数据处理系统则可以生成异常提示,报告该业务命令包存在异常,便于用户进行异常处理。
参考图3,图3是本发明一实施例提供的一种数据处理系统各部分的结构框图,如图3所示,数据处理系统具体可以包括用户交互模块、业务命令包封装模块、业务命令包发送模块、业务结果信息接收模块、数据存储模块。
参考图4,图4是本发明一实施例提供的一种数据处理系统各部分的功能框图,如图4所示,各部分的功能具体如下:
1、用户在用户交互模块发起业务,用户交互模块将业务参数传入业务命令包封装模块;
2、业务命令包封装模块对业务参数进行封装,设置预设超时时长、身份标识和用户标识,产生业务命令包,并将业务命令包发送到业务命令包发送模块的发包队列中,同时向用户交互模块返回身份标识和用户标识;
3、业务命令包发送模块获取发包队列中业务命令包,并发送到服务器,同时开始计算响应超时时间,并以键值对的方式存储响应超时时间(身份标识和用户标识为键,响应超时时间为值);
4、业务结果信息接收模块开启线程实时接收服务器返回的业务命令包对应的原始响应包,并解析各个原始响应包,获得身份标识、包分片总数和当前分片号;
5、业务结果信息接收模块判断各个业务命令包对应的完整响应包是否已被分片处理,若未被分片,则直接将业务命令包对应的原始响应包作为完整响应包,以键值对的方式(身份标识和用户标识为键,完整数据包为值)存入数据存储模块,若已被分片,则以键值对(身份标识和用户标识为键,集合为值,集合中存储原始响应包)的方式存储同一身份标识对应的原始响应包;
6、业务结果信息接收模块再判断键值对中存储的同一身份标识对应的原始响应包的总数是否等于该身份标识对应的包分片总数,若等于,将该键值对中存储的所有原始响应包进行排序合并,得到完整响应包,以键值对的方式(身份标识和用户标识为键,完整数据包为值)存入数据存储模块,若不等于,返回上述第4步;
7、用户交互模块接收到业务命令包封装模块返回的身份标识和用户标识之后,根据身份标识和用户标识向数据存储模块获取身份标识和用户标识对应的完整响应包,如果未获取到完整响应包,便根据身份标识和用户标识向业务命令包发送模块获取响应超时时间,并判断响应超时时间是否大于预设超时时长,若大于,则数据处理系统进行异常处理,若小于,用户交互模块再次根据身份标识和用户标识向数据存储模块获取身份标识和用户标识对应的完整响应包,直到响应超时时间大于预设超时时长。在此期间,如果获取到完整响应包,则根据进行相关数据处理,完成业务。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
基于相同的技术构思,请参考图5,图5示出了本发明实施例的一种数据处理装置50,应用于数据处理系统,所述数据处理系统与服务器通信连接,所述装置包括:
第一接收模块51,用于接收用户输入的至少一个业务参数;
第一确定模块52,用于根据至少一个所述业务参数,确定各个所述业务参数对应的业务命令包,一个所述业务命令包携带唯一的身份标识;
发送模块53,用于将各个所述业务命令包发送给所述服务器;
第二接收模块54,用于接收所述服务器返回的与各个所述业务命令包分别对应的原始响应包,相互对应的所述原始响应包与所述业务命令包携带相同的身份标识;
第二确定模块55,用于根据各个所述原始响应包携带的身份标识、包分片总数和当前分片号,确定各个业务命令包分别对应的完整响应包。
可选地,所述业务参数包括业务标识和业务数据,所述第一确定模块,包括:
第一生成子模块,用于对各个所述业务标识赋值,生成各个所述业务标识对应的身份标识,每个身份标识具有唯一性;
第二生成子模块,用于根据所述身份标识和预设封装规则,对各个所述业务数据进行封装,生成各个所述业务参数对应的业务命令包。
可选地,所述装置还包括:
第一判断模块,用于根据各个所述原始响应包携带的包分片总数,判断各个所述业务命令包对应的完整响应包是否已被分片处理;
所述第二确定模块,包括:
第一获得子模块,用于在所述业务命令包对应的完整响应包已被分片处理的情况下,以所述业务命令包对应的原始响应包作为所述业务命令包对应的完整响应包;
第二获得子模块,用于在所述业务命令包对应的据包未被分片处理的情况下,根据同一身份标识对应的所有原始响应包,按照各个原始响应包的当前分片号,对所述各个原始响应包进行排序合并,获得所述业务命令包对应的完整响应包。
可选地,所述装置还包括:
创建模块,用于在所述业务命令包对应的完整响应包已被分片处理的情况下,建立所述业务命令包的身份标识与响应包存储队列的关联关系;
存储模块,用于将所述身份标识对应的所有原始响应包存入所述响应包存储队列;
第二判断模块,用于判断所述响应包存储队列中的原始响应包数量是否等于包分片总数;
第三确定模块,用于在所述响应包存储队列中的原始响应包数量等于所述包分片总数的情况下,以所述响应包存储队列中的原始响应包作为同一身份标识对应的所有原始响应包。
可选地,所述装置还包括:
第三判断模块,用于根据所述业务命令包的身份标识,判断是否能够在本地获取到所述业务命令包对应的完整响应包;
获取模块,用于在未获取到所述完整响应包的情况下,获取所述业务命令包对应的响应超时时间;
第四判断模块,用于判断所述响应超时时间是否大于预设超时时长;
返回模块,用于在所述响应超时时间小于所述预设超时时长的情况下,返回步骤:根据所述业务命令包的身份标识,判断是否能够在本地获取到所述业务命令包对应的完整响应包,直到所述响应超时时间大于所述预设超时时长,或者直到根据所述业务命令包的身份标识,在本地获取到所述业务命令包对应的完整响应包。。
本发明实施例还提供了一种数据处理装置,包括:
一个或多个处理器;和
其上存储有指令的一个或多个计算机可读,当由所述一个或多个处理器执行时,使得所述装置执行如本发明实施例任一所述的数据处理方法。
本发明实施例还提供了一种计算机可读存储介质,其存储的计算机程序使得处理器执行如本发明实施例所述的数据处理方法。
对于数据处理装置实施例而言,由于其与数据处理方法实施例基本相似,所以描述的比较简单,相关之处参见数据处理方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种数据处理方法、一种数据处理装置及一种计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。