[发明专利]读写均衡的阻塞队列实现方法及装置有效
申请号: | 201410168357.0 | 申请日: | 2014-04-24 |
公开(公告)号: | CN103970597B | 公开(公告)日: | 2017-06-20 |
发明(设计)人: | 刘言军 | 申请(专利权)人: | 烽火通信科技股份有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46 |
代理公司: | 北京捷诚信通专利事务所(普通合伙)11221 | 代理人: | 魏殿绅,庞炳良 |
地址: | 430074 湖北省武*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 读写 均衡 阻塞 队列 实现 方法 装置 | ||
技术领域
本发明涉及计算机软件编程领域,具体是涉及一种读写均衡的阻塞队列实现方法及装置。
背景技术
随着软件行业的发展,越来越多的大数据量、高并发的软件系统产生,随着数据量的增加,越来越多的性能压力逼近,怎么才能在有限的硬件资源情况下,来更高效率的、更平滑的处理软件系统数据呢?
目前行业中最常用的方法是通过增加服务器,分布式集群部署来缓解服务软件处理压力,这样从硬件层面上解决了问题,但是对软件的经济费用投入就有大幅度增加,且增加集群后数据的同步安全性压力也相对增加。怎么在有限的资源下,尽可能处理更多的事情,并保证系统的稳定性不因数据量的增加而下降,这是一个亟待解决的问题。
发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种读写均衡的阻塞队列实现方法及装置,能够有效缓解突发性、非连续性、非定量性大批量数据处理压力,简化数据队列调用逻辑,去除通用多线程轮询数据的风险,显著提高应用程序处理突发性大数据量的稳定性。
本发明提供一种读写均衡的阻塞队列实现方法,包括以下步骤:
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条数据添加到同步的阻塞队列后,添加数据步骤完成,释放队列的同步锁,保证该队列能被其他线程调用;程序继续增加、循环添加,或者放弃增加,完成添加;程序放弃继续添加,添加结束;
所述读取单元,用于:从同步的阻塞队列读取数据:
向同步的阻塞队列读取数据;在多线程情况下,尝试获取队列的同步锁;获取队列的同步锁后,如果同步的阻塞队列中的数据为空,那么表示没有数据,继续等待以获取数据入口,直到同步的阻塞队列中依照添加单元添加数据;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于烽火通信科技股份有限公司,未经烽火通信科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410168357.0/2.html,转载请声明来源钻瓜专利网。