读写均衡的阻塞队列实现方法及装置制造方法及图纸

技术编号:15660394 阅读:115 留言:0更新日期:2017-06-21 10:06
本发明专利技术公开了一种读写均衡的阻塞队列实现方法及装置,涉及计算机软件编程领域,该方法包括以下步骤:向队列中添加N条数据,尝试获取队列的同步锁;确定同步的阻塞队列是否能增加N条数据,若增加N条数据后,队列超出最大设置范围,则继续等待,直到队列允许添加N条记录;若N超过队列最大长度,则队列抛出异常;将N条数据添加到同步的阻塞队列后,添加数据步骤完成,释放队列的同步锁;继续增加或放弃增加,完成添加步骤;放弃继续添加,添加流程结束。本发明专利技术能有效缓解突发性、非连续性、非定量性大批量数据处理压力,简化数据队列调用逻辑,去除通用多线程轮询数据的风险,提高应用程序处理突发性大数据量的稳定性。

【技术实现步骤摘要】
读写均衡的阻塞队列实现方法及装置
本专利技术涉及计算机软件编程领域,具体是涉及一种读写均衡的阻塞队列实现方法及装置。
技术介绍
随着软件行业的发展,越来越多的大数据量、高并发的软件系统产生,随着数据量的增加,越来越多的性能压力逼近,怎么才能在有限的硬件资源情况下,来更高效率的、更平滑的处理软件系统数据呢?目前行业中最常用的方法是通过增加服务器,分布式集群部署来缓解服务软件处理压力,这样从硬件层面上解决了问题,但是对软件的经济费用投入就有大幅度增加,且增加集群后数据的同步安全性压力也相对增加。怎么在有限的资源下,尽可能处理更多的事情,并保证系统的稳定性不因数据量的增加而下降,这是一个亟待解决的问题。
技术实现思路
本专利技术的目的是为了克服上述
技术介绍
的不足,提供一种读写均衡的阻塞队列实现方法及装置,能够有效缓解突发性、非连续性、非定量性大批量数据处理压力,简化数据队列调用逻辑,去除通用多线程轮询数据的风险,显著提高应用程序处理突发性大数据量的稳定性。本专利技术提供一种读写均衡的阻塞队列实现方法,包括以下步骤:A、向同步的阻塞队列添加数据:步骤101、程序向同步的阻塞队列中添加N条数据,N为正整数;步骤102、在多线程情况下,尝试获取队列的同步锁;步骤103、获取队列的同步锁后,确定同步的阻塞队列是否能增加N条数据,如果增加N条数据后,队列超出最大设置范围,则继续等待,直到队列允许添加N条记录;如果N超过队列最大长度,则队列抛出异常;步骤104、将N条数据添加到同步的阻塞队列后,添加数据步骤完成,释放队列的同步锁,保证该队列能被其他线程调用;步骤105、程序继续增加、循环添加;或者放弃增加,完成添加步骤;步骤106、程序放弃继续添加,添加流程结束;B、从同步的阻塞队列读取数据:步骤201、程序向同步的阻塞队列读取数据;步骤202、在多线程情况下,尝试获取队列的同步锁;步骤203、获取队列的同步锁后,如果同步的阻塞队列中的数据为空,那么表示没有数据,继续等待以获取数据入口,直到同步的阻塞队列中依照步骤A添加数据;步骤204、在同步的阻塞队列有数据的情况下,从该队列中一次性获取“最大数目”条数据,所述“最大数目”是队列定义的参数:一次性批量获取的最大数据条目数;如果队列中数据少于“最大数目”条,则返回队列所有的数据,锁条件等待最小粒度时间“最小时间间隔”毫秒,再释放队列的同步锁;所述“最小时间间隔”是队列定义的参数:在队列非堵塞的情况下,两次获取数据之间的最小时间间隔;如果超过“最大数目”条数据,则返回“最大数目”条数据,锁条件等待“平均时间间隔”,再释放队列的同步锁;所述“平均时间间隔”是队列定义的参数:在队列数据拥堵的情况下,两次获取数据之间的平均时间间隔;步骤205、程序继续读取数据,或者放弃读取,完成读取步骤;步骤206、程序放弃继续读取,读取流程结束;步骤A在步骤B之前或者之后。本专利技术还提供一种应用上述方法的读写均衡的阻塞队列实现装置,包括添加单元和读取单元,其中:所述添加单元,用于:向同步的阻塞队列添加数据:向同步的阻塞队列中添加N条数据,N为正整数;在多线程情况下,尝试获取队列的同步锁;获取队列的同步锁后,确定同步的阻塞队列是否能增加N条数据,如果增加N条数据后,队列超出最大设置范围,则继续等待,直到队列允许添加N条记录;如果N超过队列最大长度,则队列抛出异常;将N条数据添加到同步的阻塞队列后,添加数据步骤完成,释放队列的同步锁,保证该队列能被其他线程调用;程序继续增加、循环添加,或者放弃增加,完成添加;程序放弃继续添加,添加结束;所述读取单元,用于:从同步的阻塞队列读取数据:向同步的阻塞队列读取数据;在多线程情况下,尝试获取队列的同步锁;获取队列的同步锁后,如果同步的阻塞队列中的数据为空,那么表示没有数据,继续等待以获取数据入口,直到同步的阻塞队列中依照添加单元添加数据;在同步的阻塞队列有数据的情况下,从该队列中一次性获取“最大数目”条数据,所述“最大数目”是队列定义的参数:一次性批量获取的最大数据条目数;如果队列中数据少于“最大数目”条,则返回队列所有的数据,锁条件等待最小粒度时间“最小时间间隔”毫秒,再释放队列的同步锁;所述“最小时间间隔”是队列定义的参数:在队列非堵塞的情况下,两次获取数据之间的最小时间间隔;如果超过“最大数目”条数据,则返回“最大数目”条数据,锁条件等待“平均时间间隔”,再释放队列的同步锁,所述“平均时间间隔”是队列定义的参数:在队列数据拥堵的情况下,两次获取数据之间的平均时间间隔;继续读取数据;或者放弃读取,完成读取;放弃继续读取,读取结束。与现有技术相比,本专利技术的优点如下:(1)本专利技术通过异步消息队列排队处理,降低大数据量的突然来临所带来的压力,能够有效缓解突发性、非连续性、非定量性大批量数据处理压力。(2)本专利技术通过批量的添加、读取数据入口,来满足数据量多的情况下分拆处理,数据量小的情况下汇总处理,有效增加数据处理的平滑度。(3)本专利技术通过同步锁和锁条件,来替代通用的轮询、线程等待等实现方案,能够有效节约程序资源。(4)本专利技术能够简化数据队列调用逻辑,去除通用多线程轮询数据的风险,显著提高应用程序处理突发性大数据量的稳定性。附图说明图1是本专利技术实施例中向队列添加数据的流程图。图2是本专利技术实施例中从队列读取数据的流程图。具体实施方式下面结合附图及具体实施例对本专利技术作进一步的详细描述。本专利技术实施例提供一种读写均衡的阻塞队列实现方法,包括以下步骤:A、参见图1所示,向同步的阻塞队列添加数据:步骤101、程序向同步的阻塞队列中添加N条数据,N为正整数;步骤102、在多线程情况下,为了保证数据的完整性和正确性,尝试获取队列的同步锁;步骤103、获取队列的同步锁后,需要确定同步的阻塞队列是否能增加N条数据,如果增加N条数据后,队列超出最大设置范围,则程序会运行异常,所以需要继续等待,直到队列允许添加N条记录;如果N超过队列最大长度,则永远无法添加到队列当中,队列会抛出异常;步骤104、将N条数据添加到同步的阻塞队列后,添加数据步骤完成,释放队列的同步锁,保证该队列能被其他线程调用;步骤105、程序可以继续增加,循环添加;也可以放弃增加,完成添加步骤;步骤106、程序放弃继续添加,添加流程结束。B、参见图2所示,从同步的阻塞队列读取数据:步骤201、程序向同步的阻塞队列读取数据;步骤202、在多线程情况下,为了保证数据的完整性和正确性,尝试获取队列的同步锁;步骤203、获取队列的同步锁后,如果同步的阻塞队列中的数据为空,那么表示没有数据,继续等待以获取数据入口,直到同步的阻塞队列中依照步骤A添加数据;步骤204、在同步的阻塞队列有数据的情况下,从该队列中一次性获取“最大数目”(队列定义的参数:一次性批量获取的最大数据条目数)条数据,如果队列中数据少于“最大数目”条,则返回队列所有的数据,锁条件等待最小粒度时间“最小时间间隔”(队列定义的参数:在队列非堵塞的情况下,两次获取数据之间的最小时间间隔)毫秒,再释放队列的同步锁;如果超过“最大数目”条数据,则返回“最大数目”条数据,锁条件等待“平均时间间隔”(队列定义的参数:在队列数据拥堵的情况下,两次获取数据之间的平均时间间隔),再释本文档来自技高网...
读写均衡的阻塞队列实现方法及装置

