数据异步处理方法及装置与流程

文档序号:11250982阅读:722来源:国知局
数据异步处理方法及装置与流程

本发明涉及网络技术领域,特别涉及一种数据异步处理方法及装置。



背景技术:

随着互联网技术的高速发展,服务器处理数据通常采用异步处理的方式,即将数据处理完成后及时返回给请求端并缓存需要持久化的数据至缓存区,然后服务器使用异步线程读取数据队列中的数据并将数据存入数据库中。

但是,异步线程的数据处理方式在同一时间只能对缓存区执行数据存储或者数据读取的操作,若同时对缓存区进行数据存储和数据读取的操作时,会导致缓存区中数据的安全性出现问题,如数据丢失等。为了提高数据的安全性,通常会将缓存区加锁进行保护。即无论是数据接收模块还是数据处理模块,若要操作缓存区中的数据,必须先获取互斥锁来获得操作缓存区的权限,等到数据处理完成时,再将互斥锁释放。如果数据接收模块获得互斥锁,即说明得到向缓存区中缓存数据的权限,此时,数据处理模块因没有获得互斥锁,即说明不能从缓存区中读取数据,反之亦然。

由于这种数据异步处理方式无法同时对缓存区执行数据存储和数据读取的操作,所以数据处理的实时性不高,数据处理的效率较低。



技术实现要素:

为了解决相关技术中存在的无法同时对缓存区执行数据存储和数据读取的操作的技术问题,本发明提供了一种数据异步处理方法及装置。

一种数据异步处理方法,所述方法包括:

根据数据队列的队列状态,在各数据队列中确定数据处理状态的数据队列,所述数据队列的队列状态包括数据处理状态和数据存储状态;

针对所述数据处理状态的数据队列中的数据,按照处理次序依次对所述数据进行处理;

在所述数据处理状态的数据队列中的数据全部处理完毕后,对数据队列进行队列状态切换。

一种数据异步处理装置,所述装置包括:

确定模块,用于根据数据队列的队列状态,在各数据队列中确定数据处理状态的数据队列,所述数据队列的队列状态包括数据处理状态和数据存储状态;

处理模块,用于针对所述数据处理状态的数据队列中的数据,按照处理次序依次对所述数据进行处理;

切换模块,用于在所述数据处理状态的数据队列中的数据全部处理完毕后,对数据队列进行队列状态切换。

本发明的实施例提供的技术方案可以包括以下有益效果:

获取数据队列的队列状态,先在各数据队列中确定数据处理状态的数据队列,其中数据队列的队列状态包括数据处理状态和数据存储状态,在确定队列状态为数据处理状态的数据队列后,针对该数据处理状态的数据队列中的数据,按照处理次序依次对所述数据进行处理,在数据处理状态的数据队列中的数据全部处理完毕后,对数据队列进行队列状态切换,从而使得数据异步处理的数据队列根据自身的队列状态,进行数据的读取和存入操作,在相应的数据处理完毕后对数据队列的队列状态进行自动切换,使得数据队列直接进入下一个操作,从而实现了同时对缓存区执行数据存储和数据读取的操作,提高了数据处理的实时性,有效的提高了数据异步处理的效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并于说明书一起用于解释本发明的原理。

图1是数据异步处理的一个具体应用示意图;

图2是根据一示例性实施例示出的一种数据异步处理方法的流程图;

图3是根据另一示例性实施例示出的一种数据异步处理方法的流程图;

图4是对应图2中实施例的在所述数据处理状态的数据队列中的数据全部处理完毕后,对数据队列进行队列状态切换步骤的流程图;

图5是对应图4中实施例的根据所述处理结果对数据队列进行队列状态切换步骤的流程图;

图6是根据一示例性实施例示出的一种数据异步处理示意图;

图7是根据图6示出的队列状态切换后的数据异步处理示意图;

图8是根据一示例性实施例示出的一种数据异步处理装置的框图;

图9是根据另一示例性实施例示出的一种数据异步处理装置的框图;

