The invention discloses a method and a device for accessing data files. The method includes: data files are stored into the first storage space and a second storage space; whenever update instructions received for updating a data file, will be updated to the preset instructions stored in the message queue; the first storage space as read storage space, and the second storage space as update storage space; when meet the storage space switching condition preset, the current read storage space switch to update the storage space, storage space and will update the current switching for reading storage space; the storage space for processing read from the user read requests to update the storage space for updates according to the update instructions stored in the message queue. The invention realizes complete lock free on the basis of double storage space, improves the concurrent number of users, and simultaneously stores the updating instructions by using the message queue, thereby avoiding the abuse of copying a large amount of invalid data.
【技术实现步骤摘要】
数据文件的存取方法及装置
本专利技术涉及通信
,具体涉及一种数据文件的存取方法及装置。
技术介绍
在并发环境中,常常会出现对数据文件同时进行读操作与写操作的情况,在此种情况下容易引发数据的丢失更新、脏读、不可重复读取等问题。为解决这一问题,技术人员常常采用加锁的方式来保证任务的顺利进行。但是,专利技术人在实现本专利技术的过程中发现,现有技术中的上述方式至少存在下述缺陷:采用加锁的方式会大大降低并发数,影响系统的吞吐量,降低系统处理任务的效率。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的数据文件的存取方法及装置。根据本专利技术的一个方面,提供了一种数据文件的存取方法,其包括:将数据文件分别存储到第一存储空间和第二存储空间中;每当接收到用于更新所述数据文件的更新指令时,将所述更新指令存储到预设的消息队列中;将所述第一存储空间作为读取存储空间,并将所述第二存储空间作为更新存储空间;每当预设的存储空间切换条件满足时,将当前的读取存储空间切换为更新存储空间,并将当前的更新存储空间切换为读取存储空间;其中,读取存储空间用于处理来自用户的读取请求,更新存储空间用于根据所述消息队列中存储的更新指令进行更新。根据本专利技术的另一个方面,提供了一种数据文件的存取装置,其包括:数据存储模块,适于将数据文件分别存储到第一存储空间和第二存储空间中;将所述第一存储空间作为读取存储空间,并将所述第二存储空间作为更新存储空间;指令存储模块,适于每当接收到用于更新所述数据文件的更新指令时,将所述更新指令存储到预设的消息队列中;切换模块 ...
【技术保护点】
一种数据文件的存取方法,包括:将数据文件分别存储到第一存储空间和第二存储空间中;每当接收到用于更新所述数据文件的更新指令时,将所述更新指令存储到预设的消息队列中;将所述第一存储空间作为读取存储空间,并将所述第二存储空间作为更新存储空间;每当预设的存储空间切换条件满足时,将当前的读取存储空间切换为更新存储空间,并将当前的更新存储空间切换为读取存储空间;其中,读取存储空间用于处理来自用户的读取请求,更新存储空间用于根据所述消息队列中存储的更新指令进行更新。
【技术特征摘要】
1.一种数据文件的存取方法,包括:将数据文件分别存储到第一存储空间和第二存储空间中;每当接收到用于更新所述数据文件的更新指令时,将所述更新指令存储到预设的消息队列中;将所述第一存储空间作为读取存储空间,并将所述第二存储空间作为更新存储空间;每当预设的存储空间切换条件满足时,将当前的读取存储空间切换为更新存储空间,并将当前的更新存储空间切换为读取存储空间;其中,读取存储空间用于处理来自用户的读取请求,更新存储空间用于根据所述消息队列中存储的更新指令进行更新。2.根据权利要求1所述的方法,其中,进一步包括步骤:通过预设的第一消费端和第二消费端订阅所述消息队列;其中,所述第一消费端负责在所述第一存储空间作为更新存储空间时,根据所述消息队列中的更新指令对所述第一存储空间进行更新;所述第二消费端负责在所述第二存储空间作为更新存储空间时,根据所述消息队列中的更新指令对所述第二存储空间进行更新。3.根据权利要求2所述的方法,其中,每当所述第一存储空间切换为更新存储空间时,所述第一消费端根据预设的第一消费偏移消费所述消息队列中的更新指令;并且,每当所述第一存储空间切换为读取存储空间时,所述第一消费端根据当前偏移信息更新所述第一消费偏移;每当所述第二存储空间切换为更新存储空间时,所述第二消费端根据预设的第二消费偏移消费所述消息队列中的更新指令;并且,每当所述第二存储空间切换为读取存储空间时,所述第二消费端根据当前偏移信息更新所述第二消费偏移。4.根据权利要求1-3任一所述的方法,其中,所述预设的存储空间切换条件包括:当前时间点与上一次切换读取存储空间和更新存储空间的时间点之间的间隔达到预设时间;和/或...
【专利技术属性】
技术研发人员:朱超,
申请(专利权)人:北京奇虎科技有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。