数据存储方法、客户端、服务端、可读介质及存储控制器技术领域
本发明涉及通信技术领域,特别涉及一种数据存储方法、客户端、服务端、可读介
质及存储控制器。
背景技术
C/S(Client/Server,客户机/服务器)架构或者是B/S(Browser/Server,浏览器/
服务器)架构是企业中经常采用的架构模式。用户可通过客户机或者是浏览器将数据保存
至服务器上。但是由于服务器功能复杂,而且又长时间暴露在网络中,因此很可能会发生故
障崩溃。那么一旦服务器发生故障崩溃,将会导致未保存的数据无法进行保存的问题。因
此,在服务器恢复正常后,为避免数据丢失,还需对这部分未保存的数据再次进行保存。
目前,服务器恢复正常后,在对未保存的数据再次进行保存时,需要用户在客户机
或者是浏览器上重新输入这部分未保存数据,然后提交到恢复正常的服务器上进行保存。
然而,一台服务器往往对应多个客户机或者是浏览器,那么在服务器恢复正常后,
就需要用户在对应的每一个客户机或者是浏览器上均重新输入相应的未保存数据。整个过
程耗时较长。而且,如果重新输入的未保存数据的数据量较大,则需要更长的时间。因此,数
据存储的效率较低。
发明内容
本发明实施例提供了一种数据存储方法、客户端、服务端、可读介质及存储控制
器,能够有效提高数据存储的效率。
第一方面,本发明实施例提供了一种数据存储方法,应用于客户端,
向服务端发送会话请求,并接收所述服务端根据所述会话请求确定并发送的会话
ID;
获取会话数据,并存储;
还包括:
向所述服务端发送携带所述会话ID的数据提交请求,以使所述服务端根据所述数
据提交请求中携带的所述会话ID确定是否返回故障恢复状态码;
当接收到所述服务端返回的所述故障恢复状态码时,将存储的所述会话数据以及
所述会话ID发送给所述服务端,以使所述服务端根据所述会话ID存储所述会话数据。
优选地,
进一步包括:
当未接收到所述服务端返回的所述故障恢复状态码时,从所述会话数据中确定出
未成功发送至所述服务端的待发送数据;
将确定的所述待发送数据发送给所述服务端,以使所述服务端接收并存储所述待
发送数据。
第二方面,本发明实施例提供了一种客户端,包括:第一发送单元、第一接收单元、
获取单元、存储单元、第二发送单元及第一处理单元,其中,
所述第一发送单元,用于向服务端发送会话请求;
所述第一接收单元,用于接收所述服务端根据所述第一发送单元确定并发送的所
述会话请求发送的会话ID;
所述获取单元,用于获取会话数据;
所述存储单元,用于存储所述获取单元获取的所述会话数据;
所述第二发送单元,用于向所述服务端发送携带所述会话ID的数据提交请求,以
使所述服务端根据所述数据提交请求中携带的所述会话ID确定是否返回故障恢复状态码;
所述第一处理单元,用于接收到所述服务端返回的所述故障恢复状态码时,将存
储的所述会话数据以及所述会话ID发送给所述服务端,以使所述服务端根据所述会话ID存
储所述会话数据。
优选地,
进一步包括:第二处理单元;
所述第二处理单元,用于当未接收到所述服务端返回的所述故障恢复状态码时,
从所述会话数据中确定出未成功发送至所述服务端的待发送数据;将确定的所述待发送数
据发送给所述服务端,以使所述服务端接收并存储所述待发送数据。
第三方面,本发明实施例提供了一种数据存储方法,应用于服务端,
接收客户端发送的会话请求,并根据所述会话请求确定会话ID,向所述客户端发
送所述会话ID;
还包括:
接收所述客户端发送的携带所述会话ID的数据提交请求;
根据所述数据提交请求中携带的所述会话ID确定是否向所述客户端返回故障恢
复状态码;
当向所述客户端返回所述故障恢复状态码时,接收所述客户端发送的存储的会话
数据以及所述会话ID;
根据所述会话ID存储所述会话数据。
优选地,
进一步包括:
当未向所述客户端返回所述故障恢复状态码时,接收并存储所述客户端发送的所
述会话数据中未成功发送的待发送数据。
第四方面,本发明实施例提供了一种服务端,包括:第一接收单元、发送单元、第二
接收单元、确定单元、第三接收单元及存储单元,其中,
所述第一接收单元,用于接收客户端发送的会话请求;
所述发送单元,用于根据所述第一接收单元接收到的所述会话请求确定会话ID,
向所述客户端发送所述会话ID;
所述第二接收单元,用于接收所述客户端发送的携带所述会话ID的数据提交请
求;
所述确定单元,用于根据所述第二接收单元接收到的所述数据提交请求中携带的
所述会话ID确定是否向所述客户端返回故障恢复状态码;
所述第三接收单元,用于当所述确定单元确定出向所述客户端返回故障恢复状态
码时,接收所述客户端发送的存储的会话数据以及所述会话ID;
所述存储单元,用于根据所述第三接收单元接收到的所述会话ID存储所述所述第
三接收单元接收到的所述会话数据。
优选地,
进一步包括:处理单元;
所述处理单元,用于当所述确定单元确定出未向所述客户端返回所述故障恢复状
态码时,接收并存储所述客户端发送的所述会话数据中未成功发送的待发送数据。
第五方面,本发明实施例提供了一种可读介质,包括执行指令,当存储控制器的处
理器执行所述执行指令时,所述存储控制器执行上述任一所述的方法。
第六方面,本发明实施例提供了一种存储控制器,包括:处理器、存储器和总线;
所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当
所述存储控制器运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述存储
控制器执行上述任一所述的方法。
本发明实施例提供了数据存储方法、客户端、服务端、可读介质及存储控制器,客
户端通过向服务端发送会话请求,以建立与服务端的会话连接,接收服务端根据该会话请
求发送的会话ID,客户端获取待保存的会话数据,并存储该待保存的会话数据,之后向服务
端发送携带该会话ID的数据提交请求,以使服务端根据数据提交请求中携带的会话ID确定
是否返回故障恢复状态码,进而使客户端知晓服务端是否发生故障崩溃且恢复,那么当客
户端接收到该故障恢复状态码时,就可以自动将已经存储的待保存的会话数据以及会话ID
发送给服务端,而无需再由用户重新输入这些会话数据,因此,提高了数据存储的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现
有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明
的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据
这些附图获得其他的附图。
图1是本发明一个实施例提供的应用于客户端的数据存储方法的流程图;
图2是本发明一个实施例提供的应用于服务端的数据存储方法的流程图;
图3是本发明一个实施例提供的一种数据存储方法的流程图;
图4是本发明一个实施例提供的一种客户端的结构示意图;
图5是本发明另一个实施例提供的一种客户端的结构示意图;
图6是本发明一个实施例提供的一种服务端的结构示意图;
图7是本发明另一个实施例提供的一种服务端的结构示意图;
图8是本发明一个实施例提供的一种数据存储系统的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例
中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是
本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员
在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种数据存储方法,应用于客户端,该方法可以
包括以下步骤:
步骤101:向服务端发送会话请求,并接收所述服务端根据所述会话请求确定并发
送的会话ID。
步骤102:获取会话数据,并存储。
步骤103:向所述服务端发送携带所述会话ID的数据提交请求,以使所述服务端根
据所述数据提交请求中携带的所述会话ID确定是否返回故障恢复状态码。
步骤104:当接收到所述服务端返回的所述故障恢复状态码时,将存储的所述会话
数据以及所述会话ID发送给所述服务端,以使所述服务端根据所述会话ID存储所述会话数
据。
在图1所示的实施例中,客户端通过向服务端发送会话请求,以建立与服务端的会
话连接,接收服务端根据该会话请求发送的会话ID,客户端获取待保存的会话数据,并存储
该待保存的会话数据,之后向服务端发送携带该会话ID的数据提交请求,以使服务端根据
数据提交请求中携带的会话ID确定是否返回故障恢复状态码,进而使客户端知晓服务端是
否发生故障崩溃且恢复,那么当客户端接收到该故障恢复状态码时,就可以自动将已经存
储的待保存的会话数据以及会话ID发送给服务端,而无需再由用户重新输入这些会话数
据,因此,提高了数据存储的效率。
在本发明一个实施例中,为了避免重复发送数据,进一步包括:当未接收到所述服
务端返回的所述故障恢复状态码时,从所述会话数据中确定出未成功发送至所述服务端的
待发送数据;将确定的所述待发送数据发送给所述服务端,以使所述服务端接收并存储所
述待发送数据。
其中,客户端存储的会话数据中包含两种形式的数据,第一种是成功发送至服务
端暂存的数据,第二种是未成功发送至服务端的待发送数据。在本发明实施例中,服务端并
未发生故障崩溃时,为防止用户在客户端点击保存时一次提交的数据量过大而造成拥堵,
客户端可在获取会话数据的同时,按照一定的数据量大小等其它规则,分批次的将获取到
的数据发送至服务端的内存上暂存。那么如果服务端没有发生故障崩溃,也即客户端没有
接收到故障恢复状态码,也即客户端之前发送至服务端的会话数据中的第一种数据并没有
丢失,因此,客户端只需再将会话数据中的第二种数据发送至服务器上即可。
举例来说,用户需要通过客户端将10个身份证号码保存至服务端,且客户端是按
照每5个身份证号码为一组的规则进行发送,假设客户端第一次将用户输入的前5个身份证
号码发送给了服务端的内存,且服务端并没有发生故障崩溃,那么接下来,客户端只需将后
5个发送给服务端的内存,而前5个无需再发。但是如果第一次发送成功之后,服务端发生了
故障崩溃,那么服务端内存上之前暂存的前5个身份证号码也会随之丢失,而后5个还并未
发出,因此,在服务端恢复正常工作后,客户端需将前5个和后5个身份证号码均发送至服务
端上(该过程是数据恢复的过程,客户端可将10个身份证号码一并发送给服务端,或者是根
据用户需求分批发送)。
如图2所示,本发明实施例提供了一种数据存储方法,应用于服务端,该方法可以
包括如下步骤:
步骤201:接收客户端发送的会话请求,并根据所述会话请求确定会话ID,向所述
客户端发送所述会话ID。
步骤202:接收所述客户端发送的携带所述会话ID的数据提交请求。
步骤203:根据所述数据提交请求中携带的所述会话ID确定是否向所述客户端返
回故障恢复状态码。
步骤204:当向所述客户端返回所述故障恢复状态码时,接收所述客户端发送的存
储的会话数据以及所述会话ID。
步骤205:根据所述会话ID存储所述会话数据。
在图2所示的实施例中,服务端在接收到客户端发送的会话请求后,会为客户端发
送一个会话ID,之后当接收到客户端发送的数据提交请求后,则会根据该请求中携带的会
话ID确定其是否发生了故障崩溃且又恢复,如果是,则通过发送故障恢复状态码告知客户
端,那么之后在接收到客户端发送的存储的待保存的会话数据以及会话ID后,就可根据该
会话ID,再次初始化相应的会话上下文,进而对会话数据进行存储。
在本发明一个实施例中,进一步包括:当未向所述客户端返回所述故障恢复状态
码时,接收并存储所述客户端发送的所述会话数据中未成功发送的待发送数据。
下面将以存储报销单为例,详细说明本发明实施例提供的数据存储方法,如图3所
示,该方法可以包括以下步骤:
步骤301:客户端向服务端发送会话请求。
在本发明实施例中,客户端可同时指代客户机和浏览器。
步骤302:服务端接收客户端发送的会话请求,并根据会话请求确定会话ID,向客
户端发送会话ID。
在本发明实施例中,当该客户端登录并首次请求服务端时,服务端会为该客户端
初始化一个功能级的会话上下文(实现数据存储的必要条件),其中,该功能级的上下文具
有一个在整个服务端范围内的唯一会话ID。
步骤303:客户端接收服务端发送的会话ID。
步骤304:客户端获取报销单数据,并存储。
其中,报销单数据是会话数据中的一种。
例如,报销单的录入界面中共包括报销人、报销金额、报销类型及报销时间四个字
段。那么在用户输入相应数据的同时,客户端则会将这些数据保存至本地的存储区域中,而
且,在录入过程中,客户端可每两个字段发送至服务端。假设用户第一次输入了报销人“张
某某”,第二次输入了报销金额“3000元”,那么在输入了3000元之后,客户端可将这两个字
段发送至服务端暂存。
值得说明的是,针对客户端在本地存储的报销单数据,为不占用内存,可在报销单
存储至服务端数据库或者是硬盘后进行自动删除。
步骤305:客户端向服务端发送携带会话ID的数据提交请求。
步骤306:服务端接收客户端发送的携带会话ID的数据提交请求,并根据会话ID确
定是否向客户端返回故障恢复状态码N,如果是,执行步骤307,否则,执行步骤309。
在本发明实施例中,服务端可根据会话ID判断该请求对应的的功能级的会话上下
文是否已初始化,如果已初始化,则表明服务端并未发生故障崩溃,否则,则表明服务端发
生过故障崩溃但恢复。
例如,客户端成功将报销单数据中的报销人“张某某”及报销金额“3000元”发送给
了服务端,但随后服务端发生了故障崩溃,而输入的报销类型“办公用品”及报销时间
“2017/2/6/星期五”还未成功发送至服务端,此时,暂存在服务端的报销人“张某某”及报销
金额“3000元”也因为服务端的故障崩溃而丢失。
步骤307:客户端接收服务端发送的故障恢复状态码N,并将存储的报销单数据以
及会话ID发送给服务端。
根据上述步骤306,客户端在接收到N,知晓服务端发生故障崩溃后,需将在服务端
丢失的但在本地存储的报销人“张某某”、报销金额“3000元”,以及存储在本地但还未成功
发送至服务端的“办公用品”、报销时间“2017/2/6/星期五”均发送至服务端。
另外,服务端在发送这些报价单数据以及会话ID的同时,还可发送表征这些未保
存的报价单数据的状态码R。
步骤308:服务端接收客户端发送的报销单数据以及会话ID,根据会话ID存储报销
单数据,并结束当前进程。
在本发明实施例中,服务端根据会话ID重新初始化功能级上下文,将接收到的报
销单数据暂存,并可在用户执行保存后将报价单保存到数据库或者是硬盘上。
步骤309:客户端从报价单数据中确定出未成功发送至服务端的待发送数据,并将
确定的待发送数据发送给服务端。
在本发明实施例中,根据步骤306可知,待发送数据为:报销类型“办公用品”及报
销时间“2017/2/6/星期五”,因此,在当前情况下,客户端只需将这两项数据发送给服务端
即可。
步骤310:服务端接收并存储客户端发送的之前未成功发送的待发送数据。
如图4所示,本发明实施例提供了一种客户端,包括:
第一发送单元401、第一接收单元402、获取单元403、存储单元404、第二发送单元
405及第一处理单元406,其中,
所述第一发送单元401,用于向服务端发送会话请求;
所述第一接收单元402,用于接收所述服务端根据所述第一发送单元401确定并发
送的所述会话请求发送的会话ID;
所述获取单元403,用于获取会话数据;
所述存储单元404,用于存储所述获取单元403获取的所述会话数据;
所述第二发送单元405,用于向所述服务端发送携带所述会话ID的数据提交请求,
以使所述服务端根据所述数据提交请求中携带的所述会话ID确定是否返回故障恢复状态
码;
所述第一处理单元406,用于当接收到所述服务端返回的所述故障恢复状态码时,
将存储的所述会话数据以及所述会话ID发送给所述服务端,以使所述服务端根据所述会话
ID存储所述会话数据。
如图5所示,进一步包括:第二处理单元501;
所述第二处理单元501,用于当未接收到所述服务端返回的所述故障恢复状态码
时,从所述会话数据中确定出未成功发送至所述服务端的待发送数据;将确定的所述待发
送数据发送给所述服务端,以使所述服务端接收并存储所述待发送数据。
如图6所示,本发明实施例提供了一种服务端,包括:
第一接收单元601、发送单元602、第二接收单元603、确定单元604、第三接收单元
605及存储单元606,其中,
所述第一接收单元601,用于接收客户端发送的会话请求;
所述发送单元602,用于根据所述第一接收单元601接收到的所述会话请求确定会
话ID,向所述客户端发送所述会话ID;
所述第二接收单元603,用于接收所述客户端发送的携带所述会话ID的数据提交
请求;
所述确定单元604,用于根据所述第二接收单元603接收到的所述数据提交请求中
携带的所述会话ID确定是否向所述客户端返回故障恢复状态码;
所述第三接收单元605,用于当所述确定单元604确定出向所述客户端返回故障恢
复状态码时,接收所述客户端发送的存储的会话数据以及所述会话ID;
所述存储单元606,用于根据所述第三接收单元605接收到的所述会话ID存储所述
所述第三接收单元605接收到的所述会话数据。
如图7所示,进一步包括:处理单元701;
所述处理单元701,用于当所述确定单元604确定出未向所述客户端返回所述故障
恢复状态码时,接收并存储所述客户端发送的所述会话数据中未成功发送的待发送数据。
本发明实施例提供了一种可读介质,包括执行指令,当存储控制器的处理器执行
所述执行指令时,所述存储控制器上述各个实施例中任一所述的方法。
本发明实施例提供了一种存储控制器,包括:处理器、存储器和总线;
所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当
所述存储控制器运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述存储
控制器执行上述各个实施例中任一所述的方法。
如图8所示,本发明实施例提供了一种数据存储系统,包括:至少一个上述任一所
述的客户端801,以及上述任一所述的服务端802。
综上,本发明各个实施例至少具有如下有益效果:
1、在本发明实施例中,客户端通过向服务端发送会话请求,以建立与服务端的会
话连接,接收服务端根据该会话请求发送的会话ID,客户端获取待保存的会话数据,并存储
该待保存的会话数据,之后向服务端发送携带该会话ID的数据提交请求,以使服务端根据
数据提交请求中携带的会话ID确定是否返回故障恢复状态码,进而使客户端知晓服务端是
否发生故障崩溃且恢复,那么当客户端接收到该故障恢复状态码时,就可以自动将已经存
储的待保存的会话数据以及会话ID发送给服务端,而无需再由用户重新输入这些会话数
据,因此,提高了数据存储的效率。
2、在本发明实施例中,通过避免用户重新输入未保存数据,较好的提升了用户体
验。另外,服务端通过向客户端发送故障恢复状态码,可有效避免客户端不知晓服务端发生
过故障崩溃而造成的用户数据丢失。
3、在本发明实施例中,当客户端未接收到故障恢复状态码时,客户端通过从会话
数据中确定出未成功发送至服务端的待发送数据,并将确定的待发送数据发送给服务端,
可有效避免重复发送数据。
上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施
例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体
或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在
任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非
排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,
而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固
有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排
除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过
程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序
在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光
盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技
术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、
等同替换、改进等,均包含在本发明的保护范围内。