[发明专利]高并发数据存储方法及计算机可读存储介质在审
申请号: | 201711406104.2 | 申请日: | 2017-12-22 |
公开(公告)号: | CN108170758A | 公开(公告)日: | 2018-06-15 |
发明(设计)人: | 刘德建;陈来件;欧宁;李永均;郭玉湖 | 申请(专利权)人: | 福建天泉教育科技有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 福州市博深专利事务所(普通合伙) 35214 | 代理人: | 林志峥 |
地址: | 350212 福建省福州市长乐*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 缓冲区 写入 空闲缓冲区队列 缓冲区队列 线程池 计算机可读存储介质 并发 数据存储 队列 队列缓冲区 获取系统 继续执行 节省系统 时间查看 无锁 线程 预设 创建 取出 生产 | ||
本发明公开了一种高并发数据存储方法及计算机可读存储介质,方法包括:创建多个无锁并发队列缓冲区;创建空闲缓冲区队列和待消费缓冲区队列;从空闲缓冲区队列中选取一缓冲区作为写入缓冲区;根据预设的周期时间查看写入缓冲区,若有数据写入,则将写入缓冲区加入至待消费缓冲区队列;继续执行从空闲缓冲区队列中选取一缓冲区作为写入缓冲区的步骤;将待消费缓冲区队列中的缓冲区加入至线程池队列;线程池中的线程依次从所述线程池队列中取出一缓冲区进行消费。本发明可明确获取系统的负载情况、数据的生产和消费速度,同时可节省系统资源。
技术领域
本发明涉及数据存储技术领域,尤其涉及一种高并发数据存储方法及计算机可读存储介质。
背景技术
现有的高并发数据存储方案,使用并发队列来缓存数据。对于并发队列进行数据分片,这里的分片策略可以根据时间或者主键的特性(如取模、hash)将队列中的数据划分。再将分片后的数据交由线程池进行多线程消费。消费的含义为:将数据传输给下游组件,比如将数据传输至数据库存储或者如Kafka等消息中间件。
但上述方案存在以下缺点:
1、单一的高并发队列,无法明确的获取到系统的负载情况、数据的生产和消费速度。
2、对数据队列的分片操作,无论采用何种分片策略,都将消耗一定的资源;如根据数据的主键进行hash,就必须对所有的数据的主键进行hash操作。
发明内容
本发明所要解决的技术问题是:提供一种高并发数据存储方法及计算机可读存储介质,可明确获取系统的负载情况、数据的生产和消费速度,同时可节省系统资源。
为了解决上述技术问题,本发明采用的技术方案为:一种高并发数据存储方法,包括:
创建多个无锁并发队列缓冲区;
创建空闲缓冲区队列和待消费缓冲区队列,所述空闲缓冲区队列用于存储空闲的缓冲区,所述待消费缓冲区队列用于存储待消费的缓冲区;
从所述空闲缓冲区队列中选取一缓冲区作为写入缓冲区;
根据预设的周期时间查看所述写入缓冲区,若有数据写入,则将所述写入缓冲区加入至待消费缓冲区队列;
继续执行所述从所述空闲缓冲区队列中选取一缓冲区作为写入缓冲区的步骤;
将待消费缓冲区队列中的缓冲区加入至线程池队列;
线程池中的线程依次从所述线程池队列中取出一缓冲区进行消费。
本发明还涉及一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现以下步骤:
创建多个无锁并发队列缓冲区;
创建空闲缓冲区队列和待消费缓冲区队列,所述空闲缓冲区队列用于存储空闲的缓冲区,所述待消费缓冲区队列用于存储待消费的缓冲区;
从所述空闲缓冲区队列中选取一缓冲区作为写入缓冲区;
根据预设的周期时间查看所述写入缓冲区,若有数据写入,则将所述写入缓冲区加入至待消费缓冲区队列;
继续执行所述从所述空闲缓冲区队列中选取一缓冲区作为写入缓冲区的步骤;
将待消费缓冲区队列中的缓冲区加入至线程池队列;
线程池中的线程依次从所述线程池队列中取出一缓冲区进行消费。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于福建天泉教育科技有限公司,未经福建天泉教育科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711406104.2/2.html,转载请声明来源钻瓜专利网。