图10是图8对应实施例示出的切换模块的细节进行描述的框图;

图11是图10对应实施例示出的切换子模块的细节进行描述的框图。

具体实施方式

这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

图1是数据异步处理的一个具体应用示意图。该具体应用包括:至少一个数据接收模块110、至少两个数据队列130、至少一个数据处理模块150和至少一个数据库170,其中至少包括一个数据处理状态的数据队列130和一个数据存储状态的数据队列130。

数据接收模块110与数据队列130之间的关联方式,包括有线或无线的网络关联方式,以及二者之间往来的数据关联方式,具体的关联方式不受本实施例的限制。

数据队列130与数据处理模块150之间的关联方式,包括有线或无线的网络关联方式,以及二者之间往来的数据关联方式,具体的关联方式不受本实施例的限制。

数据处理模块150与数据库170之间的关联方式,包括有线或无线的网络关联方式,以及二者之间往来的数据关联方式,具体的关联方式不受本实施例的限制。

并且在此具体应用中,根据数据队列130的队列状态,将数据处理状态的数据队列130进行数据的存储操作,将存储状态的数据队列130进行数据的读取操作,最后根据操作的情况将队列状态进行切换,进而实现了数据异步处理的实时性,有效提高了数据异步处理的效率。

图2是根据一示例性实施例示出的一种数据异步处理方法的流程图。如图2所示,该数据异步处理方法可以包括以下步骤。

在步骤s210中,根据数据队列的队列状态,在各数据队列中确定数据处理状态的数据队列,数据队列的队列状态包括数据处理状态和数据存储状态。

其中,数据队列是指存储数据的缓存区,而且该缓存区的数据还可以被读取。队列状态是指用来区分数据队列的标识,该队列状态可以包括数据处理状态和数据存储状态。数据处理状态是指将数据队列中的数据读取出来并写入到数据库中;数据存储状态是指将数据写入到数据队列,例如将接收的数据写入到数据队列。

具体的,可以通过队列状态获取命令来获取数据队列的队列状态,从获取的队列状态中选出数据处理状态的数据队列。由于数据的写入速度通常比数据的读取速度慢,另外数据的写入经常是间断性的,而数据的读取则是可以连续的,因此在数据量一致的情况下,读取缓存区的数据比向缓存区存储数据所花的时间会少一些,这样还能避免出现缓存区中数据过多而导致空间不足的情形。因此本发明方案中,先确定数据处理状态的数据队列,这样数据处理的效果会更好。因此,通过先确定数据处理状态的数据队列,然后即可对该数据队列中的数据进行处理,处理完成之后,再将数据队列的状态进行切换。

例如,现在存在两个数据队列,一个数据队列a和一个数据队列b,由于该方案中,既要有队列状态为数据处理状态的数据队列,又要有队列状态为数据存储状态的数据队列,由于在双数据队列方案中,一个数据队列是数据存储,另一个数据队列是数据读取,因此,在确定数据队列b的队列状态为数据存储状态的时候,数据队列a的队列状态也就能确定是数据处理状态,反之亦然。

在步骤s230中,针对数据处理状态的数据队列中的数据,按照处理次序依次对数据进行处理。

其中,处理次序是指数据的处理依据一定的顺序,可以是根据数据的存储或者写入顺序等,按照一定的处理次序对数据进行处理能有效提高数据的安全性和完整性。经过步骤s210确定数据处理状态的数据队列后,针对该数据队列中的数据,按照处理次序依次对该数据进行处理,即将该数据队列中的数据按照一定的先后顺序进行读取。

例如,数据队列a的队列状态是数据处理状态,里面的数据c、数据d、数据e写入的顺序首先是数据c,然后是数据d,最后是数据e。那么针对该数据队列a中的数据c、数据d、数据e,可以按照写入的先后顺序来进行读取,即首先是数据c,然后是数据d,最后是数据e,也可以采用后写入的数据先读取,即首先是数据e,然后是数据d,最后是数据c,当然还可以采用其它的处理方式来读取,比如说按照数据队列中数据的存储位置等。

