数据处理方法、装置、服务器和存储介质与流程

文档序号:22626714发布日期:2020-10-23 19:35阅读:165来源:国知局
数据处理方法、装置、服务器和存储介质与流程

本申请涉及数据处理技术领域,尤其涉及一种数据处理方法、装置、服务器和存储介质。



背景技术:

在涉及数据量较大且对数据读写性能要求较高的业务场景中,业务服务平台一般会通过进程缓存数据并处理数据读写请求,以实现较为高效的数据读写处理。

目前,业务服务平台通过进程处理数据读写请求的常用方式有两种:一种是单进程方式,另一种是主从进程方式。其中,单进程方式是指通过单个进程同时处理读请求和写请求。单进程方式的好处是无需数据同步,也就不存在数据不一致的情况,但是由于单进程的读写压力大,导致客户端请求延时较长。在主从进程方式中,业务服务平台会运行一个主进程和至少一个从进程。其中,主进程负责处理客户端的写请求,并将数据同步到从进程,在此基础上,从进程负责处理客户端的读请求,从而可以降低主进程的数据读写压力,有利于提高数据读写效率,减少请求处理时延。但是,在主从进程方式中,却可能由于主进程向从进程同步数据不及时,使得主进程和从进程数据不一致,从而从进程反馈给客户端的数据有误或者数据读取异常。可见,如何在减少请求处理时延的同时,能够减少由于数据不一致而导致数据读取错误或异常的情况是本领域技术人员迫切需要解决的技术问题。



技术实现要素:

有鉴于此,本申请提供了一种数据处理方法、装置、服务器和存储介质,以在提高数据请求处理效率,减少数据请求处理时延的同时,能够降低由于主、从进程数据不一致而导致的数据读取错误或异常的情况。

为实现上述目的,本申请提供了如下技术方案:

一方面,本申请提供了一种数据处理方法,应用于业务服务平台,所述业务服务平台运行有主进程和至少一个从进程,所述方法包括:

获得客户端发送的数据处理请求;

在所述数据处理请求包括读请求的情况下,确定所述读请求所请求读取的数据的第一数据标识;

如所述第一数据标识属于缓存的未同步记录中的数据标识,将所述读请求转发给所述主进程处理,所述未同步记录中记录有尚未从所述主进程同步到所述从进程的数据对应的数据标识;

如所述第一数据标识不属于所述未同步记录中的数据标识,将所述读请求转发给所述从进程处理。

在一种可能的实现方式中,该方法还包括:

在所述数据处理请求包括写请求的情况下,确定所述写请求所请求写入的数据的第二数据标识;

将所述写请求转发给所述主进程处理,并将所述第二数据标识添加到所述未同步记录中。

在又一种可能的实现方式中,还包括:

获得所述主进程反馈的同步完成指示,所述同步完成指示携带有第三数据标识,且所述同步完成指示用于表征所述主进程已将所述第三数据标识表示的数据同步到所述从进程;

删除所述未同步记录中的所述第三数据标识。

在又一种可能的实现方式中,所述业务服务平台运行有多个从进程;

所述方法还包括:

在确认所述主进程出现故障的情况下,查询所述多个从进程各自存储的同步序号,其中,所述同步序号表征所述主进程向从进程同步数据的总数量;

基于所述多个从进程各自存储的同步序号,确定从所述主进程获得同步数据的总数量最多的目标从进程;

将所述目标从进程确定为主进程。

又一方面,本申请还提供了一种数据处理装置,应用于业务服务平台,所述业务服务平台运行有主进程和至少一个从进程,所述装置包括:

请求获得单元,用于获得客户端发送的数据处理请求;

第一标识确定单元,用于在所述数据处理请求包括读请求的情况下,确定所述读请求所请求读取的数据的第一数据标识;

第一请求处理单元,用于如所述第一数据标识属于缓存的未同步记录中的数据标识,将所述读请求转发给所述主进程处理,所述未同步记录中记录有尚未从所述主进程同步到所述从进程的数据对应的数据标识;

第二请求处理单元,用于如所述第一数据标识不属于所述未同步记录中的数据标识,将所述读请求转发给所述从进程处理。

又一方面,本申请还提供了一种服务器,包括存储器和处理器;

其中,所述存储器用于存储程序;

所述处理器用于执行所述程序,所述程序被执行时,具体用于实现如权利要求1至6任意一项所述的数据处理方法。