【技术保护点】
一种读写均衡的阻塞队列实现方法,其特征在于,包括以下步骤:A、向同步的阻塞队列添加数据:步骤101、程序向同步的阻塞队列中添加N条数据,N为正整数;步骤102、在多线程情况下,尝试获取队列的同步锁;步骤103、获取队列的同步锁后,确定同步的阻塞队列是否能增加N条数据,如果增加N条数据后,队列超出最大设置范围,则继续等待,直到队列允许添加N条记录;如果N超过队列最大长度,则队列抛出异常;步骤104、将N条数据添加到同步的阻塞队列后,添加数据步骤完成,释放队列的同步锁,保证该队列能被其他线程调用;步骤105、程序继续增加、循环添加;或者放弃增加,完成添加步骤;步骤106、程序放弃继续添加,添加流程结束;B、从同步的阻塞队列读取数据:步骤201、程序向同步的阻塞队列读取数据;步骤202、在多线程情况下,尝试获取队列的同步锁;步骤203、获取队列的同步锁后,如果同步的阻塞队列中的数据为空,那么表示没有数据,继续等待以获取数据入口,直到同步的阻塞队列中依照步骤A添加数据;步骤204、在同步的阻塞队列有数据的情况下,从该队列中一次性获取“最大数目”条数据,所述“最大数目”是队列定义的参数:一次性批量获取的最大数据条目数;如果队列中数据少于“最大数目”条,则返回队列所有的数据,锁条件等待最小粒度时间“最小时间间隔”毫秒,再释放队列的同步锁;所述“最小时间间隔”是队列定义的参数:在队列非堵塞的情况下,两次获取数据之间的最小时间间隔;如果超过“最大数目”条数据,则返回“最大数目”条数据,锁条件等待“平均时间间隔”,再释放队列的同步锁;所述“平均时间间隔”是队列定义的参数:在队列数据拥堵的情况下,两次获取数据之间的平均时间间隔;步骤205、程序继续读取数据,或者放弃读取,完成读取步骤;步骤206、程序放弃继续读取,读取流程结束;步骤A在步骤B之前或者之后。...