在步骤s250中,在数据处理状态的数据队列中的数据全部处理完毕后,对数据队列进行队列状态切换。

其中,数据全部处理完毕是指将数据处理状态的数据队列中的数据全部读取并存入到数据库中。例如将前述例子中的数据c、数据d、数据e全部处理完毕,即将数据c、数据d、数据e全部读取并存入到数据库中。

通过如上所述的方法,根据数据队列的队列状态确定队列状态为数据处理状态的数据队列,然后将该队列中的数据按照次序依次进行处理,在该队列中的数据全部处理完毕后,将数据队列进行状态切换,由此,实现了同时对缓存区执行数据存储和数据读取的操作,提高了数据处理的实时性,有效的提高了数据异步处理的效率。

图3是根据另一示例性实施例示出的一种数据异步处理方法的流程图。在步骤s230之前,还可以包括以下步骤。

在步骤s226中,接收针对数据处理状态的数据队列的数据读取指令。

其中,数据读取指令是指执行数据读取操作的指令,通过执行该指令来获取数据处理状态的数据队列中的数据。

在步骤s228中,根据数据读取指令,获取数据处理状态的数据队列中的数据。

按照处理次序依次对该数据队列中的数据进行处理,即将该数据队列中的数据按照一定的先后顺序进行读取。

例如,当前数据队列a的队列状态是数据处理状态,数据队列a里的数据c、数据d、数据e写入的顺序首先是数据c,然后是数据d,最后是数据e。那么针对该数据队列a中的数据c、数据d、数据e,可以按照写入的先后顺序来进行读取,即首先是数据c,然后是数据d,最后是数据e,也可以采用后写入的数据先读取,即首先是数据e,然后是数据d,最后是数据c,当然还可以采用其它的处理方式来读取,比如说按照数据队列中数据的存储位置等。

通过如上所述的方法,通过执行数据读取操作的指令来获取数据处理状态的数据队列中的数据,按照处理次序依次对该数据队列中的数据进行处理,为实现数据处理的实时性和提高数据处理的效率提供了方便。

图4是对应图2中实施例示出的对步骤s250的细节的描述。该s250步骤可以包括以下步骤。

在步骤s251中,按照预置的时间间隔监听数据处理状态的数据队列的处理结果。

其中,预置的时间间隔是指时间间隔是预先设定的。由于数据队列中的数据处理的情况瞬间变化,所以预先设置的时间间隔不能过大,否则就可能失去了监听的效果。例如预先设置时间间隔为5秒,即说每隔5秒钟就对数据处理状态的数据队列的处理结果监听一次。处理结果是指数据处理状态的数据队列中的数据是否已经处理完成,如果该数据全部被读取并存入数据库中,则说明数据已经处理完成,否则,说明数据还未处理完成。

在步骤s253中,根据处理结果对数据队列进行队列状态切换。

其中,状态切换是指,将原本为数据处理状态的数据队列切换为数据存储状态,将原本为数据存储状态的数据队列切换为数据处理状态。即根据步骤s251中监听到的对数据处理状态的数据队列的处理结果,对数据队列进行队列状态切换。

通过如上所述的方法,根据预先设定的时间间隔,对数据处理状态的数据队列的处理结果进行监听,进而根据监听到处理结果对数据队列进行队列状态切换,可以预设较小的时间间隔进行监听,由此,提高了数据处理的实时性,有效提高了数据处理的效率。

在另一个示例性实施例示出的数据异步处理方法中,与前述实施例示出的另一种对步骤s250的细节的描述,该s250步骤可以包括以下步骤。

接收数据处理状态的数据队列的处理结果并根据处理结果对数据队列进行队列状态切换。

其中,数据处理状态的数据队列中的数据处理完成后,会将处理结果发送给数据处理模块,数据处理模块接收到该处理结果,对该数据队列进行队列状态切换。

例如,图6中的数据队列b中的数据处理完成后,将处理结果发送给数据处理模块,然后根据该处理结果将该数据队列b的队列状态切换为数据存储状态。

