一种数据处理方法、服务器、客户端和系统的制作方法

文档序号:9455700阅读:228来源:国知局
一种数据处理方法、服务器、客户端和系统的制作方法
【技术领域】
[0001]本发明涉及计算机领域,尤其涉及一种数据处理方法、服务器、客户端和系统。
【背景技术】
[0002]私人服务器(简称私服,Private Server)即非官方架设的服务器(官服),业务(如游戏)运营者或开发者所架设的服务器。在游戏服务器私服的概念盛行的情况下,针对私服单机来说,存在单点的问题。若果服务器宕机或者网络异常,会导致整个区域的用户玩家不能继续玩游戏。
[0003]针对私服存在的问题,需要构建高可用的游戏服务架构来解决,如图1示出的现有技术中高可用架构的示意图,现有技术中的高可用架构只是对状态数据进行主备同步,并通过zookeeper进行进程监控,在主机出现异常的情况下直接通知备机提供服务,然而游戏状态数据同步这个环节可能会出现异常情况,比如跨机房容灾同步数据的链路出现时延较长或者断路的情况下,游戏状态数据可能并没有完全同步到备份的机器,从而导致状态不一致的情况,影响了用户玩家的体验。
[0004]另外,现有技术中主服务器对每个业务请求处理完毕后,均在Redis标识该业务请求done (处理完),备服务器遍历最近I分钟的业务请求,若该业务请求没有标识done,则重处理该业务请求。主备服务器均接收业务请求,备服务器在主服务器挂机才提供服务处理,迟延为30ms+,主备服务器跨机房接收到的业务请求可能不完全一致,也存在丢包、乱序等问题,因此现有技术尽管是通过服务器侧进行多重备份数据来恢复业务状态数据,也只能理想状态下在服务器侧保证了数据的一致性;而用户侧因为网络问题或者其他性能问题,会遇到获取到的数据并非最新版本,或者已经获取到最新版本而数据备份却没有更新到的情况。这种影响最终还是会影响到用户的最终体验。

【发明内容】

