数据存储方法、系统、终端设备以及计算机存储介质与流程

文档序号:28077705发布日期:2021-12-18 01:02阅读:85来源:国知局
数据存储方法、系统、终端设备以及计算机存储介质与流程

1.本发明涉及金融科技(fintech)技术领域,尤其涉及一种数据存储方法、系统、终端设备以及计算机存储介质。


背景技术:

2.随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技转变,但由于金融行业的安全性、实时性以及稳定性等要求,也对技术提出了更高的要求。
3.目前,在信息数据快速增长的情况下,越来越多的互联网服务器会遇到高并发数据存储的情况。尽管目前大部分数据存储系统都通过采用nosql(not only sql,非关系型数据库缓存数据),来解决高并发数据存储的问题,但是,针对一个比较老旧的数据存储系统而言,要完全将数据存储方案更换成nosql,就需要给数据存储系统带来巨大变更,资源消耗巨大,然而若仍然采用传统的数据存储方案,则在遇到高并发数据存储的情况下,又会导致数据库压力过大,从而容易引发数据存储请求超时未执行而导致系统服务器宕机等问题。
4.综上,如何在消耗较低资源的情况下,提升数据存储系统的服务效率以应对高并发数据存储的情况,是目前业界亟待解决的技术问题。


技术实现要素:

5.本发明的主要目的在于提供一种数据存储方法、系统、终端设备以及计算机存储介质,旨在解决如何在消耗较低资源的情况下,提升数据存储系统的服务效率以应对高并发数据存储的技术问题。
6.为实现上述目的,本发明提供一种数据存储方法,所述数据存储方法应用于面向高并发数据的数据存储系统,所述数据存储方法包括以下步骤:
7.监测高并发数据的数据信息和所述高并发数据所属的数据类型;
8.根据所述数据信息和所述数据类型对应的本地数据消费队列的数据消费状态,针对所述本地数据消费队列进行动态调整;
9.调用经过动态调整后的所述本地数据消费队列处理所述高并发数据,并将处理后的高并发数据存储至对应的数据库中。
10.此外,为实现上述目的,本发明还提供一种数据存储系统,所述数据存储系统应用于面向高并发数据的数据存储系统,所述数据存储系统包括:
11.监测模块,用于监测高并发数据的数据信息和所述高并发数据所属的数据类型;
12.队列动态调整模块,用于根据所述数据信息和所述数据类型对应的本地数据消费队列的数据消费状态,针对所述本地数据消费队列进行动态调整;
13.并发数据处理模块,用于调用经过动态调整后的所述本地数据消费队列处理所述高并发数据,并将处理后的高并发数据存储至对应的数据库中。
14.其中,本发明数据存储系统的各个功能模块在运行时实现如上所述的数据存储方法的步骤。
15.此外,为实现上述目的,本发明还提供一种终端设备,所述终端设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据存储程序,所述数据存储程序被所述处理器执行时实现如上所述的数据存储方法的步骤。
16.此外,为实现上述目的,本发明还提供一种计算机存储介质,所述计算机存储介质上存储有数据存储程序,所述数据存储程序被处理器执行时实现如上所述的数据存储方法的步骤。
17.此外,为实现上述目的,本发明还提供计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现如上所述的数据存储方法的步骤。
18.本发明提供一种数据存储方法、系统、终端设备、计算机存储介质以及计算机程序产品,通过面向高并发数据的数据存储系统监测高并发数据的数据信息和所述高并发数据所属的数据类型;根据所述数据信息和所述数据类型对应的本地数据消费队列的数据消费状态,针对所述本地数据消费队列进行动态调整;调用经过动态调整后的所述本地数据消费队列处理所述高并发数据,并将处理后的高并发数据存储至对应的数据库中。
19.本发明在使用面向高并发数据的数据存储系统进行服务时,先监测该高并发数据的数据信息和该高并发数据所属的数据类型,然后,根据监测到的该数据信息,连同当前配置好的与该数据类型相对应的本地数据消费队列的数据消费状态,来实时的针对该本地数据消费队列进行动态调整,最后,通过调用经过动态调整之后的本地数据消费队列针对高并发数据进行处理,并将经过处理之后的高并发数据存储到对应的数据库中。
20.本发明相比于传统完全替换存储方案来针对高并发数据进行服务的方式,仅通过监测高并发数据的数据信息,以基于该数据信息和系统内本地数据消费队列实时的数据消费状态,实现对数据消费队列的动态实时分配,达成倾斜系统资源来处理和存储高并发数据。如此,本发明一方面无需针对系统做方案更换操作,避免了系统变更产生的巨大资源消耗,另一方面,还能在极大程度上提升系统针对高并发数据的服务效率,从而有效地避免数据系统因数据库存储压力大而不能快速处理存储或服务宕机的问题。
附图说明
21.图1为本发明实施例方案涉及的终端设备硬件运行环境的设备结构示意图;
22.图2为本发明数据存储方法一实施例的流程示意图;
23.图3为本发明数据存储方法一实施例涉及的本地数据消费队列的应用场景示意图;
24.图4为本发明数据存储方法一实施例涉及的监听数据消费队列的应用场景示意图;
25.图5为本发明数据存储方法一实施例涉及的存储高并发数据的应用场景示意图;
26.图6为本发明数据存储方法一实施例涉及的高并发数据的数据路由应用流程示意图;
27.图7为本发明数据存储系统一实施例的功能模块示意图。
28.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
29.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
30.参照图1,图1为本发明实施例方案涉及的终端设备硬件运行环境的设备结构示意图。
31.本发明实施例终端设备可以是被配置作为面向高并发数据提供数据服务的数据存储系统的终端设备,该终端设备可以是服务器、智能手机、pc(personal computer,个人计算机)、平板电脑、便携计算机等等。
32.如图1所示,该终端设备可以包括:处理器1001,例如cpu,通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi

fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non

volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
33.本领域技术人员可以理解,图1中示出的终端设备结构并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
34.如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及数据存储程序。
35.在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端,与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的数据存储程序,并执行以下数据存储方法的各实施例。
36.基于上述硬件结构,提出本发明数据存储方法的各实施例。
37.需要说明的是,在信息数据快速增长的情况下,越来越多的互联网服务器会遇到高并发数据存储的情况。尽管目前大部分数据存储系统都通过采用nosql(not only sql,非关系型数据库缓存数据),来解决高并发数据存储的问题,但是,针对一个比较老旧的数据存储系统而言,要完全将数据存储方案更换成nosql,就需要给数据存储系统带来巨大变更,资源消耗巨大,然而若仍然采用传统的数据存储方案,则在遇到高并发数据存储的情况下,又会导致数据库压力过大,从而容易引发数据存储请求超时未执行而导致系统服务器宕机等问题。
38.针对上述现象,本发明提供一种数据存储方法。请参照图2,图2为本发明数据存储方法第一实施例的流程示意图,在本实施例中,该数据存储方法应用于上述被配置作为面向高并发数据提供数据服务的数据存储系统的终端设备,该终端设备在该数据存储系统当中具体可以担任一个面向高并发数据的服务器。本发明数据存储方法包括:
39.步骤s10,监测高并发数据的数据信息和所述高并发数据所属的数据类型;
40.终端设备在面向高并发数据提供数据服务的过程当中,持续不断的针对高并发数据的数据信息进行监测,并同时检测该高并发数据当前是新建、删除、查询和更新等各种数据类型中的哪一种。
41.需要说明的是,在本实施例中,被配置作为面向高并发数据提供数据服务的数据存储系统的终端设备,按照预先配置好的动态队列分配机制来面向高并发数据提供数据服
务,即,根据所对接高并发数据的数据信息(也可称作:并发数据特征,如并发数据的数据量大小和数据并发速度等等),动态的调节本地数据消费队列的数量,以针对高并发数据进行消费处理和存储。如此,终端设备即在面向高并发数据的整个过程中,持续不断的针对该高并发数据的数据信息进行监测。
42.具体地,例如,终端设备通过埋点方式从对接的数据业务平台上,实时的获取该数据业务平台上高并发数据的数据量、数据并发速度甚至数据并发起止时间等等数据信息,然后,将实时获取得到的该数据信息与从本端采集得到的本地数据消费队列的相关状态,进行实时的分析以针对该数据业务平台上的高并发数据提供对应服务。
43.此外,在本实施例中,终端设备可在通过获取到数据业务平台上的高并发数据之后,检测该高并发数据的数据类型是更新、删除、查询还是新建。具体地,终端设备通过识别该高并发数据所携带的数据类型标识(封装在数据字符当中),来检测识别出当前获取到的高并发数据是更新、删除、查询还是新建的数据类型。
44.需要说明的是,在本实施例中,终端设备作为面向高并发数据提供数据服务的数据存储系统还可以采用nio(java non

blocking io,java非阻塞式io),通过多路复用的方式将多个数据业务平台或者客户端产生的高并发数据分布到本地数据消费队列。应当理解的是,基于实际应用的不同设计需要,在任意可行的不同实施方式当中,终端设备可采用任意不同的数据发布方式令本地数据消费队列同时接受多个客户端传递的高并发数据,本发明数据存储方法并不针对高并发数据具体的发布方式进行限定。
45.步骤s20,根据所述数据信息和所述数据类型对应的本地数据消费队列的数据消费状态,针对所述本地数据消费队列进行动态调整;
46.需要说明的是,在本实施例中,终端设备预先按照高并发数据所具有的新建、更新、删除和查询等数据类型,分别构建起该各数据类型各自与本地数据消费队列之间一一对应的关系。如此,终端设备在实时获取得到高并发数据并检测识别出该高并发数据所属的数据类型之后,即可通过动态调整与该数据类型相对应的本地数据消费队列和调用经过调整后的该本地数据消费队列来针对此种数据类型的高并发数据进行处理。
47.终端设备在监测得到高并发数据实时的数据信息之后,进一步连同该数据信息,和从本端实时采集得到的与高并发数据所属数据类型一一对应的本地数据消费队列实时的数据消费状态一起进行分析,从而按照预先配置好的动态队列分配机制来针对该本地数据消费队列进行实时的动态调整。
48.需要说明的是,在本实施例中,数据消费系统预先配置好的动态队列分配机制是根据不同并发数据量的大小以及本地数据消费队列的数据消费速度,动态的分配本地消费队列,从而实时的满足高并发数据的处理需求,同时还可避免资源消耗。本实施例中,数据消费系统所配置动态队列分配机制的具体原理是:当某个时间段,某本地数据消费队列订阅的并发数据量特别大,从而导致并发数据快速增加,但该本地数据消费队列所能够提供的数据消费速度的无法满足针对该并发数据进行处理的消费速度,数据存储系统就采用该动态队列分配机制,动态增加本地数据消费队列的个数以满足针对该并发数据进行处理的消费速度,相反的,当并发数据量减少时,数据存储系统又会根据该动态队列分配机制减少该本地数据消费队列的个数,以实现系统资源的回收和队列的动态分配功能。
49.此外,应当理解的是,基于实际应用的不同设计需要,在其它任意可行的实施方式
当中,终端设备当然还可以采用其它不同于本实施例所描述的过程来实现针对本地数据消费队列的动态调整,本发明数据存储方法并不针对动态调整本地数据消费队列的具体实现方式进行限定,其它任意针对数据消费队列进行动态调整的实现手段均属于本发明的技术构思,从而应当纳入本发明的保护范围。
50.进一步地,在一种可行的实施例中,终端设备所持续监测得到的高并发数据的数据信息为:该高并发数据的数据量,而终端设备从本端实时采集得到的本地数据消费队列实时的数据消费状态为:该本地数据消费队列的数据消费速度。上述步骤s20,可以包括:
51.步骤s201,获取所述数据类型对应的本地数据消费队列的数据消费速度;
52.终端设备在监测得到高并发数据实时的数据信息,以及该高并发数据所属的数据类型之后,在本地实时采集该数据类型对应的本地数据消费队列的数据消费速度。
53.具体地,例如,在本实施例中,终端设备在通过埋点方式从对接的数据业务平台上,实时的获取该数据业务平台上高并发数据的数据量、数据并发速度甚至数据并发起止时间等等数据信息,并基于识别该高并发数据封装的数据类型标识确定该高并发数据的数据类型是新建时,立即从本端采集当前时刻与“新建”这一数据类型相对应的本地数据消费队列的数据消费速度。
54.步骤s202,检测所述数据量和所述数据消费速度是否达到预设的消费队列增加条件,其中,所述消费队列增加条件为:所述数据消费速度不满足消费所述数据量的高并发数据;
55.终端设备在连同所获取到的高并发数据的数据量,和从本端实时采集得到的本地数据消费队列实时的数据消费速度一起进行分析时,先检测该数据消费速度,是否能够满足针对该数据量大小的高并发数据进行消费处理,从而在检测到该数据消费速度不满足针对该高并发数据进行消费处理时,确定当前已经达到预设的消费队列增加条件。
56.具体地,例如,终端设备可通过检测本地数据消费队列当中积攒的待处理消息数据的条数是否大于阈值(假定该阈值为5000条),来检测确定本地数据消费队列的数据消费速度,是否能满足针对一定数据量大小高并发数据进行消费处理。即,当终端设备检测到本地数据消费队列1订阅的数据业务平台在当前时刻的高并发数据的数据量为3万条,且该本地数据消费队列1中,存在积攒了大于5000条的待处理消息数据的队列时,确定当前时刻该本地数据消费队列1的数据消费速度已经不能够满足针对该3万条的高并发数据进行消费处理,进而,终端设备确定在当前时刻该本地数据消费队列1面向该高并发数据已经达成了消费队列增加条件。
57.步骤s203,若检测达到所述消费队列增加条件,则动态增加所述本地数据消费队列的数量;
58.终端设备在检测确定达成预设的消费队列增加条件时,则立即动态增加本地数据消费队列的数量,以使得增加数量后的本地数据消费队列能够满足针对高并发数据进行处理的消费速度。
59.具体地,例如,终端设备在检测确定当前时刻本地数据消费队列1的数据消费速度已经不能够满足针对该3万条的高并发数据进行消费处理,进而,确定在当前时刻该本地数据消费队列1面向该高并发数据已经达成了消费队列增加条件之后,终端设备即通过增加该本地数据消费队列1的数量来令增加数量后的本地数据消费队列1能够满足针对该3万条
的高并发数据进行处理。
60.需要说明的是,在本实施例中,终端设备在增加本地数据消费队列的数量时,假定该本地数据消费队列中有四分之三的队列中各有5000条以上的待处理消息数据,则终端设备即可添加个数为当前全部本地数据消费队列个数乘以四分之一的新的本地数据消费队列,若该全部本地数据消费队列个数乘以四分之一出现小数,则可以向下取整得到要添加的个数。
61.步骤s204,检测所述数据量和所述数据消费速度是否达到预设的消费队列回收条件,其中,所述消费队列缩减条件为:所述数据消费速度消费所述数据量的高并发数据存在盈余;
62.终端设备在连同所获取到的高并发数据的数据量,和从本端实时采集得到的本地数据消费队列实时的数据消费速度一起进行分析,从而检测确定当前是否达到预设的消费队列增加条件的同时,还检测该数据消费速度,是否满足针对该数据量大小的高并发数据进行消费处理还存在部分盈余,从而在检测到该存在盈余时,确定当前已经达到预设的消费队列回收条件。
63.具体地,例如,同样的,终端设备可通过检测本地数据消费队列当中积攒的待处理消息数据的条数是否小于阈值(假定此时的阈值为1000条),来检测确定本地数据消费队列的数据消费速度,是否针对一定数据量大小高并发数据进行消费处理还存在盈余。即,当终端设备检测到本地数据消费队列2订阅的数据业务平台在当前时刻的高并发数据的数据量为1万条,且该本地数据消费队列2中,存在积攒的待处理消息数据小于1000条的队列时,确定当前时刻该本地数据消费队列2的数据消费速度已经针对该1万条的高并发数据进行消费处理是存在盈余的,进而,终端设备确定在当前时刻该本地数据消费队列2面向该高并发数据已经达成了消费队列回收条件。
64.步骤s205,若检测达到所述消费队列回收条件,则动态缩减所述本地数据消费队列的数量。
65.终端设备在检测确定达成预设的消费队列回收条件时,则立即动态缩减本地数据消费队列的数量,以使缩减数量后的本地数据消费队列能够满足针对高并发数据进行处理的消费速度即可。
66.需要说明的是,在本实施例中,终端设备在缩减本地数据消费队列的数量时,依次回收该本地数据消费队列当中,所积攒待处理消息数据的条数小于1000条的队列,直到该本地数据消费队列当中全部的队列均积攒有条数大于或者等于1000条的待处理消息数据,或者,直到回收后剩余的该本地数据消费队列中的从数据消费队列仅剩余1个。
67.进一步地,在本实施例中,请参照图3所示的应用场景,终端设备本端的本地数据消费队列可以包括:主数据消费队列(图示)和从数据消费队列(图示select本地消息队列、update本地消息队列、delete本地消息队列和create本地消息队列)。其中,主数据消费队列的数量与高并发数据的数据种类是一一对应的,即,当终端设备所对接数据业务平台上包括delete(删除)、update(更新)、create(新建/插入)以及select(查询)这四种类型的高并发数据时,终端设备即至少需要在本端配置:select主消息队列、update主消息队列、delete主消息队列和create主消息队列这四种主数据消费队列。单个主数据消费队列同时由一个或者多个从数据消费队列进行订阅,此外,该一个主数据消费队列连同订阅该主数
据消费队列的一个或者多个从数据消费队列可统一称作一个本地消费队列集群,或者,还可以仅将订阅同一个主数据消费队列的一个或者多个从数据消费队列统一称作一个本地消费队列集群。
68.在本实施例中,通过将高并发数据细分成不同类别,即,分散数据集发布到对应类别的主数据消费队列,这样每个主数据消费队列里面的数据不至于太过庞大,并且当数据到达主数据消费队列后,对应的一个或者多个从数据消费队列又会通过订阅方式获取数据并对应进行消费处理。如此,本发明首先从分散数据入手,前后两次分散高并发数据,能够在极大程度上减轻服务器压力、提高系统并发量,有效地防止了高并发数据过多而可能导致服务器宕机的问题。
69.此外,请参照如图4所示的应用场景,终端设备通过使用一个子线程,实时监听已经配置所有的本地数据消费队列(图示本地消费队列集群)并记录下该各个队列中的从数据消费队列的队列数据,以及,记录该每一个从数据消费队列中所积攒的待处理消息数据的数量。每个本地数据消费队列在初始化时,默认拥有4个同时订阅主数据消费队列的从数据消费队列。
70.在本实施例中,上述的步骤s203中,“动态增加所述本地数据消费队列的数量”的步骤,可以包括:
71.步骤s2031,动态增加所述从数据消费队列的数量,并检测所述从数据消费队列的数量是否达到预设极大值,其中,所述预设极大值为:同时订阅单个所述主数据消费队列的所述从数据消费队列的最大数量;
72.终端设备在针对本地数据消费队列的数量进行动态增加时,优先增加该本地数据消费队列中从数据消费队列的数量,并在每一次增加该从数据消费队列之后,检测全部的该从数据消费队列的数量是否达到了:能够同时订阅当前本地数据消费队列当中的主数据消费队列全部的从数据消费队列的最大数量。
73.具体地,例如,终端设备在动态增加本地数据消费队列的数量时,优先按照该本地数据消费队列中,四个同时订阅一个主数据消费队列的从数据消费队列的数量:4乘以四分之一得到1之后,在该本地数据消费队列当中,增加一个同样订阅该主数据消费队列的从数据消费队列,并在每一次增加该从数据消费队列之后,即检测全部的从数据消费队列是否已经大于该主数据消费队列允许被订阅的最多从数据消费队列的数量。
74.步骤s2032,若是,则增加所述主数据消费队列并继续动态增加所述从数据消费队列的数量;
75.终端设备在针对本地数据消费队列的数量进行动态增加时,若增加从数据消费队列之后全部该从数据消费队列的数量,已经达到了该本地数据消费队列中主数据消费队列允许被订阅的最多从数据消费队列的数量,且,还需要继续增加该从数据消费队列时,终端设备即先增加一个新的主数据消费队列之后,再继续增加新的从数据消费队列并令该新的从数据消费队列订阅该新的主数据消费队列。
76.具体地,例如,假定一个本地数据消费队列中,主数据消费队列允许被订阅的最多从数据消费队列的数量为10个,则终端设备在优先增加订阅该主数据消费队列的从数据消费队列达到10,且仍然需要继续增加从数据消费队列时,终端设备即增加一个与该主数据消费队列相同的新的主数据消费队列,然后,继续增加新的从数据消费队列,并令增加的新
的从数据消费队列直接订阅该新的主数据消费队列。
77.进一步地,在一种可行的实施例中,上述的步骤s203中,“动态增加所述本地数据消费队列的数量”的步骤,还可以包括:
78.步骤s2033,获取实时内存数据,并在所述实时内存数据达到预设的消费队列增加限制条件时,停止增加所述本地数据消费队列的数量。
79.在本实施例中,为了防止无止尽增加本地数据消费队列的数量,从而造成系统内存溢出等问题,终端设备可通过子线程实时监控内存的使用情况,从而基于该使用情况控制停止增加该本地数据消费队列的数量。此外,终端设备通过子线程监控内存使用情况从而获取得到的实时内存数据包括但不限于:freememory(空闲内存大小)、totalmemory(当前总内存大小)和maxmemory(最大能够获取的内存大小),而预设的消费队列增加限制条件为:freememory与totalmemory之比小于或者等于预设常数值,本发明可选设置为7/10,或者,totalmemory与maxmenory之比大于或者等于预设常数值,如7/10。终端设备即在动态增加本地数据消费队列的过程中,通过子线程监控内存使用情况所获取得到的上述实时内存数据,在计算到freememory与totalmemory之比小于或者等于7/10时,或者,totalmemory与maxmenory之比大于或者等于7/10时,确定当前已经达到了消费队列增加限制条件,从而立即停止继续增加新的主数据消费队列和/或者增加新的从数据消费队列。如此,可有效地防止本地数据消费队列所占系统内存过多,而导致系统其他功能受到影响。
80.进一步地,在本实施例中,上述的步骤s205中,“动态缩减所述本地数据消费队列的数量”的步骤,还可以包括:
81.步骤s2051,在多个所述从数据消费队列中,确定当前待处理消息数据最少的目标队列;
82.终端设备在针对本地数据消费队列的数量进行动态缩减时,先在该本地数据消费队列的多个从数据消费队列当中,检测确定出在当前时刻所积攒的待处理消息数据的条数最少的目标队列。
83.步骤s2052,转移所述目标队列中全部的待处理消息数据,并回收所述目标队列以缩减所述从数据消费队列的数量;
84.终端设备在确定出多个从数据消费队列当中,在当前时刻积攒的待处理消息数据的条数最少的目标队列之后,立即将该目标队列当中积攒的全部待处理消息数据转移到该多个数据消费队列除目标队列以外的其它队列当中,并在该目标队列将当前时刻正在消费处理的消息数据处理完毕之后,立即回收该目标队列,如此循环回收目标队列直至终端设备确定未达到上述的消费队列回收条件,从而,实现了对该从数据消费队列的数量进行缩减。
85.具体地,例如,终端设备通过一子线程实时监听所有的本地消费队列集群并记录下各个集群中的本地数据消费队列已有的主数据消费队列和从数据消费队列的队列数据(如队列消费处理数据的速度、建立时间、占用内存情况等等),以及,记录该集群中每个从数据消费队列积攒的待处理消息数据的条数。从而,终端设备在确定当前时刻本地数据消费队列面向高并发数据已经达成了消费队列回收条件(假定此时该消费队列回收条件为:本地数据消费队列的全部从数据消费队列当中,有四分之三的队列中积攒的待处理消息数据的条数都小于1000条),则需要针对本地数据消费队列的数量进行动态缩减时,可采用如
下两种方式:
86.方式一:终端设备首先从本地数据消费队列的全部从数据消费队列当中,选定出在当前时刻积攒消息数量最小的目标队列,然后把该目标队列内积攒的全部待处理消息数据,转移到其余队列中的某一个或者多个队列,然后在该目标队列将正在处理的消息数据处理完成之后,立即回收该目标队列。如此,按照上诉过程逐一回收各目标队列,直到所有的从数据消费队列中积攒的待处理消息数据的条数为1000以上,或者,仅仅只剩下一个从数据消费队列为止。
87.方式二:终端设备采用逐步累加转移进行从数据消费队列的回收,即,终端设备首先选出在当前时刻积攒消息数量最小的目标队列,然后,将该目标队列当中的全部待处理消息数据与积攒待的处理消息数据的条数排名倒数第二的从数据消费队列中的消息进行累加,如果累加后全部待处理消息数据的条数大于1000,则放弃累加,而如果累加后全部待处理消息数据的条数小于1000,则执行累加并继续往下继续执行以上过程,直到累加的全部待处理消息数据的条数超过1000,或者,全部从数据消费队列中不满足“有四分之三的队列中积攒的待处理消息数据的条数小于1000”的情况为止。
88.需要说明的是,在本实施例中,上述方式二中,终端设备在将目标队列中的全部待处理消息数据累加到积攒的待处理消息数据条数为倒数第二的队列当中之后,同样的在该目标队列将正在处理的消息数据处理完成之后,立即回收该目标队列。
89.步骤s2053,当所述从数据消费队列的数量缩减为零,且所述从数据消费队列订阅的目标主数据消费队列存在相同的主数据消费队列时,回收所述目标主数据消费队列以缩减所述主数据消费队列的数量。
90.终端设备在针对本地数据消费队列的数量进行动态缩减时,若订阅当前目标主数据消费队列的全部从数据消费队列已经被缩减为零,且,该目标主数据消费队列还存在一个或者多个相同类型的主数据消费队列,则,终端设备进一步也回收该目标主数据消费队列,从而实现对本地数据消费队列的主数据消费队列的数量进行缩减。
91.具体地,例如,假定当前本地数据消费队列3当中包含两个相同类型的主数据消费队列(如均为select主消息队列):主数据消费队列1和主数据消费队列2,且该主数据消费队列1有5个从数据消费队列进行订阅,而主数据消费队列2有3个从数据消费队列进行订阅。如此,终端设备在按照上述“方式一”或者“方式二”将订阅主数据消费队列2的3个从数据消费队列均回收掉之后(该3个从数据消费队列中积攒的待处理消息数据均转移到的订阅主数据消费队列1的5个从数据消费队列中的一个或者多个队列内),进一步将该主数据消费队列2也进行回收。
92.步骤s30,调用经过动态调整后的所述本地数据消费队列处理所述高并发数据,并将处理后的高并发数据存储至对应的数据库中。
93.终端设备在按照预先配置好的动态队列分配机制,来针对本地数据消费队列进行实时的动态调整之后,即通过调用经过动态调整之后的本地数据消费队列来针对高并发数据进行消费处理,并进一步的将经过处理以后的高并发数据直接存储到对应的数据库内。
94.进一步地,在一种可行的实施例中,上述步骤s30中,“调用经过动态调整后的所述本地数据消费队列处理所述高并发数据”的步骤,可以包括:
95.步骤s301,调用经过动态调整后的所述本地数据消费队列;
96.步骤s302,按照预设哈希算法从所述本地数据消费队列中确定处理所述高并发数据的目标数据消费队列;
97.步骤s303,按照预设保证调度算法令所述目标数据消费队列公平的针对所述高并发数据进行处理。
98.需要说明的是,在本实施例中,终端设备通过哈希(hash)算法和保证调度算法来决定多个从数据消费队列从主数据消费队列当中订阅的数据内容,来实现整个本地数据消费队列的公平性,即,确保不会出现某个从数据消费队列中积攒的待处理消息数据的个数远远超过其他从数据消费队列。
99.终端设备在按照预先配置好的动态队列分配机制,来针对本地数据消费队列进行实时的动态调整之后,即通过调用经过动态调整之后的本地数据消费队列,按照预设的哈希算法和保证调度算法来针对高并发数据进行消费处理。
100.具体地,例如,终端设备调用经过动态调整之后的本地数据消费队列,由该本地数据消费队列中的主数据消费队列接收待处理的高并发数据,然后先通过哈希算法:(n

1)&hash,(该哈希算法中,n代表本地数据消费队列中,从数据消费队列的个数,hash代表待处理的高并发数据的哈希码),决定该待处理的高并发数据,被该本地数据消费队列中订阅该主数据消费队列的哪一个从数据消费队列所消费处理。
101.再然后,终端设备在各个从数据消费队列从主数据消费队列订阅待处理的高并发数据进行消费的过程当中,基于保证调度算法保证各个从数据消费队列的公平性,即,在当前本地数据消费队列的n个从数据消费队列当中,在新的待处理消息数据(即待处理的高并发数据)被基于hash算法随机分配到某一从数据消费队列直到各个从数据消费队列之间,出现待处理消息数据的个数差距大于或者等于100时,终端设备即选出当前时刻积攒的待处理消息数据的个数最小的目标队列,并把之后基于hash算法随机分配所接受到的新的待处理消息数据知己分配给该目标队列,直到该目标队列内积攒的待处理消息数据的数量,超越最接近该目标队列的其它任一从数据消费队列中所积攒待处理消息数据的数量为止。此后,再继续检测全部的从数据消费队列中是否还存在积攒待处理消息数据的数量差距大于或者等于100的目标队列,如果存在,则继续上诉过程,而如果不存在,则继续采用hash算法随机分配新的待处理消息数据。
102.进一步地,在一种可行的实施例中,上述步骤s30中,“将处理后的高并发数据存储至对应的数据库中”的步骤,可以包括:
103.步骤s302,获取处理后的高并发数据的数据编号;
104.步骤s303,按照所述数据编号所处的编号范围,将所述处理后的高并发数据路由至所述编号范围对应的数据库中进行存储,其中,不同的所述编号范围分别对应一个数据库,且各所述数据库中保存有相同的数据表。
105.终端设备在调用经过动态调整的本地数据消费队列,按照预设的哈希算法和保证调度算法来针对高并发数据进行消费处理之后,进一步获取经过消费处理后的高并发数据各自的数据编号,从而按照该数据编号所处的编号范围,将该经过消费处理的高并发数据,路由到不同的由该编号范围所对应数据库的相同数据表上进行存储。
106.需要说明的是,在本实施例中,应当理解的是,基于实际应用的不同设计需要,在其它可行的实施方式当中,终端设备当然也可以采用不同于此处基于数据编号的路由方
式,来实现将经过消费处理的高并发数据路由至不同数据库的相同数据表进行存储,本发明数据存储方法也不针对高并发数据存储时的具体路由规则进限定。
107.此外,请参照如图5所示的应用场景,在一种可行的实施例中,终端设备预先通过数据编号不同的编号范围,建立多个数据库各自与该编号范围之间的对应关系,然后,在通过动态调整后的本地数据消费队列针对高并发数据进行消费处理之后,通过与该本地数据消费队列相连的数据库路由,按照高并发数据的数据编号所处的编号范围,将该高并发数据路由到不同数据库的相同表中进行存储。如此,实现了对高并发数据的分离存储,把高并发数据水平拆分,提高了存储系统所能承受的并发量。此外,还不会导致一个数据库中某张数据表的数据量过于巨大,即,最大一个数据库内一数据表上的数据量不会超过500w条,而使得数据更新或者删除的操作执行响应过慢(传统存储方案中,同一张表的数据只会存储在一张表中)。同时,通过将高并发数据路由到不同数据库中存储还实现了多个命令各自对应多个数据库,以形成多对多的关系,避免了传统存储方案中的多对一关系,极大程度上减少了数据库的数据存储压力。
108.进一步地,本实施例中,终端设备在针对经过消费处理后的高并发数据进行存储的过程中,提前针对该高并发数据进行数据编号的计算。
109.终端设备在将经过消费处理的高并发数据存储至对应数据库时,先计算该高并发数据的数据编号,从而在后续按照该数据编号所处的编号范围,将该高并发数据,路由到不同的由该编号范围所对应数据库的相同数据表上进行存储。具体地,如参照如图6所示的应用流程,终端设备在调用动态调整后的本地数据消费队列针对高并发数据进行消费之后,即先计算该高并发数据的数据编号,然后,通过数据库路由获取该数据编号并判断该数据编号所处的编号范围,从而按照该数据编号将该高并发数据路由到与该编号范围所对应的数据库,以在该数据库中将该高并发数据存储在对应数据表上。
110.基于上述,本发明数据存储方法在计算高并发数据的数据编号时,还可以包括:
111.步骤a,在监测到所述高并发数据所属的数据类型为新建时,为所述高并发数据计算新的数据编号;
112.步骤b,在监测到所述高并发数据所属的数据类型为删除、查询或者更新时,为所述高并发数据确定原有的数据编号。
113.在本实施例中,终端设备在通过调用动态调整的本地数据消费队列针对高并发数据进行消费之后,即检测该高并发数据的数据类型是更新、删除、查询还是新建。如此,终端设备在检测到该高并发数据的数据类型是新建时,即按照数据库中相同的用于存储新建类型数据的数据表的主键,在该数据表主键标识当前最大标号的基础之上加一,以生成当前高并发数据的数据编号。或者,终端设备在检测到该高并发数据的数据类型是删除、查询或者更新时,不再针对该高并发数据生成新的数据编号,而是直接在数据库中用于存储该删除、查询或者新建类型数据的数据表中,确定该高并发数据原有的数据编号。
114.需要说明的是,在本实施例中,终端设备除了可以根据数据库表的主键计算得到高并发数据新的数据编号,还可以基于哈希计算的方式,针对新建类型的高并发数据随机生成一个新的数据编号,如,将针对高并发数据进行哈希计算的哈希值直接作为新的数据编号。
115.在本实施例中,通过终端设备在面向高并发数据提供数据服务的过程当中,持续
不断的针对高并发数据的数据信息进行监测,并同时检测该高并发数据当前是新建、删除、查询和更新等各种数据类型中的哪一种;终端设备在监测得到高并发数据实时的数据信息之后,进一步连同该数据信息,和从本端实时采集得到的与高并发数据所属数据类型一一对应的本地数据消费队列实时的数据消费状态一起进行分析,从而按照预先配置好的动态队列分配机制来针对该本地数据消费队列进行实时的动态调整;终端设备在按照预先配置好的动态队列分配机制,来针对本地数据消费队列进行实时的动态调整之后,即通过调用经过动态调整之后的本地数据消费队列来针对高并发数据进行消费处理,并进一步的将经过处理以后的高并发数据直接存储到对应的数据库内。
116.相比于传统完全替换存储方案来针对高并发数据进行服务的方式,仅通过监测高并发数据的数据信息,以基于该数据信息和系统内本地数据消费队列实时的数据消费状态,实现对数据消费队列的动态实时分配,达成倾斜系统资源来处理和存储高并发数据。如此,本发明一方面无需针对系统做方案更换操作,避免了系统变更产生的巨大资源消耗,另一方面,还能在极大程度上提升系统针对高并发数据的服务效率,从而有效地避免数据系统因数据库存储压力大而不能快速处理存储或服务宕机的问题。
117.进一步地,本发明还提供一种数据存储系统,该数据存储系统应用于面向高并发数据的数据存储系统。请参照图7,图7为本发明数据存储系统一实施例的功能模块示意图。如图7所示,本发明数据存储系统包括:
118.监测模块10,用于监测高并发数据的数据信息和所述高并发数据所属的数据类型;
119.队列动态调整模块20,用于根据所述数据信息和所述数据类型对应的本地数据消费队列的数据消费状态,针对所述本地数据消费队列进行动态调整;
120.并发数据处理模块30,用于调用经过动态调整后的所述本地数据消费队列处理所述高并发数据,并将处理后的高并发数据存储至对应的数据库中。
121.进一步地,所述数据信息为:所述高并发数据的数据量,所述数据消费状态为:所述本地数据消费队列的数据消费速度;
122.队列动态调整模块20,包括:
123.第一获取单元,用于获取所述数据类型对应的本地数据消费队列的数据消费速度;
124.第一检测单元,用于检测所述数据量和所述数据消费速度是否达到预设的消费队列增加条件,其中,所述消费队列增加条件为:所述数据消费速度不满足消费所述数据量的高并发数据;
125.队列动态增加单元,用于若第一检测单元检测达到所述消费队列增加条件,则动态增加所述本地数据消费队列的数量;
126.第二检测单元,用于检测所述数据量和所述数据消费速度是否达到预设的消费队列回收条件,其中,所述消费队列缩减条件为:所述数据消费速度消费所述数据量的高并发数据存在盈余;
127.队列动态缩减单元,用于若检测达到所述消费队列回收条件,则动态缩减所述本地数据消费队列的数量。
128.进一步地,所述本地数据消费队列包括:主数据消费队列和从数据消费队列,其
中,单个所述主数据消费队列同时由一个或者多个从数据消费队列进行订阅;
129.队列动态增加单元,包括:
130.从队列增加子单元,用于动态增加所述从数据消费队列的数量,并检测所述从数据消费队列的数量是否达到预设极大值,其中,所述预设极大值为:同时订阅单个所述主数据消费队列的所述从数据消费队列的最大数量;
131.主队列增加子单元,用于增加所述主数据消费队列并继续动态增加所述从数据消费队列的数量;
132.队列动态缩减单元,包括:
133.确定子单元,用于在多个所述从数据消费队列中,确定当前待处理消息数据最少的目标队列;
134.从队列回收子单元,用于转移所述目标队列中全部的待处理消息数据,并回收所述目标队列以缩减所述从数据消费队列的数量;
135.主队列回收子单元,用于当所述从数据消费队列的数量缩减为零,且所述从数据消费队列订阅的目标主数据消费队列存在相同的主数据消费队列时,回收所述目标主数据消费队列以缩减所述主数据消费队列的数量。
136.进一步地,队列动态增加单元,还包括:
137.限制子单元,用于获取实时内存数据,并在所述实时内存数据达到预设的消费队列增加限制条件时,停止增加所述本地数据消费队列的数量。
138.进一步地,并发数据处理模块30,包括:
139.数据处理单元,用于调用经过动态调整后的所述本地数据消费队列;按照预设哈希算法从所述本地数据消费队列中确定处理所述高并发数据的目标数据消费队列;以及,按照预设保证调度算法令所述目标数据消费队列公平的针对所述高并发数据进行处理。
140.进一步地,并发数据处理模块30,还包括:
141.第二获取单元,用于获取处理后的高并发数据的数据编号;
142.存储单元,用于按照所述数据编号所处的编号范围,将所述处理后的高并发数据路由至所述编号范围对应的数据库中进行存储,其中,不同的所述编号范围分别对应一个数据库,且各所述数据库中保存有相同的数据表。
143.进一步地,所述数据类型包括:新建、删除、查询和更新,本发明数据存储系统,还包括:
144.新编号生成模块,用于在监测到所述高并发数据所属的数据类型为新建时,为所述高并发数据计算新的数据编号;
145.原有编号确定模块,用于在监测到所述高并发数据所属的数据类型为删除、查询或者更新时,为所述高并发数据确定原有的数据编号。
146.其中,上述数据存储系统中各个模块的功能实现与上述数据存储方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。
147.本发明还提供一种计算机存储介质,该计算机存储介质上存储有数据存储程序,所述数据存储程序被处理器执行时实现如以上任一项实施例所述的数据存储方法的步骤。
148.本发明计算机存储介质的具体实施例与上述数据存储方法各实施例基本相同,在此不作赘述。
149.本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现如以上任一项实施例所述的数据存储方法的步骤。
150.本发明计算机程序产品的具体实施例与上述数据存储方法各实施例基本相同,在此不作赘述。
151.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1