又一方面,本申请还提供了一种存储介质,用于存储程序,所述程序被执行时,用于实现如上任意一项所述的数据处理方法。

由以上内容可知,本申请业务服务平台缓存有未同步记录,该未同步记录中存储有尚未完成从主进程同步到从进程的数据对应的数据标识。基于此,本申请在接收到客户端的读请求之后,只有在该未同步记录不包括该读请求所请求的数据标识,即确认读请求所请求的数据已经由主进程同步到从进程的情况下,才会将该读请求转发给从进程处理;而如果未同步记录中包括该读请求所请求的数据标识,仍会将该读请求转发给主进程处理,从而在最大限度减少的主进程处理的读请求数量的前提下,降低了由于主进程与从进程之间数据不一致而导致的数据读取错误或异常,进而实现了在提高请求处理效率的同时,减少数据读取错误或者异常的情况。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1示出了本申请所适用的一种场景的组成架构示意图;

图2示出了本申请的数据处理方法一个实施例的流程示意图;

图3示出了本申请的数据处理方法的一种实现原理框架示意图;

图4示出了本申请的数据处理方法又一个实施例的流程交互示意图;

图5示出了本申请中路由进程从多个从进程中选取主进程的一种流程示意图;

图6示出了路由进程选取主进程的一个示例示意图;

图7示出了本申请的数据处理装置的一种组成结构示意图;

图8示出了本申请的服务器的一种组成架构示意图。

具体实施方式

本申请的数据处理方法适用于多种业务场景中的业务服务平台。如,在业务场景为游戏业务场景的情况下,该业务服务平台为游戏服务平台,相应的,游戏客户端可以向游戏服务平台请求读取或者写入游戏相关的数据。又如,在业务场景为金融交易业务的情况下,业务服务平台为交易服务平台,在该种场景中,客户端在进行支付或者转账等业务的情况下,都可能会涉及到向业务服务平台请求读取或者写入数据。当然,本申请所适用的业务场景还可以有其他可能,对此不加限制。

在本申请中,该业务服务平台可以是独立的服务器,也可以是由多台服务器构成的云平台、服务器集群或者分布式系统等等。

在本申请实施例中,业务服务平台上运行有用于处理读或写请求的主进程,以及用于辅助该主进程处理读请求的至少一个从进程。

在本申请实施例中,业务服务平台在接收到客户端的数据处理请求之后,可以结合数据处理请求的类型以及主进程与从进程之间数据的同步状况,合理的将数据处理请求分配给主进程或者从进程,以在保证数据处理请求的处理效率的同时,减少数据读取错误或者读取异常。

在一种可能的实现方式中,业务服务平台还运行有路由进程,该路由进程为独立于该主进程和从进程的进程,其负责管理主进程和从进程,并为主进程和从进程分配读请求或者写请求。

其中,在业务服务平台包括多台服务器的情况下,路由进程、主进程和至少一个从进程可以运行于同一台服务器,也可以是运行于不同的服务器。

可选的,为了提高容灾性(如,避免出现单台服务器故障而同时影响到主进程和从进程中的多个进程等),或者为了保证各个进程的运行性能,该路由进程、主进程和各个从进程可以分别运行于不同的服务器上。

为了便于理解,下面以业务服务平台为云平台为例,以本申请的方案所适用的一种场景进行说明,如图1所示。

由图1可以看出,该场景包括:云平台10,云平台可以包括多个云服务器101。