通过如上所述的方法,当数据处理状态的数据队列中的数据处理完成时,会发送相应的处理结果,数据处理模块根据接收的处理结果直接对该数据队列进行状态切换,由此,进一步提高了数据处理的实时性,有效提高了数据处理的效率。

图5是对应图4中实施例的对步骤s253的一种具体实现流程图。该步骤s253可以包括以下步骤。

在步骤s2531中,判断处理结果是否完成,若为是,则向数据存储状态的数据队列发送数据存储停止命令。

其中,数据存储停止命令是指不向数据存储状态的数据队列中存入或写入任何数据的命令。先判断数据处理状态的数据队列的处理结果是否已经处理完成,即数据是否全部读取并存入或写入到数据库中,如果没有完成,则继续读取数据并存入数据库中,如果是已完成,则代表数据处理状态的数据队列中的数据已全部处理完毕,为了减少数据队列在切换状态过程中发送数据错误,此时,向数据存储状态的数据队列发送数据存储停止命令,即暂停数据存储状态的数据队列的数据存入或写入操作。由于对数据队列进行状态切换所需时间非常少,因此该暂停所需的时间是非常短暂的,对数据处理的实时性影响也是很有限的。

在步骤s2533中,接收数据存储状态的数据队列响应数据存储停止命令返回的消息。

其中,消息是指数据存储状态的数据队列响应数据存储停止命令而返回的信息,用于上报当前数据存储状态的数据队列是否在执行存入或写入操作的状态,通过步骤s2531向数据存储状态的数据队列发送数据存储停止命令之后,如果该命令被成功执行,则说明该数据队列暂时进入不可执行数据写入或存入操作的状态。数据存储状态的数据队列在收到数据存储停止命令后,会根据该数据存储停止命令停止执行任何数据的存入或写入操作,并对该数据存储停止命令进行响应,返回确认消息或者停止失败消息,确认消息是指数据的存入或写入操作已经停止,停止失败消息是指依然在执行任何数据的存入或写入操作。

在步骤s2535中,根据消息对数据队列进行队列状态切换。

如果通过步骤s2533中接收到的消息是停止失败的消息,那么继续接收数据存储状态的数据队列响应命令返回的消息,直到成功停止任何数据的存入或写入操作,即直到接收到确认停止的消息。

通过如上所述的方法,根据数据处理状态的数据队列的处理结果,确定数据存储状态的数据队列中的数据存入或写入操作是否应当停止,然后根据数据存入或写入操作返回的是否确认停止的消息,最后根据该消息来确定队列状态是否进行切换。由此,减少了数据发生错误的概率,从而提高了数据处理的效率。

在另一个示例性实施例示出的数据异步处理方法中,步骤s2535,该方法还包括以下步骤。

判断消息是否为确认消息,若为是,则将数据处理状态的数据队列的队列状态切换为数据存储状态,将数据存储状态的数据队列的队列状态切换为数据处理状态。

其中,确认消息是指根据数据存入或写入操作已经停止所返回的消息,即说明已经成功停止任何数据的存入或写入操作。因此,可以将数据处理状态的数据队列的队列状态切换为数据存储状态,将数据存储状态的数据队列的队列状态切换为数据处理状态。进一步的,可以在数据处理状态的数据队列的处理结果未已完成的时候将该队列进行清空,也可以在数据处理的过程中将该队列进行清空,还可以在进行状态切换前或者切换后将该队列进行清空,以及其他可以实现该队列进行清空的方式。

数据队列的队列状态切换后,原来供读取数据的数据队列变成了存储数据的数据队列,原来供存储数据的数据队列变成了读取数据的数据队列。

例如,数据队列b的队列状态为数据存储状态,那么数据队列a的队列状态就是数据处理状态,那么在状态切换后的情况为,数据队列a的队列状态为数据存储状态,数据队列b的队列状态是数据处理状态。

图6是根据一示例性实施例示出的一种数据异步处理示意图。下面对数据异步处理进行一个示例性描述。

