发明内容
本发明提供一种高并发数据存储方法和***,通过设置访问请求最大阈值来检测高并发的访问请求数据,并且将并发的访问请求数据进行分类,将重要程度较高并且需要马上处理的立即处理请求送入数据处理服务器进行存储并且优先处理,将重要程度低且不需要马上进行回应的延时处理请求延后处理,减少高并发时服务器的压力,降低了处理的混乱程度,实现了有序高效的处理。
一种高并发数据存储方法,包括如下步骤:
S1:持续监测获取的访问请求,并计算固定时间段内访问请求的数量,将固定时间段内访问请求的数量与访问请求最大阈值进行大小比较,若是固定时间段内访问请求的数量大于访问请求最大阈值,进入S2;若是固定时间段内访问请求的数量不大于访问请求最大阈值,将访问请求通过业务分析层和负载均衡服务器输入至对应的数据处理服务器中的本地消息队列进行存储;
S2:将访问请求逐个输入到深度学习分类器V1中,将访问请求分类成立即处理请求和延时处理请求,将立即处理请求添加至业务分析消息队列,进入S3;将延时处理请求添加至待处理消息队列/>,进入S4;
S3:将业务分析消息队列中的立即处理请求通过业务分析层和负载均衡服务器输入至对应的数据处理服务器中的本地消息队列进行存储,期间根据输入至本地消息队列的立即处理请求数量对本地消息队列空间大小进行调整;
S4:持续监测获取的访问请求,并依次按固定时间段计算访问请求的数量,当固定时间段内访问请求的数量不大于访问请求最大阈值时,从待处理消息队列中逐个提取延时处理请求随机***至此固定时间段内获取的访问请求中,再将访问请求通过业务分析层和负载均衡服务器输入至对应的数据处理服务器中的本地消息队列进行存储;否则无操作。
作为优选的一个方面,所述步骤S3中,对本地消息队列空间大小进行调整的具体步骤包括:
T1:获取本地消息队列内部立即处理请求的数量;
T2:判断“”是否成立,其中/>为剩余空间阈值,/>为本地消息队列初始空间大小,若是“/>”成立,进入T3;若是“/>”不成立,进入T4;
T3:将对应的本地消息队列的空间大小由扩充至/>,/>为扩充空间大小,进入T4;
T4:间隔预设时间获取本地消息队列内部立即处理请求的数量/>,回到T2。
作为优选的一个方面,还包括对输入至本地消息队列的立即处理请求进行重新排序,具体步骤如下:
H1:获取业务分析消息队列Q1,并获取业务分析消息队列Q1中的立即处理请求,记为;
H2:遍历处理复杂程度过滤层内部存储的立即处理请求,计算立即处理请求与复杂程度过滤层内部存储的所有立即处理请求的相似度/>,/>,其中/>为复杂程度过滤层内部存储的所有立即处理请求个数;
H3:遍历所有相似度,判断是否有“/>”成立的情况,其中/>为相似度阈值,若是有“/>”成立的情况,进入H4;若是无“/>”成立的情况,进入H5;
H4:将立即处理请求存入滞后处理队列/>,并将立即处理请求/>从业务分析消息队列Q1中删除,进入H5;
H5:判断业务分析消息队列Q1中的立即处理请求是否被全部选取,若是业务分析消息队列Q1中的立即处理请求未被全部选取,获取业务分析消息队列Q1中的下一个立即处理请求,记为,回到H2;若是业务分析消息队列Q1中的立即处理请求被全部选取,进入H6;
H6:将滞后处理队列中的立即处理请求均匀***至业务分析消息队列Q1,再将获得的业务分析消息队列/>中的立即处理请求通过业务分析层和负载均衡服务器输入至对应的数据处理服务器中的本地消息队列进行存储。
作为优选的一个方面,所述步骤H2中的处理复杂程度过滤层的生成包括如下步骤:
M1:当数据处理服务器处理立即处理请求时,获取对立即处理请求处理的处理时间;
M2:判断“”是否成立,其中/>为处理时间阈值,若是“/>”不成立,进入M3;若是“/>”成立,进入M4;
M3:复制对应的立即处理请求添加至处理复杂程度过滤层中,处理复杂程度过滤层初始为空,进入M4;
M4:获取下一个立即处理请求处理的处理时间,回到M2。
一种高并发数据存储***,包括:
访问请求监测模块,用于监测获取的访问请求,并判断固定时间段内访问请求的数量与访问请求最大阈值之间的大小关系;
业务分析模块,用于存储深度学习分类器V2,对访问请求进行分析和分类;
请求分流模块,用于存储负载均衡服务器,根据业务分析模块的结果将访问请求进行分流;
数据处理模块,用于存储数据处理服务器,处理对应访问请求,数据处理服务器内置本地消息队列,本地消息队列用于存储访问请求;
访问请求分类模块,用于存储深度学习分类器V1,将访问请求分成立即处理请求和延时处理请求;
业务分析消息队列存储模块,用于存储立即处理请求;
待处理消息队列存储模块,用于存储延时处理请求。
作为优选的一个方面,还包括:
立即处理请求数量获取模块,用于获取本地消息队列内部立即处理请求的数量;
立即处理请求数量判断模块,用于判断输入数据处理服务器的立即处理请求数量是否接近该数据处理服务器内部本地消息队列初始空间大小;
本地消息队列空间扩充模块,用于扩充本地消息队列空间大小。
作为优选的一个方面,还包括:
处理复杂程度过滤层管理模块,用于生成和存储处理复杂程度过滤层;
立即处理请求重排序模块,用于对对输入至本地消息队列的立即处理请求进行重新排序。
本发明具有以下优点:
1、本发明通过设置访问请求最大阈值来检测高并发的访问请求数据,并且将并发的访问请求数据进行分类,将重要程度较高并且需要马上处理的立即处理请求送入数据处理服务器进行存储并且优先处理,将重要程度低且不需要马上进行回应的延时处理请求延后处理,减少高并发时服务器的压力,降低了处理的混乱程度,实现了有序高效的处理。
2、本发明通过对输入数据处理服务器的立即处理请求数量进行监测,若是输入数据处理服务器的立即处理请求数量接近该数据处理服务器内部本地消息队列初始空间大小,将对应的本地消息队列的空间进行扩充,避免多余的立即处理请求可能会由于未定义的存储位置导致丢失。
3、本发明通过监测立即处理请求的处理时间,将处理时间过长的立即处理请求提取出来,并以此筛选出类似的处理时间过长的立即处理请求,并将处理时间过长的立即处理请求间隔分布在业务分析消息队列中,避免所有数据处理服务器都在处理这些处理时间长的立即处理请求时,造成网站网络服务的停滞,进而造成不好的用户体验。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
实施例1
一种高并发数据存储方法,具体包括如下步骤:
S1:持续监测获取的访问请求,并计算固定时间段内访问请求的数量,固定时间段默认为1min,将固定时间段内访问请求的数量与用户提前的设定的访问请求最大阈值进行大小比较,其中访问请求最大阈值由服务器的性能和网络情况决定,若是固定时间段内访问请求的数量大于用户提前的设定的访问请求最大阈值,说明此时服务器出现了高并发的情况,进入S2;若是固定时间段内访问请求的数量不大于用户提前的设定的访问请求最大阈值,说明此时服务器处理的访问请求数量处于服务器可接受范围内,将访问请求通过业务分析层和负载均衡服务器输入至对应的数据处理服务器中的本地消息队列进行存储。
业务分析层内置深度学习分类器V2,深度学习分类器V2根据访问请求的文本信息特征将访问请求分类成不同的请求类型,将经过业务分析层的访问请求用请求类型进行标记;把各项访问请求分门别类的区分出来,以便后续的处理,能够更加明确业务的具体内容,从而减小后续处理过程中的大量数据的判断,增大数据处理的效率,进入S3;例如在处理HTTP请求时,请求类型包括GET请求、POST请求、HEAD请求、PUT请求、DELETE请求、CONNECT请求、TRACE请求和OPTIONS请求,其中GET请求为向服务器请求指定的内容;POST请求为在服务器内创建新的实体资源;HEAD请求为向服务器请求指定内容的头部;PUT请求用于更新服务器内部的内容;DELETE请求用于删除服务器内部指定的内容;CONNECT请求用于建立资源间的链接;TRACE请求用于测试服务器接收的内容;OPTIONS请求用于检测客户端支持的请求类型。
将访问请求送入负载均衡服务器中,负载服务器根据每个访问请求对应的请求类型将访问请求分流至对应的数据处理服务器,数据处理服务器由用户根据不同请求类型进行设置,使得每个数据处理服务器能够处理对应请求类型的访问请求或者立即处理请求。
数据处理服务器内置本地消息队列,当不同请求类型的访问请求分流至对应的数据处理服务器时,同一请求类型的访问请求添加至对应数据处理服务器内部的本地消息队列中进行存储,访问请求在本地消息队列中的存储形式为队列;本地消息队列初始空间大小为,/>指对应本地消息队列能存储的访问请求数量,/>由用户根据对应数据处理服务器的处理能力进行设定;由于访问请求是不断地进行输入,所以通过本地消息队列对访问请求进行暂存,避免后续对访问请求处理不及时导致访问请求堆积,进而导致访问请求丢失出现网络访问错误,影响用户的使用体验。
数据处理服务器从内部的本地消息队列获取访问请求,并进行对应处理,例如GET请求,数据处理服务器根据访问请求查找并获取对应内容,然后根据GET请求的客户端信息将获取的内容反馈到对应的客户端处。
S2:将访问请求逐个输入到深度学习分类器V1中,根据文本信息特征将访问请求分类成立即处理请求和延时处理请求,立即处理请求为重要程度较高并且需要马上处理的访问请求,例如用户登录、用户检索、用户付款等;延时处理请求为重要程度低且不需要马上进行回应的访问请求,例如用户信息录入、浏览状态的录入等;将立即处理请求添加至业务分析消息队列,进入S3;将延时处理请求添加至待处理消息队列/>,进入S4。
文本信息特征通过对访问请求中的请求内容进行word2vec学习,得到对应词向量,深度学习分类器V1中采用的深度信息模型为MLP。
S3:获取业务分析消息队列,将业务分析消息队列/>中的立即处理请求送入业务分析层,业务分析层内置深度学习分类器V2,深度学习分类器V2根据立即处理请求的文本信息特征将立即处理请求分类成不同的请求类型,将经过业务分析层的立即处理请求用请求类型进行标记,将立即处理请求送入负载均衡服务器中,负载服务器根据每个立即处理请求对应的请求类型将立即处理请求分流至对应的数据处理服务器,在对应的数据处理服务器中的本地消息队列进行存储,数据处理服务器由用户根据不同请求类型进行设置,使得每个数据处理服务器能够处理对应请求类型的立即处理请求或者立即处理请求,数据处理服务器从内部的本地消息队列获取立即处理请求,并进行对应处理。
S4:获取待处理消息队列,持续监测获取的访问请求,并依次按固定时间段计算访问请求的数量,固定时间段默认为1min,将固定时间段内访问请求的数量与用户提前的设定的访问请求最大阈值进行大小比较,当固定时间段内访问请求的数量不大于用户提前的设定的访问请求最大阈值,说明此时服务器处理的访问请求数量处于服务器可接受范围内,从待处理消息队列/>中逐个提取延时处理请求随机***至此固定时间段内获取的访问请求中,特别地,在***过程,若是待处理消息队列/>中的延时处理请求足够多,可以直接将此固定时间段内的访问请求补齐至访问请求最大阈值,再将访问请求通过业务分析层和负载均衡服务器输入至对应的数据处理服务器中的本地消息队列进行存储,;否则无操作。
本发明通过设置访问请求最大阈值来检测高并发的访问请求数据,并且将并发的访问请求数据进行分类,将重要程度较高并且需要马上处理的立即处理请求送入数据处理服务器进行存储并且优先处理,将重要程度低且不需要马上进行回应的延时处理请求延后处理,减少高并发时服务器的压力,降低了处理的混乱程度,实现了有序高效的处理。
当出现高并发数据时,输送至数据处理服务器的立即处理请求数量可能会超过该数据处理服务器内部本地消息队列初始空间大小,多余的立即处理请求可能会由于未定义的存储位置导致丢失,因此需要对数据处理服务器内部本地消息队列的空间大小进行调整,具体步骤如下:
T1:获取本地消息队列内部立即处理请求的数量。
T2:判断“”是否成立,其中/>为剩余空间阈值,由用户根据数据处理服务器的处理能力进行设定,数据处理服务器的处理能力越强,对应的剩余空间阈值/>越小;若是“/>”成立,说明当前数据处理服务器内部的本地消息队列内的立即处理请求接近初始空间大小/>,此时需要扩充对应的本地消息队列的空间大小,进入T3;若是“/>”不成立,说明当前数据处理服务器内部的本地消息队列内的立即处理请求并未接近初始空间大小/>,进入T4。
T3:将对应的本地消息队列的空间大小由扩充至/>,/>为扩充空间大小,/>根据对应数据处理服务器历史经历过的高并发数据时间段内的实际立即处理请求数量进行确定,进入T4。
T4:间隔预设时间获取本地消息队列内部立即处理请求的数量/>,预设时间/>由用户根据传输至服务器的网络传输速率确定,回到T2。
本发明通过对输入数据处理服务器的立即处理请求数量进行监测,若是输入数据处理服务器的立即处理请求数量接近该数据处理服务器内部本地消息队列初始空间大小,将对应的本地消息队列的空间进行扩充,避免多余的立即处理请求可能会由于未定义的存储位置导致丢失。
在上述***将访问请求分类为重要程度较高并且需要马上处理的立即处理请求时,这时的立即处理请求可能还会存在处理时间长的问题,当所有数据处理服务器都在处理这些处理时间长的立即处理请求时,会造成网站网络服务的停滞,造成不好的用户体验,因此需要将那些处理时间长的立即处理请求间隔的送入至数据处理服务器进行存储,对输入至本地消息队列的立即处理请求进行重新排序,具体步骤如下:
H1:获取业务分析消息队列Q1,并获取业务分析消息队列Q1中的立即处理请求,记为。
H2:遍历处理复杂程度过滤层内部存储的立即处理请求,通过TF-IDF算法计算立即处理请求与复杂程度过滤层内部存储的所有立即处理请求的相似度/>,,其中/>为复杂程度过滤层内部存储的所有立即处理请求个数。
H3:遍历所有相似度,判断是否有“/>”成立的情况,其中/>为相似度阈值,若是有“/>”成立的情况,说明立即处理请求/>处理时间也是较长的,进入H4;若是无“”成立的情况,说明立即处理请求/>处理时间在正常范围内,进入H5。
H4:将立即处理请求存入滞后处理队列/>,并将立即处理请求/>从业务分析消息队列Q1中删除,进入H5。
H5:判断业务分析消息队列Q1中的立即处理请求是否被全部选取,若是业务分析消息队列Q1中的立即处理请求未被全部选取,获取业务分析消息队列Q1中的下一个立即处理请求,记为,回到H2;若是业务分析消息队列Q1中的立即处理请求被全部选取,进入H6。
H6:将滞后处理队列中的立即处理请求均匀***至业务分析消息队列Q1,再将获得的业务分析消息队列/>中的立即处理请求通过业务分析层和负载均衡服务器输入至对应的数据处理服务器中的本地消息队列进行存储。
所述步骤H2中的处理复杂程度过滤层的生成包括如下步骤:
M1:当数据处理服务器处理立即处理请求时,获取对立即处理请求处理的处理时间。
M2:判断“”是否成立,其中/>为处理时间阈值,默认为5s,用户可以进行自行设定,若是“/>”成立,说明对应的立即处理请求处理时间过长,进入M3;若是“/>”不成立,说明对应的立即处理请求处理时间在正常范围内,进入M4。
M3:复制对应的立即处理请求添加至处理复杂程度过滤层中,处理复杂程度过滤层提前进行设定,并且初始为空,进入M4。
M4:获取下一个立即处理请求处理的处理时间,回到M2。
当处理复杂程度过滤层内部不为空开始,对立即处理请求进行过滤,具体包括如下步骤:
本发明通过监测立即处理请求的处理时间,将处理时间过长的立即处理请求提取出来,并以此筛选出类似的处理时间过长的立即处理请求,并将处理时间过长的立即处理请求间隔分布在业务分析消息队列中,避免所有数据处理服务器都在处理这些处理时间长的立即处理请求时,造成网站网络服务的停滞,进而造成不好的用户体验。
实施例2
一种高并发数据存储***,如图1所示,包括:
访问请求监测模块,用于监测获取的访问请求,并判断固定时间段内访问请求的数量与用户提前的设定的访问请求最大阈值之间的大小关系;
业务分析模块,用于存储深度学习分类器V2,对访问请求进行分析和分类;
请求分流模块,用于存储负载均衡服务器,根据业务分析模块的结果将访问请求进行分流;
数据处理模块,用于存储数据处理服务器,处理对应访问请求,数据处理服务器内置本地消息队列;
访问请求分类模块,用于存储深度学习分类器V1,将访问请求分成立即处理请求和延时处理请求;
业务分析消息队列存储模块,用于存储立即处理请求;
待处理消息队列存储模块,用于存储延时处理请求。
为了实现对数据处理服务器内部本地消息队列的空间大小进行调整,如图1所示,本***还包括:
立即处理请求数量获取模块,用于获取本地消息队列内部立即处理请求的数量;
立即处理请求数量判断模块,用于判断输入数据处理服务器的立即处理请求数量是否接近该数据处理服务器内部本地消息队列初始空间大小;
本地消息队列空间扩充模块,用于扩充本地消息队列空间大小;
为了实现调整处理时间长的立即处理请求,如图1所示,本***还包括:
处理复杂程度过滤层管理模块,用于生成和存储处理复杂程度过滤层;
立即处理请求重排序模块,用于对对输入至本地消息队列的立即处理请求进行重新排序。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。本说明书中未作详细描述的部分属于本领域专业技术人员公知的现有技术。