[0005]本发明实施例所要解决的技术问题在于,提供一种数据处理方法、服务器、客户端和数据处理系统,解决了现有技术中当跨机房容灾同步数据的链路出现时延较长或者断路,使得主服务器切换到备服务器时数据不完全一致而引起业务切换处理不流畅的技术问题,通过从客户端出发来保证数据的一致性。
[0006]为了解决上述技术问题,本发明实施例第一方面公开了一种服务器,包括:
[0007]处理时间记录模块,用于在处理完毕客户端发送的业务请求后,记录业务处理完毕的时间信息;
[0008]返回包生成模块,用于在处理完毕客户端发送的业务请求后,生成包含业务关键状态信息以及所述业务处理完毕的时间信息的返回包;
[0009]记录时间同步模块,用于将记录的所述业务处理完毕的时间信息同步到第二服务器;其中所述第二服务器为所述第一服务器的备用服务器,当所述第一服务器发生业务切换时,将所述业务切换至所述第二服务器;
[0010]业务请求返回模块,用于将所述返回包发送给所述客户端,以使所述客户端保存所述业务关键状态信息以及所述业务处理完毕的时间信息。
[0011]结合第一方面,在第一种可能的实现方式中,所述业务关键状态信息以及所述业务处理完毕的时间信息设置在所述返回包的公共头信息中。
[0012]本发明实施例第二方面公开了一种服务器,所述服务器为第二服务器,包括:
[0013]时间接收保存模块,用于接收并保存第一服务器发送的业务处理完毕的时间信息;
[0014]业务接收模块,用于当所述第一服务器发生业务切换时,接收客户端发送的业务请求;
[0015]时间信息发送模块,用于当所述第一服务器发生业务切换时,将所述时间接收保存模块中保存的最新的业务处理完毕的时间信息发送给客户端;
[0016]业务更新模块,用于当接收到所述客户端根据所述最新的业务处理完毕的时间信息返回的业务关键状态信息后,根据所述业务关键状态信息更新业务状态,并在更新完毕后,触发处理所述业务接收模块接收到的业务请求。
[0017]结合第二方面,在第一种可能的实现方式中,还包括:
[0018]返回信息接收模块,用于在所述时间信息发送模块发送最新的业务处理完毕的时间信息给所述客户端后,接收所述客户端返回的指示信息;
[0019]业务处理模块,用于当所述指示信息包含所述业务关键状态信息时,在所述业务更新模块更新业务状态后,处理所述业务接收模块接收到的业务请求;或当所述指示信息指示无需更新业务状态时,处理所述业务接收模块接收到的业务请求。
[0020]本发明实施例第三方面公开了一种客户端,包括:
[0021]返回包接收模块,用于接收第一服务器发送的返回包;所述返回包包含业务关键状态信息以及所述业务处理完毕的时间信息;
[0022]信息保存模块,用于保存接收到的所述业务关键状态信息以及所述业务处理完毕的时间信息;
[0023]时间信息接收模块,用于接收第二服务器发送的业务处理完毕的时间信息;
[0024]时间比对模块,用于比对所述信息保存模块中保存的最新业务处理完毕的时间信息与所述时间信息接收模块接收的业务处理完毕的时间信息;
[0025]业务信息返回模块,用于当所述信息保存模块中保存的最新业务处理完毕的时间晚于从所述时间信息接收模块接收的业务处理完毕的时间时,向所述第二服务器返回所述信息保存模块中保存的业务关键状态信息。
[0026]结合第三方面,在第一种可能的实现方式中,还包括:
[0027]指示信息返回模块,用于当所述信息保存模块中保存的最新业务处理完毕的时间与所述时间信息接收模块接收的业务处理完毕的时间一致时,向所述第二服务器发送指示信息,所述指示信息用于指示无需更新业务状态。
[0028]结合第三方面,或者第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述业务关键状态信息以及所述业务处理完毕的时间信息设置在所述返回包的公共头信息中;
[0029]所述业务信息返回模块具体用于当所述信息保存模块中保存的最新业务处理完毕的时间晚于从所述时间信息接收模块接收的业务处理完毕的时间时,向所述第二服务器返回所述公共头信息。
[0030]本发明实施例第四方面公开了一种数据处理系统,包括第一服务器、第二服务器和客户端,其中
[0031]所述第一服务器在处理完毕所述客户端发送的业务请求后,记录业务处理完毕的时间信息,并生成包含业务关键状态信息以及所述业务处理完毕的时间信息的返回包;将记录的所述业务处理完毕的时间信息同步到所述第二服务器;将所述返回包发送给所述客户端,以使所述客户端保存所述业务关键状态信息以及所述业务处理完毕的时间信息;
[0032]所述第二服务器接收并保存所述第一服务器发送的业务处理完毕的时间信息;当所述第一服务器发生业务切换时,接收所述客户端发送的业务请求,将保存的最新的业务处理完毕的时间信息发送给所述客户端;
[0033]所述客户端接收所述第二服务器发送的业务处理完毕的时间信息后,比对本端保存的最新业务处理完毕的时间信息与所述第二服务器发送的业务处理完毕的时间信息;并当本端保存的最新业务处理完毕的时间晚于从所述第二服务器发送的业务处理完毕的时间时,向所述第二服务器返回保存的业务关键状态信息;
[0034]所述第二服务器接收到所述客户端返回的业务关键状态信息后,根据所述业务关键状态信息更新业务状态,并在更新完毕后,触发处理接收到的所述业务请求。
[0035]本发明实施例第五方面公开了一种数据处理方法,包括:
[0036]在处理完毕客户端发送的业务请求后,记录业务处理完毕的时间信息,并生成包含业务关键状态信息以及所述业务处理完毕的时间信息的返回包;
[0037]将记录的所述业务处理完毕的时间信息同步到第二服务器;其中所述第二服务器为所述第一服务器的备用服务器,当所述第一服务器发生业务切换时,将所述业务切换至所述第二服务器;
[0038]将所述返回包发送给所述客户端,以使所述客户端保存所述业务关键状态信息以及所述业务处理完毕的时间信息。
[0039]结合第五方面,在第一种可能的实现方式中,所述业务关键状态信息以及所述业务处理完毕的时间信息设置在所述返回包的公共头信息中。
[0040]本发明实施例第六方面公开了一种数据处理方法,包括:
[0041]接收并保存第一服务器发送的业务处理完毕的时间信息;
[0042]当所述第一服务器发生业务切换时,接收客户端发送的业务请求,将保存的最新的业务处理完毕的时间信息发送给客户端;
[0043]当接收到所述客户端根据所述最新的业务处理完毕的时间信息返回的业务关键状态信息后,根据所述业务关键状态信息更新业务状态,并在更新完毕后,触发处理接收到的业务请求。
[0044]结合第六方面,在第一种可能的实现方
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1