其中,云平台也称为云计算平台,其基于云技术构建出的网络平台。其中,云技术(cloudtechnology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。

云技术(cloudtechnology)是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。技术网络系统的后台服务需要大量的计算、存储资源,如图像存储以及编码等等。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。

其中,云计算(cloudcomputing)是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。

作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为iaas(infrastructureasaservice,基础设施即服务)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。

如图1所示,云平台10上运行有主进程和至少一个从进程。另外,该云平台上还运行有主进程和从进程之外的路由进程。其中,主进程、路由进程和至少一个从进程可以分别运行于云平台的不同云服务器上。

在图1中场景中还包括至少一个客户端20,客户端可以向云平台发送数据处理请求,该数据处理请求可以为写请求或者读请求。

相应的,云平台通过路由进程响应该数据处理请求,并从主进程和从进程中确定处理该数据处理请求的进程。

可以理解的是,图1是以业务服务平台为云平台为例说明,在实际应用中,对于业务服务平台为服务器集群或者其他情况也类似,在此不再赘述。

结合以上内容,下面结合流程图对本申请的图像处理方法进行介绍。

如图2所示,其示出了一种数据处理方法一个实施例的流程示意图,本实施例的方法可以应用于业务服务平台,如,具体可以由业务服务平台的路由进程执行。由前面可知,该业务服务平台运行有主进程和至少一个从进程。

本实施例的方法可以包括:

s201,获得客户端发送的数据处理请求。

其中,该数据处理请求可以包括写请求和读请求中的一种或者两种。其中,写请求用于请求写入数据;读请求用于请求读取数据。可以理解的是,在大部分业务场景中,数据处理请求一般为写请求和读请求中的一种。

s202,在该数据处理请求包括读请求的情况下,确定该读请求所请求读取的数据的第一数据标识。

可以理解的是,读请求和写请求会有不同的标识方式,因此,通过解析该数据处理请求可以分析出该数据处理请求是否包括读请求。

其中,数据的数据标识用于唯一标识该数据。其中,在不同的业务场景中,唯一标识数据的数据标识的具体形式或者组成结构也会有所差别,具体可以根据需要设定。

如,以业务场景为游戏场景为例,可以通过数据的数据种类和编号来唯一标识一个数据。例如,以帮派游戏场景为例,在帮派游戏中多个玩家组成的组织可以称为一个帮派,因此,对于任意一个帮派所产生的游戏数据,均可以通过帮派数据种类和帮派内标识唯一标识。

在本申请实施例中,为了便于区分,将读请求所请求的数据对应的数据标识称为第一数据标识。

可以理解的是,为了使得业务服务平台可以确认读请求所请求读取的数据,读请求中会包含或者携带用于表征该数据的数据标识的相关信息,因此,通过解析读请求,可以解析出用于表征待读取的数据的第一数据标识。

s203,如该第一数据标识属于缓存的未同步记录中的数据标识,将该读请求转发给该主进程处理。

其中,该未同步记录中记录有尚未从主进程同步到从进程的数据对应的数据标识。

其中,未同步记录以及未同步记录中记录数据标识的具体形式可以不加限制。如,未同步记录中可以直接存储数据标识;又如,未同步记录可以包括不同数据标识对应的记录,每条数据标识对应的记录中不仅包括该数据标识,还可以包括客户端请求写入该数据标识对应的数据的时刻,还可以根据需要记录与该数据标识相关的其他数据。

其中,业务服务平台可以在固定的缓存空间缓存该未同步进程,如,在业务服务平台通过路由进程来管理主进程和从进程的情况下,可以在路由进程对应的内存空间缓存该未同步记录。

其中,业务服务平台确定未同步记录的方式可以有多种,为了便于理解,以几种可能的情况进行介绍。

在一种可能的情况中,业务服务平台可以按照轮询周期或者不定时的从主进程查询尚未同步到从进程的数据的数据标识。相应的,业务服务平台可以将尚未从主进程同步到从进程的数据对应的数据标识记录到未同步记录中;或者,基于查询到的数据标识,更新未同步记录。

但是,该种情况中,需要业务服务平台不断查询主进程向从进程同步数据的情况,可能会增大业务服务平台与主进程之间带宽资源的占用,而且还可能会占用主进程的数据处理资源。

为了减少带宽占用并避免占用主进程的数据处理资源,在又一种可能的情况中,业务服务平台在接收到写请求的情况下,可以确定该写请求所请求写入的数据的第二数据标识,并将该第二数据标识添加到未同步记录中。当然,业务服务平台在将第二数据标识添加到未同步记录的同时或者之后,还会将该写请求转发给主进程处理。

可以理解的是,在业务服务平台接收到写请求时,由于该写请求所请求写入的数据尚未被主进程写入,因此,该第二数据标识对应的数据自然尚未从主进程同步到从进程。可见,在业务服务平台接收到写请求后,便可以将写请求所请求写入的数据确定为尚未从主进程同步到从进程的数据,并将该写请求中的第二数据标识存储到未同步记录,从而无需再向主进程查询尚未同步的数据对应的数据标识。

以上是以业务服务平台生成未同步记录的两种方式为例,对于其他可能确定尚未完成同步的数据对应的数据标识的方式也同样适用于本实施例,对此不加限制。

可以理解的是,本申请为了保证主进程尚未向从进程同步的数据与业务服务平台缓存的未同步记录中记录的数据标识所表征的数据一致,业务服务平台还可以不断对未同步记录进行更新,以删除该未同步记录中以完成同步的数据标识。

如,在一种可能的实现方式中,业务服务平台可以周期性的向主进程发送已同步信息请求,该已同步信息请求用于请求主进程反馈当前周期内已完成同步到从进程的数据对应的数据标识。其中,主进程在向从进程成功同步数据之后,会存储已同步的数据对应的数据标识。相应的,在该主进程接收到该已同步信息请求之后,主进程将最近一个周期内已同步的数据对应的数据标识的信息发送给业务服务平台。在此基础上,业务服务平台基于主进程反馈的数据标识的信息,删除未同步记录中相应的数据标识。

该种实现方式实际上是业务服务平台周期性更新未同步记录,因此,可能会存在未同步记录更新不及时的情况,从而导致某个数据已经由主进程同步到从进程,但是业务服务平台的未同步记录中仍表明该数据尚未被同步到从进程,进而仍将对该数据的读请求转发给主进程处理,使得主进程处理的读请求的数量相对较大。

为了能够最大限度的减少主进程所处理的读请求的数量,最大限度的降低主进程的压力,以进一步提高数据处理请求的处理效率,减少客户端数据处理请求的时延,本申请还可以在主进程将数据同步到从进程之后,主动向业务服务平台上报已同步的数据对应的数据标识。

具体的,业务服务平台可以获得主进程反馈的同步完成指示。其中,同步完成指示携带有第三数据标识,且该同步完成指示用于表征主进程已将该第三数据标识表示的数据同步到从进程。

其中,该同步完成指示为主进程确认将第三数据标识的数据已同步到从进程之后生成的。可以理解的是,为了便于区分,将主进程已同步到从进程的数据对应的数据标识称为第三数据标识。相应的,业务服务平台可以基于该同步完成指示,删除未同步记录中的该第三数据标识。

在第二种更新未同步记录的方式中,主进程每次完成向从进程同步数据便会通知业务服务平台,从而基于未同步记录确定出的尚未完成同步的数据与主进程中尚未向从进程同步的数据一致,从而可以有利于将所有已完成同步的数据对应的读请求都转发给从进程处理,最大程度的减少了主进程所需处理的读请求的数量,降低了主进程的数据处理压力。

可以理解的是,如果未同步记录中存在某个数据的数据标识,则说明该数据尚未从主进程同步到从进程,即,该数据仅仅缓存在主进程对应的内存空间中。因此,在读请求中携带的第一数据标识属于未同步记录中的数据标识的情况下,为了避免由于主进程和从进程中第一数据标识表征的数据的不一致,而导致数据读写错误或者异常,则会将该读请求分配给主进程处理。

s204,如该第一数据标识不属于未同步记录中的数据标识,将该读请求转发给该从进程处理。

可以理解的是,如果读请求所请求读取的数据的第一数据标识不属于未同步记录,那么可以确定该数据已经从主进程同步到从进程,因此,为了避免增加主进程的压力,可以将该读请求发送给从进程处理。而且,由于主进程和从进程中该数据已完成同步,不会出现由于主进程和从进程中该数据的不一致而导致数据读取错误或者异常。

可以理解的是,在业务服务平台运行有多个从进程的情况下,业务服务平台可以从多个从进程中选择一个从进程,并将读请求转发给选择出该从进程。其中,业务服务器平台选择用于处理该读请求的从进程的方式有多种,如,可以基于从进程的负载状况选择负载较小的从进程来处理该读请求等,对此不加限制。

可见,由于本申请业务服务平台缓存有未同步记录,该未同步记录中存储有尚未完成从主进程同步到从进程的数据对应的数据标识。基于此,本申请在接收到客户端的读请求之后,只有在该未同步记录不包括该读请求所请求的数据标识,即确认读请求所请求的数据已经由主进程同步到从进程的情况下,才会将该读请求转发给从进程处理;而如果未同步记录中包括该读请求所请求的数据标识,仍会将该读请求转发给主进程处理,从而在最大限度减少的主进程处理的读请求数量的前提下,降低了由于主进程与从进程之间数据不一致而导致的数据读取错误或异常,进而实现了在提高请求处理效率的同时,减少数据读取错误或者异常的情况。

为了便于理解,下面以业务服务平台运行有路由进程,并通过路由进程向主进程和从进程调度数据处理请求为例说明。

如图3所示,其示出了本申请的数据处理方法的一种实现原理示框架意图。

在图3中业务服务平台300运行有路由进程301、主进程302和至少一个从进程303。

如图3所示路由进程中缓存有未同步记录。

其中,客户端310向业务服务平台发送读请求或者写请求后,业务服务平台的路由进程会获得客户端发送的读请求或者写请求。

其中,对于获得的写请求,路由进程301可以直接将写请求发送给主进程。

对于获得的读请求,路由进程会检测是否命中缓存的未同步记录,即读请求携带的数据标识是否属于未同步记录中的数据标识。相应的,路由进程会将未命中未同步记录的读请求发送给从进程;如果读请求命中该未同步记录,则会将该读请求发送给主进程处理。

下面在图3的原理框架图的基础上,结合图4,从路由进程、主进程和从进程之间的交互流程对本申请的数据处理方法进行详细介绍。

如图4所示的数据处理方法可以包括:

s401,客户端向业务服务平台发送的读请求,以使得路由进程获得读请求。

可以理解的是,在本实施例,以客户端向业务服务平台发送数据处理请求可以为读请求或者写请求中的一种。如果客户端向业务服务平台发送的数据处理请求包括读请求和写请求,那么路由进程可以分离出这两种请求,并分别针对读请求和写请求进行相应处理即可。

s402,路由进程获得读请求所携带的第一数据标识。

其中,该第一数据标识用于表征读请求所请求读取的数据。

s403,如路由进程确认该第一数据标识属于缓存的未同步记录中的数据标识,路由进程将该读请求转发给该主进程处理。

可以理解的是,主进程在接收到该读请求之后,可以基于该读请求从缓存的业务数据中查询相应的数据,然后将查询到的数据返回给客户端。对于主进程基于读请求向客户端返回相应数据的具体实现不加限制,在图4中也未示出该部分内容。

s404,如路由进程确认该第一数据标识不属于缓存的未同步记录中的数据标识,路由进程从至少一个从进程中选择用于处理该读请求的从进程,并将该读请求转发给选择出的该从进程。

与主进程处理读请求类似,由于从进程也缓存有主进程同步的各个数据,因此,从进程可以响应该读请求,从缓存的数据中查询出该读请求对应的数据,并将查询到的数据返回给该客户端。

s405,客户端向业务服务平台发送写请求,以使得路由进程获得客户端发送的写请求。

s406,路由进程确认该写请求所请求写入的数据的第二数据标识,并将第二数据标识添加到缓存的未同步记录中。

可以理解的是,在写请求转发到主进程之前,主进程尚未写入该写请求对应的数据,因此,该数据自然不属于已同步到从进程的数据,因此,路由进程可以确定该数据为尚未由主进程同步到从进程的数据,从而在未同步记录中存储该数据的第二数据标识。

作为一种可选方式,将第二数据标识添加到未同步记录中,可以是生成一条第二数据标识对应的记录。如,在第二数据标识对应的记录中存储有该第二数据标识。其中,第二数据标识对应的记录中还可以存储与第二数据标识相关的其他数据。

可以理解的是,在本申请以上任意一个实施例中,考虑到业务服务平台中用于缓存未同步记录的空间较为有限,如,业务服务平台分配给路由进程的内存空间有限,因此,如果业务服务平台处理的数据处理请求的数量较多,则该未同步记录中可能需要存储的数据标识的数量也会相对较多。

在该种情况下,本申请在业务服务平台确认缓存空间不足的情况下,还可以删除未同步记录中长期未使用的数据标识。其中,未同步记录中长期未使用的数据标识是指较为时间未被请求读取的数据的数据标识。

具体的,在路由进程获得针对第二数据标识的读请求(即,请求读取该第二数据标识对应数据的读请求)之后,如该第二数据标识属于该未同步记录,则路由进程还会将获得该读请求的时刻确定为该第二数据标识的访问时刻,并在该第二数据标识对应的记录中存储该访问时刻。

其中,在第二数据标识的记录中存储有访问时刻的情况下,路由进程会利用最近一次确定出的访问时刻对第二数据标识的记录中的访问时刻进行更新,以使得第二数据标识的记录中存储的是该第二数据标识的最近一次的访问时刻。

相应的,如果路由进程在确认缓存空间不足的情况下,可以删除未同步记录中访问时刻距离当前时刻的时长较长的至少一个数据标识的记录。如,删除访问时刻距离当前时刻超过设定时长的各个数据标识的记录,或者是,删除访问时刻距离当前时刻最长的一个或者多个数据标识的记录。

s407,路由进程将该写请求转发给该主进程处理。

需要说明的是,将第二数据标识添加到缓存的未同步记录与将写请求转发给主进程这两个步骤的先后顺序并不限定,如,这两个步骤也可以同时执行。

s408,主进程基于写请求执行数据写操作,缓存写操作结果。

主进程响应于写请求执行写操作,从而实现缓存写操作相应的数据。

s409,主进程向各从进程发送已写入且尚未同步的至少一个数据。

其中,主进程向从进程发送需要同步的数据的具体方式可以不加限制。如,主进程可以在执行完写请求对应的写操作之后,将写入的数据发送给各从进程,以将该数据的同步到从进程。又如,为了避免频繁同步数据而占用过多主进程的处理资源,主进程还可以定期(如按照设定的时间间隔或者周期等)向主进程发送数据同步指示,数据同步指示可以携带该主进程已写入到主进程的缓存空间但未同步给从进程的所有数据。当然,主进程还可以有其他与从进程同步数据的方式,在此不再赘述。

s410,主进程在确认该至少一个数据成功同步到从进程后,确认成功同步的至少一个数据各自的第三数据标识,并向路由进程反馈该至少一个数据对应的同步完成指示。

其中,主进程确认数据是否成功同步的从进程的方式也可以有多种。如,从进程基于主进程发送的数据完成数据同步后,可以向主进程反馈成功指示,成功指示表征从进程完成相应数据的同步。如,成功指示携带同步成功的数据的数据标识。当然,主进程可以主动去从进程查询同步状态,以检测数据同步是否成功。

s411,路由进程基于同步完成指示携带的至少一个第三数据标识,删除未同步记录中该至少一个第三数据标识。

路由进程在获得主进程反馈的同步完成指示后,可以确定同步完成指示携带有第三数据标识所表征的数据已完成数据同步,在此基础上,可以将该第三数据标识从未同步记录删除。相应的,后续接收到携带该第三数据标识的读请求之后,便可以将该读请求转发给从进程处理。

可以理解的是,如果业务服务平台中的主进程出现故障,则可能会影响到业务服务平台对于客户端读写请求的处理,因此,在确定出主进程出现故障之后,还需要有相应的恢复机制。然而,如果直接重启主进程,则复杂度高,耗时较长。为了解决该问题,本申请的业务服务平台在确定出主进程出现故障之后,还会再多个从进程中重新选取一个从进程作为主进程。

如图5所示,其示出了本申请路由进程从多个从进程中选择主进程的一种流程示意图,本实施例可以包括:

s501,在超过设定时长未检测到主进程发送的心跳包的情况下,路由进程查询各从进程中存储的同步序号。

其中,主进程可以按照设定的第一心跳周期向路由进程发送心跳包。相应的,从进程可以按照设定的第二心跳周期向路由进程发送心跳包。其中,第一心跳周期和第二心跳周期可以相同,也可以不同。

如,主进程或者从进程可以按照各自对应的心跳周期,在到达心跳发送时刻时,向业务服务平台发送心跳包。

可以理解的是,由于主进程和从进程都定期向路由进程发送心跳包,因此,路由进程可以基于主进程发送的心跳包的情况,来分析主进程是否存在异常;相应的,路由进程还可以基于从进程发送的心跳包的情况,来分析从进程是否存在异常。

如路由进程超过设定时长未收到主进程的心跳包,则该路由进程确认该主进程出现故障。

可以理解的是,本实施例是以基于主进程向路由进程发送心跳包的情况来分析主进程是否存在故障。但是可以理解的是,在实际应用中,路由进程也可以通过其他方式来发现主进程的故障,如,路由进程可以定期向主进程发送检测包,如果超过设定时长未收到主进程针对该检测包的反馈,或者连续多个检测报告均为收到反馈,则确认主进程存在故障。

其中,该同步序号表征主进程向从进程同步数据的总数量。其中,主进程向从进程同步数据的总数量也可以认为是主进程向多个从进程发起同步数据的总轮数。其中,每轮数据同步对应主进程针对一个待同步的数据向多个从进程发起的一轮数据同步指示。

在一种可能的实现方式中,主进程每次向从进程同步数据之前,都会更新该同步序号,以使得该同步序号所表征的主进程向从进程同步数据的总数量增大。如,同步序号可以为主进程向从进程同步数据的数量值,则每次更新该同步序号就是将该数量值加一。相应的,主进程每次可以将待同步的数据和最新更新的该同步序号一并发送给各从进程,以使得从进程存储该同步序号。

在又一种可能的实现方式中,主进程每次接收到写请求都会更新同步序号,以使得该同步序号所表征的主进程向从进程同步数据的总数量增大。相应的,主进程向从进程同步数据时,可以将待同步的数据与当前确定出的同步序号一并发送给各从进程。

例如,主进程首次接收到写请求后,可以设置同步序号可以为“0001”,那么主进程完成该写请求的写操作之后,主进程可以将写操作对应的数据以及该同步序号“0001”一并发送给各从进程。而第二次接收到写请求之后,则会将同步序号更改为“0002”,这样,在主进程完成该第二次接收到的写请求的写操作之后,在将数据同步给各从进程的同时,也会将同步序号“0002”发送给各进程。

可以理解的是,由于同步序号可以反映出主进程向从进程同步数据的总数量,因此,如果主进程出现故障导致主进程中部分数据只同步给部分从进程,那么根据从进程中存储的同步序号便可以确定哪些从进程中已同步的数据是较为完成的数据。

例如,以上面主进程在第二次向各同步进程发送同步数据的同时,携带了同步序号“0002”,那么如果从进程已经从主进程接收到第二次同步的数据,则从进程中存储的同步序号应该为“0002”。但是,如果从进程存储的同步序号为“0001”,则说明该从进程未完成第二次数据的同步,而获得了主进程第一次同步的数据。

s502,基于该多个从进程各自存储的同步序号,确定从该主进程获得同步数据的总数量最多的目标从进程。

其中,目标从进程是指多个从进程中存储的同步序号表征的该总数量最大的从进程。可以理解的是,在表征的同步数据的总数量最多的从进程有至少两个的情况下,可以随机选择一个从进程为目标从进程;也可以是根据负载情况,从该至少两个从进程中选择一个目标从进程。

如,上面例子中,存储的同步序号为“0002”的从进程比存储的同步序号为“0001”的从进程从主进程获得同步数据的总数量更多。

s503,将该目标从进程确定为主进程。

由上面介绍可知,目标从进程中的数据与主进程中数据的一致性最高,因此,将该目标从进程确定新的主进程有利于减少由于数据不一致而导致的数据读取异常。

其中,将目标从进程确定为主进程所需要执行的操作可以包括:存储该目标从进程为主进程的信息;还可以包括:向该目标从进程以及其他从进程广播该目标从进程作为主进程的信息。

可以理解的是,在目标从进程成为新的主进程之后,该目标从进程可以将自身存储的数据与其他从进程同步,以保证数据一致性。

为了便于理解,以同步序号为主进程向从进程同步的数据的总数量为例说明,如,参见图6,其示出了路由进程从多个从进程中选择主进程的原理示意图。

在图6中主进程宕机时,该主进程中存储的同步序号为112,则表示主进程已经向从进程同步了112个数据(或者发起了112轮数据同步),但是由于在同步第112个数据的过程中,该主进程宕机,使得只有部分从进程完成了该第112个数据的同步。

如图6中,进程1中的同步序号为112,则说明进程1已经获得主进程向该从进程1同步的第112个数据,而进程2和进程3中同步需要仍为111,因此,进程20由于从进程1中存储的同步序号最大,说明从进程1与发生故障的主进程之间的数据一致性最高,因此,可以将该从进程确定为新的主进程。

相应的,该新的主进程可以将自身的数据同步给其他从进程,与保证各个主进程与该新的主进程之间的数据一致性。

对应本申请的一种数据处理方法,本申请还提供了一种数据处理装置。

如图7所示,其示出了本申请一种数据处理装置一个实施例的组成结构示意图,本实施例的装置应用于业务服务平台,该业务服务平台运行有主进程和至少一个从进程,该装置包括:

请求获得单元701,用于获得客户端发送的数据处理请求;

第一标识确定单元702,用于在该数据处理请求包括读请求的情况下,确定该读请求所请求读取的数据的第一数据标识;

第一请求处理单元703,用于如该第一数据标识属于缓存的未同步记录中的数据标识,将该读请求转发给该主进程处理,该未同步记录中记录有尚未从主进程同步到从进程的数据对应的数据标识;

第二请求处理单元704,用于如该第一数据标识不属于该未同步记录中的数据标识,将该读请求转发给该从进程处理。

在一种可能的实现方式中,该装置还可以包括:

第二标识确定单元,用于在该数据处理请求包括写请求的情况下,确定该写请求所请求写入的数据的第二数据标识;

第三请求处理单元,用于将该写请求转发给该主进程处理,并将该第二数据标识添加到该未同步记录中。

可选的,该装置还包括:

指示获得单元,用于获得该主进程反馈的同步完成指示,该同步完成指示携带有第三数据标识,且该同步完成指示用于表征该主进程已将该第三数据标识表示的数据同步到该从进程;

标识删除单元,用于删除该未同步记录中的该第三数据标识。

可选的,第三请求处理单元在该将该第二数据标识添加到该未同步记录中时,具体用于在该未同步记录中添加该第二数据标识的记录;

相应的,该装置还可以包括:

时刻记录单元,用于在获得针对该第二数据标识的读请求之后,将获得该读请求的时刻确定为该第二数据标识的访问时刻,并将该第二数据标识的访问时刻存储到该第二数据标识的记录中;

记录删除单元,用于在缓存空间不足的情况下,基于该未同步记录中各数据标识的添加时刻,删除该未同步记录中该访问时刻距离当前时刻的时长较长的至少一个数据标识的记录。

在一种可能的实现方式中,该业务服务平台运行有多个从进程;

本申请的该装置还可以包括:

序号查询单元,用于在确认该主进程出现故障的情况下,查询该多个从进程各自存储的同步序号,其中,该同步序号表征该主进程向从进程同步数据的总数量;

进程确定单元,用于基于该多个从进程各自存储的同步序号,确定从该主进程获得同步数据的总数量最多的目标从进程;

主进程替换单元,用于将该目标从进程确定为主进程。

可选的,序号查询单元在确认该主进程出现故障时,具体为:在超过设定时长未检测到该主进程发送的心跳包的情况下,确认该主进程出现故障,其中,该主进程按照设定心跳周期,在到达心跳发送时刻时,向业务服务平台发送心跳包。

又一方面,本申请还提供了一种服务器,该服务器可以为独立的服务器、服务器集群中的服务器或者云平台中的节点等等。如图8,其示出了本申请提供的服务器的一种组成架构示意图。在图8中,该服务器800可以包括:处理器801和存储器802。

可选的,该服务器还可以包括:通信接口803、输入单元804和显示器805和通信总线806。

其中,处理器801、存储器802、通信接口803、输入单元804和显示器805均通过通信总线806完成相互间的通信。

在本申请实施例中,该处理器801,可以为中央处理器,特定应用集成电路等。

该处理器可以调用存储器802中存储的程序,具体的,处理器可以执行以上实施例中云服务器侧所执行的操作。

存储器802中用于存放一个或者一个以上程序,程序可以包括程序代码,所述程序代码包括计算机操作指令,在本申请实施例中,该存储器中至少存储有用于实现以上任意一个实施例中的数据处理方法的程序。

在一种可能的实现方式中,该存储器802可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、以上所提到的程序,以及图像播放等功能所需的应用程序等;存储数据区可存储根据服务器的使用过程中所创建的数据。

该通信接口803可以为通信模块的接口。

本申请还可以包括输入单元804,该输入单元可以包括触摸感应单元、键盘等等。

该显示器805包括显示面板,如触摸显示面板等。

当然,图8所示的服务器结构并不构成对本申请实施例中服务器的限定,在实际应用中服务器可以包括比图8所示的更多或更少的部件,或者组合某些部件。

另一方面,本申请还提供了一种存储介质,该存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上任意一个实施例中的数据处理方法。

根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行以上数据处理方法任意一个实施例中提供的方法。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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