【技术特征摘要】
1.一种读写均衡的阻塞队列实现方法,其特征在于,包括以下步骤:A、向同步的阻塞队列添加数据:步骤101、程序向同步的阻塞队列中添加N条数据,N为正整数;步骤102、在多线程情况下,尝试获取队列的同步锁;步骤103、获取队列的同步锁后,确定同步的阻塞队列是否能增加N条数据,如果增加N条数据后,队列超出最大设置范围,则继续等待,直到队列允许添加N条记录;如果N超过队列最大长度,则队列抛出异常;步骤104、将N条数据添加到同步的阻塞队列后,添加数据步骤完成,释放队列的同步锁,保证该队列能被其他线程调用;步骤105、程序继续增加、循环添加;或者放弃增加,完成添加步骤;步骤106、程序放弃继续添加,添加流程结束;B、从同步的阻塞队列读取数据:步骤201、程序向同步的阻塞队列读取数据;步骤202、在多线程情况下,尝试获取队列的同步锁;步骤203、获取队列的同步锁后,如果同步的阻塞队列中的数据为空,那么表示没有数据,继续等待以获取数据入口,直到同步的阻塞队列中依照步骤A添加数据;步骤204、在同步的阻塞队列有数据的情况下,从该队列中一次性获取“最大数目”条数据,所述“最大数目”是队列定义的参数:一次性批量获取的最大数据条目数;如果队列中数据少于“最大数目”条,则返回队列所有的数据,锁条件等待最小粒度时间“最小时间间隔”毫秒,再释放队列的同步锁;所述“最小时间间隔”是队列定义的参数:在队列非堵塞的情况下,两次获取数据之间的最小时间间隔;如果超过“最大数目”条数据,则返回“最大数目”条数据,锁条件等待“平均时间间隔”,再释放队列的同步锁;所述“平均时间间隔”是队列定义的参数:在队列数据拥堵的情况下,两次获取数据之间的平均时间间隔;步骤205、程序继续读取数据,或者放弃读取,完成读取步骤;步骤2...

【专利技术属性】
技术研发人员:刘言军
申请(专利权)人:烽火通信科技股份有限公司
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1