具体的,如图6所示,例如,此时数据队列a和数据队列b中均无任何数据,数据队列a的队列状态为数据存储状态,数据队列b的队列状态是数据处理状态,数据接收模块331接收到数据后,调用队列获取模块332,确认可以向数据队列a中放入数据后,数据接收模块331将数据h1,h2存入数据队列a中,如果数据队列b收到队列切换模块333的状态切换命令,则先停止数据队列a的数据存入操作,然后将数据队列b的队列状态切换为数据存储状态,数据队列a的队列状态切换为数据处理状态。

图7是根据一示例性实施例示出的增加一个服务提供方的数据异步处理示意图。

具体的,如图7所示,继续图6中的例子,此时数据队列a中有数据h1,h2,数据队列b中无任何数据,数据队列b的队列状态为数据存储状态,数据队列a的队列状态是数据处理状态,此时,数据处理模块334能将数据队列a中的数据h1,h2读取并存入到数据库335中直到该数据h1,h2都被处理完毕,数据接收模块331可以将其它的数据,如数据h3,h4,h5存入到数据队列b中,当数据队列a中的数据h1,h2都被处理完毕时,队列切换模块333会再次将数据队列a和数据队列b的队列状态进行切换。即将数据队列a的队列状态切换为数据存储状态,数据队列b的队列状态切换为数据处理状态。

通过根据图6和图7的描述的方法,该方案实现了数据队列同时执行数据存储和数据读取操作,提高了数据处理的实时性,有效提高了数据处理的效率。

下述为本发明装置实施例,可以用于执行本发明上述数据异步处理方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明数据异步处理方法实施例。

图8是根据一示例性实施例示出的一种数据异步处理装置的框图。该数据异步处理装置400,如图8所示,可以包括但不限于:确定模块410,处理模块430和切换模块450。

确定模块410,用于根据数据队列的队列状态,在各数据队列中确定数据处理状态的数据队列,数据队列的队列状态包括数据处理状态和数据存储状态。

处理模块430,用于针对数据处理状态的数据队列中的数据,按照处理次序依次对所述数据进行处理。

切换模块450,用于在数据处理状态的数据队列中的数据全部处理完毕后,对数据队列进行队列状态切换。

上述数据异步处理装置中各个模块的功能和作用的实现过程具体详见上述数据异步处理方法中对应步骤的实现过程,在此不再赘述。

在另一个示例性实施例中,该数据异步处理装置400,如图9所示,还可以包括但不限于:接收模块426和获取模块428。

接收模块426,用于接收针对所述数据处理状态的数据队列的数据读取指令。

获取模块428,用于根据所述数据读取指令,获取所述数据处理状态的数据队列中的数据。

图10是图8对应实施例示出的切换模块的细节进行描述的框图。该切换模块450,如图10所示,可以包括但不限于:监听子模块451和切换子模块453。

监听子模块451,用于按照预置的时间间隔监听所述数据处理状态的数据队列的处理结果。

切换子模块453,用于根据所述处理结果对数据队列进行队列状态切换。

在另一个示例性实施例中,该切换模块450,可以包括但不限于:接收子模块。

该接收子模块用于接收数据处理状态的数据队列的处理结果并根据处理结果对数据队列进行队列状态切换。

图11是图10对应实施例示出的切换子模块的细节进行描述的框图。该切换子模块453,如图11所示,可以包括但不限于:判断单元4531,接收单元4533和切换单元4535。

判断单元4531,用于判断处理结果是否完成,若为是,则向数据存储状态的数据队列发送数据存储停止命令。

接收单元4533,用于接收数据存储状态的数据队列响应数据存储停止命令返回的消息。

切换单元4535,用于根据消息对数据队列进行队列状态切换。

在另一个示例性实施例中,该切换单元4535,可以包括但不限于:切换子单元。

该切换子单元用于判断消息是否为确认消息,若为是,则将数据处理状态的数据队列的队列状态切换为数据存储状态,将数据存储状态的数据队列的队列状态切换为数据处理状态。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围执行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

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