CN113986981A - 一种数据同步方法及装置 - Google Patents
一种数据同步方法及装置 Download PDFInfo
- Publication number
- CN113986981A CN113986981A CN202111334163.XA CN202111334163A CN113986981A CN 113986981 A CN113986981 A CN 113986981A CN 202111334163 A CN202111334163 A CN 202111334163A CN 113986981 A CN113986981 A CN 113986981A
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- request
- queue
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 230000008569 process Effects 0.000 claims description 12
- 238000004891 communication Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 6
- 230000002159 abnormal effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据同步方法及装置,需要在应用服务器部署多服务实例的请求路由,接收用户发送的数据请求(读取数据请求或更新数据请求);若为读取数据请求,则生成第一队列(为刷新缓存的任务路由到刷新缓存的队列);根据第一预设规则先从缓存中获取对应的数据,当缓存中的数据过期或被清除时,从数据库中获取对应的数据,并异步存储至缓存中;若为更新数据请求,则生成第二队列(更新数据库的请求路由到更新数据库的队列);根据第二预设规则对缓存和数据库中的数据进行数据同步。本申请在不引入新的中间件的前提下,通过数据库与缓存更新与读取操作异步串行化,解决了在高并发场景下,缓存与数据库数据的不一致带来的用户体验差的问题。
Description
技术领域
本申请涉及互联网数据处理技术领域,特别的,尤其涉及一种数据同步方法及装置。
背景技术
随着互联网用户不断增长,关系型数据库的性能瓶颈凸显,因此,缓存成为突破该问题的一个重要中间件。但是缓存多基于内存,而内存是昂贵的,为此,不可能将整个数据库的数据都存储到缓存,在数据库发生变更,同步到缓存时,先修改数据库,再更新缓存,若更新缓存失败了,那么会发生数据库中是新数据,而缓存中是旧数据,很容易造成缓存与数据库数据不一致,影响用户体验甚至给公司造成财产损失。
为了避免缓存与数据库数据的不一致,目前常见处理方式是先删除缓存,再修改数据库,若删除缓存成功了,且修改数据库失败了,那么数据库中依然保存有旧数据,而缓存中是空的,因此,读取数据的时候若缓存中没有,则读取数据库中的旧数据,然后再更新到缓存中,从而,可以避免缓存与数据库数据的不一致。但是在高并发场景下,数据库数据变更同步到缓存,仍然无法避免缓存与数据库数据的不一致带来的用户体验差。
发明内容
鉴于上述内容中的问题,本申请提供了一种数据同步方法及装置,通过数据库与缓存更新与读取操作异步串行化,解决在高并发场景下,缓存与数据库数据的不一致带来的用户体验差的问题。
为了实现上述目的,本申请提供了以下技术方案:
一种数据同步方法,在应用服务器部署多服务实例的请求路由,该方法包括:
接收用户发送的数据请求,所述数据请求为读取数据请求或更新数据请求;
若所述数据请求为读取数据请求,则生成第一队列,所述第一队列为刷新缓存的任务路由到刷新缓存的队列;
根据第一预设规则先从所述缓存中获取对应的数据,当所述缓存中的数据过期或被清除时,从数据库中获取对应的数据,并异步存储至所述缓存中;
若所述数据请求为更新数据请求,则生成第二队列,所述第二队列为更新所述数据库的请求路由到更新数据库的队列;
根据第二预设规则对所述缓存和所述数据库中的数据进行数据同步。
进一步的,在所述接收用户发送的数据请求后,还包括:
根据数据的唯一标识,将所述数据请求发送至java虚拟机的预设队列中,每个预设队列对应一个工作线程,且每个工作线程串行处理对应的操作。
进一步的,还包括:
对所述预设队列中的所述数据请求进行去重,保证所述预设队列中仅包含一个更新缓存的数据请求。
进一步的,还包括:
判断所述数据请求的是否在预设等待时间范围内,若是,则轮询获取对应的数据;
若否,则读取所述数据库中的当前值。
进一步的,所述根据第二预设规则对所述缓存和所述数据库中的数据进行数据同步,包括:
若所述预设队列中的任务为更新数据库中的任务,则将更新状态设置为待更新,所述预设队列中新的一条刷新缓存任务将会刷新缓存,对应的删除所述缓存中的数据,并更新所述数据库;
若所述预设队列中的任务为刷新缓存的任务,则若更新状态为设置,则初始化为已更新,对应的执行查询所述数据库,并更新所述缓存中的数据;
若更新状态为待更新,则将状态设置为已更新,对应的执行查询所述数据库,并更新所述缓存中的数据;
若更新状态为已更新,则说明所述缓存已更新或者有任务正在执行,结束所述缓存和所述数据库中的数据的同步。
一种数据同步装置,在应用服务器部署多服务实例的请求路由,该装置包括:
第一处理单元,用于接收用户发送的数据请求,所述数据请求为读取数据请求或更新数据请求;
第二处理单元,用于若所述数据请求为读取数据请求,则生成第一队列,所述第一队列为刷新缓存的任务路由到刷新缓存的队列;
第三处理单元,用于根据第一预设规则先从所述缓存中获取对应的数据,当所述缓存中的数据过期或被清除时,从数据库中获取对应的数据,并异步存储至所述缓存中;
第四处理单元,用于若所述数据请求为更新数据请求,则生成第二队列,所述第二队列为更新所述数据库的请求路由到更新数据库的队列;
第五处理单元,用于根据第二预设规则对所述缓存和所述数据库中的数据进行数据同步。
进一步的,所述第一处理单元还用于:
根据数据的唯一标识,将所述数据请求发送至java虚拟机的预设队列中,每个预设队列对应一个工作线程,且每个工作线程串行处理对应的操作;
对所述预设队列中的所述数据请求进行去重,保证所述预设队列中仅包含一个更新缓存的数据请求;
判断所述数据请求的是否在预设等待时间范围内,若是,则轮询获取对应的数据;
若否,则读取所述数据库中的当前值。
进一步的,所述第五处理单元具体用于:
若所述预设队列中的任务为更新数据库中的任务,则将更新状态设置为待更新,所述预设队列中新的一条刷新缓存任务将会刷新缓存,对应的删除所述缓存中的数据,并更新所述数据库;
若所述预设队列中的任务为刷新缓存的任务,则若更新状态为设置,则初始化为已更新,对应的执行查询所述数据库,并更新所述缓存中的数据;
若更新状态为待更新,则将状态设置为已更新,对应的执行查询所述数据库,并更新所述缓存中的数据;
若更新状态为已更新,则说明所述缓存已更新或者有任务正在执行,结束所述缓存和所述数据库中的数据的同步。
一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在的设备执行如上述所述的数据同步方法。
一种电子设备,所述电子设备包括至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行如上述所述的数据同步方法。
本申请所述的数据同步方法及装置,需要在应用服务器部署多服务实例的请求路由,接收用户发送的数据请求,所述数据请求为读取数据请求或更新数据请求;若所述数据请求为读取数据请求,则生成第一队列,所述第一队列为刷新缓存的任务路由到刷新缓存的队列;根据第一预设规则先从所述缓存中获取对应的数据,当所述缓存中的数据过期或被清除时,从数据库中获取对应的数据,并异步存储至所述缓存中;若所述数据请求为更新数据请求,则生成第二队列,所述第二队列为更新所述数据库的请求路由到更新数据库的队列;根据第二预设规则对所述缓存和所述数据库中的数据进行数据同步。本申请在不引入新的中间件的前提下,通过数据库与缓存更新与读取操作异步串行化,解决了在高并发场景下,缓存与数据库数据的不一致带来的用户体验差的问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例公开的一种数据同步方法的流程示意图;
图2为本申请实施例公开的一种数据同步装置的结构示意图;
图3为本申请实施例公开的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参见附图1,为本申请实施例提供的一种数据同步方法流程示意图。如图1所示,本申请实施例提供了一种数据同步方法,在应用服务器部署多服务实例的请求路由,该方法包括如下步骤:
S101:接收用户发送的数据请求,所述数据请求为读取数据请求或更新数据请求;
S102:若所述数据请求为读取数据请求,则生成第一队列,所述第一队列为刷新缓存的任务路由到刷新缓存的队列;
S103:根据第一预设规则先从所述缓存中获取对应的数据,当所述缓存中的数据过期或被清除时,从数据库中获取对应的数据,并异步存储至所述缓存中;
S104:若所述数据请求为更新数据请求,则生成第二队列,所述第二队列为更新所述数据库的请求路由到更新数据库的队列;
S105:根据第二预设规则对所述缓存和所述数据库中的数据进行数据同步。
进一步的,在所述接收用户发送的数据请求后,还包括:
根据数据的唯一标识,将所述数据请求发送至java虚拟机的预设队列中,每个预设队列对应一个工作线程,且每个工作线程串行处理对应的操作。
需要说明的是,一个队列对应一个工作线程,每个工作线程串行拿到对应的操作,然后一条一条的执行。
本申请实施例中,在更新数据时,根据数据的唯一标识,将操作路由之后,发送到一个java虚拟机的队列中。在读取数据时,如果发现数据不在缓存中,那么将重新读取数据和更新缓存的操作,根据唯一标识路由之后,也发送同一个java虚拟机的队列中。
本申请实施例具体实现效果:一个数据变更的操作,先执行删除缓存,然后再去更新数据库,但是还没完成更新,此时如果一个读请求过来,读到了空的缓存,那么可以先将缓存更新的请求发送到队列中,此时读请求会在队列中积压,然后同步等待缓存更新完成。
需要进一步说明的是,一个队列中,多个更新缓存请求串在一起是没意义的,因此做过滤,如果发现队列中已经有一个更新缓存的请求了,那么就不用再放个更新请求操作进去了,直接等待前面的更新操作请求完成即可,待那个队列对应的工作线程完成了上一个操作的数据库的修改之后,才会去执行下一个操作,也就是缓存更新的操作,此时会从数据库中读取最新的值,然后写入缓存中,具体的,该方法还包括:
对所述预设队列中的所述数据请求进行去重,保证所述预设队列中仅包含一个更新缓存的数据请求。
需要进一步说明的是,如果请求还在等待时间范围内,不断轮询发现可以取到值了,那么就直接返回;如果请求等待的时间超过一定时长,那么这一次直接从数据库中读取当前的旧值,具体的,该方法还包括:
判断所述数据请求的是否在预设等待时间范围内,若是,则轮询获取对应的数据;
若否,则读取所述数据库中的当前值。
需要进一步说明的是,上述所述根据第二预设规则对所述缓存和所述数据库中的数据进行数据同步,包括:若所述预设队列中的任务为更新数据库中的任务,则将更新状态设置为待更新,所述预设队列中新的一条刷新缓存任务将会刷新缓存,对应的删除所述缓存中的数据,并更新所述数据库;若所述预设队列中的任务为刷新缓存的任务,则若更新状态为设置,则初始化为已更新,对应的执行查询所述数据库,并更新所述缓存中的数据;若更新状态为待更新,则将状态设置为已更新,对应的执行查询所述数据库,并更新所述缓存中的数据;若更新状态为已更新,则说明所述缓存已更新或者有任务正在执行,结束所述缓存和所述数据库中的数据的同步。
为了方便技术方案的理解,本申请实施例以商品库存为例,用户可以浏览商品(查询库存),也可以购买商品(更新库存)。具体的,如写操作(更新库存),将商品库存状态置为未更新,构建写数据库请求放入异步队列,该请求会先删除缓存、然后更新数据库;读操作(查询库存),构建更新缓存请求并放入异步队列,该请求会异步根据商品库存的更新状态决定是否刷新缓存从缓存读取库存并返回。
本申请实施例中的预设对列实现了读写请求串行执行,保证了缓存值跟数据库数据一致性。需要说明的是,读请求类型:根据商品id路由到指定队列;从队列中获取商品库存的更新状态;如果更新状态未初始化,则初始化为待更新,并执行缓存刷新操作;如果更新状态为待更新,执行缓存刷新操作;如果更新状态为已更新,说明之前已有刷新请求入队,不作操作直接返回。写请求类型:先删除缓存,再更新数据库。
本申请实施例中,具体从以下几点来保证数据一致性,首先,读操作异常:异步队列的更新缓存请求发生异常时:会将商品库存更新状态重置为未更新,并尝试读缓存,如果读到了则说明新的读请求重新触发了读请求队列,更新了缓存,此时的缓存为最新值;其次,写操作异常,异步队列的写数据库请求发生异常,会将更新状态重置为未更新状态,让队列后面的读请求重新读取数据库,更新到缓存。
需要说明的是,还需要在极端情况下,确定对应的处理策略:
首先,避免读请求长时间阻塞,什么场景会成读请求阻塞:写请求较多:写请求本身是比较耗时的;写请求分布不均匀:集群模式下,如果所有写请求都集中到一台机器上,那么该机器的读请求会因为写请求多而阻塞。对应的解决方案:写多读少的业务场景不采用该方案,每个读请求设置超时必须在超时时间范围内返回,集群模式分摊写请求的压力。
其次,读请求并发量过高,业务高峰期读请求突增时,过多写请求会影响接口的响应时间。对应的解决方案:避免缓存在同一时间过期,出现缓存雪崩。
再次,写请求集中时,影响读性能,对应的解决方案:多服务实例部署的请求路由:保证执行数据更新操作,以及执行缓存更新操作的请求,都通过nginx服务器路由到相同的服务实例上,使写请求尽量分布均匀。
最后,热点数据,导致请求倾斜,当某个数据的读和写请求都特别高,全部打到相同的机器的相同的队列里面去了,可能造成某台机器的压力过大。对应的解决方案:只在数据更新的时候才会清空缓存,然后才会导致读写并发,因此更新频率不高的话,该问题的影响并不大。
本申请实施例提供一种数据同步方法,需要在应用服务器部署多服务实例的请求路由,接收用户发送的数据请求,所述数据请求为读取数据请求或更新数据请求;若所述数据请求为读取数据请求,则生成第一队列,所述第一队列为刷新缓存的任务路由到刷新缓存的队列;根据第一预设规则先从所述缓存中获取对应的数据,当所述缓存中的数据过期或被清除时,从数据库中获取对应的数据,并异步存储至所述缓存中;若所述数据请求为更新数据请求,则生成第二队列,所述第二队列为更新所述数据库的请求路由到更新数据库的队列;根据第二预设规则对所述缓存和所述数据库中的数据进行数据同步。本申请实施例在不引入新的中间件的前提下,通过数据库与缓存更新与读取操作异步串行化,解决了在高并发场景下,缓存与数据库数据的不一致带来的用户体验差的问题。
请参阅图2,基于上述实施例公开的一种数据同步方法,本实施例对应公开了一种数据同步装置,在应用服务器部署多服务实例的请求路由,该装置包括:
第一处理单元201,用于接收用户发送的数据请求,所述数据请求为读取数据请求或更新数据请求;
第二处理单元202,用于若所述数据请求为读取数据请求,则生成第一队列,所述第一队列为刷新缓存的任务路由到刷新缓存的队列;
第三处理单元203,用于根据第一预设规则先从所述缓存中获取对应的数据,当所述缓存中的数据过期或被清除时,从数据库中获取对应的数据,并异步存储至所述缓存中;
第四处理单元204,用于若所述数据请求为更新数据请求,则生成第二队列,所述第二队列为更新所述数据库的请求路由到更新数据库的队列;
第五处理单元205,用于根据第二预设规则对所述缓存和所述数据库中的数据进行数据同步。
进一步的,所述第一处理单元201还用于:
根据数据的唯一标识,将所述数据请求发送至java虚拟机的预设队列中,每个预设队列对应一个工作线程,且每个工作线程串行处理对应的操作;
对所述预设队列中的所述数据请求进行去重,保证所述预设队列中仅包含一个更新缓存的数据请求;
判断所述数据请求的是否在预设等待时间范围内,若是,则轮询获取对应的数据;
若否,则读取所述数据库中的当前值。
进一步的,所述第五处理单元205具体用于:
若所述预设队列中的任务为更新数据库中的任务,则将更新状态设置为待更新,所述预设队列中新的一条刷新缓存任务将会刷新缓存,对应的删除所述缓存中的数据,并更新所述数据库;
若所述预设队列中的任务为刷新缓存的任务,则若更新状态为设置,则初始化为已更新,对应的执行查询所述数据库,并更新所述缓存中的数据;
若更新状态为待更新,则将状态设置为已更新,对应的执行查询所述数据库,并更新所述缓存中的数据;
若更新状态为已更新,则说明所述缓存已更新或者有任务正在执行,结束所述缓存和所述数据库中的数据的同步。
所述数据同步装置包括处理器和存储器,上述第一处理单元、第二处理单元和第三处理单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来解决在高并发场景下,缓存与数据库数据的不一致带来的用户体验差的问题。
本申请实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述数据同步方法。
本申请实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述数据同步方法。
本申请实施例提供了一种电子设备,如图3所示,该电子设备30包括至少一个处理器301、以及与所述处理器连接的至少一个存储器302、总线303;其中,所述处理器301、所述存储器302通过所述总线303完成相互间的通信;处理器301用于调用所述存储器302中的程序指令,以执行上述的所述数据同步方法。
本文中的电子设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:
接收用户发送的数据请求,所述数据请求为读取数据请求或更新数据请求;
若所述数据请求为读取数据请求,则生成第一队列,所述第一队列为刷新缓存的任务路由到刷新缓存的队列;
根据第一预设规则先从所述缓存中获取对应的数据,当所述缓存中的数据过期或被清除时,从数据库中获取对应的数据,并异步存储至所述缓存中;
若所述数据请求为更新数据请求,则生成第二队列,所述第二队列为更新所述数据库的请求路由到更新数据库的队列;
根据第二预设规则对所述缓存和所述数据库中的数据进行数据同步。
进一步的,在所述接收用户发送的数据请求后,还包括:
根据数据的唯一标识,将所述数据请求发送至java虚拟机的预设队列中,每个预设队列对应一个工作线程,且每个工作线程串行处理对应的操作。
进一步的,还包括:
对所述预设队列中的所述数据请求进行去重,保证所述预设队列中仅包含一个更新缓存的数据请求。
进一步的,还包括:
判断所述数据请求的是否在预设等待时间范围内,若是,则轮询获取对应的数据;
若否,则读取所述数据库中的当前值。
进一步的,所述根据第二预设规则对所述缓存和所述数据库中的数据进行数据同步,包括:
若所述预设队列中的任务为更新数据库中的任务,则将更新状态设置为待更新,所述预设队列中新的一条刷新缓存任务将会刷新缓存,对应的删除所述缓存中的数据,并更新所述数据库;
若所述预设队列中的任务为刷新缓存的任务,则若更新状态为设置,则初始化为已更新,对应的执行查询所述数据库,并更新所述缓存中的数据;
若更新状态为待更新,则将状态设置为已更新,对应的执行查询所述数据库,并更新所述缓存中的数据;
若更新状态为已更新,则说明所述缓存已更新或者有任务正在执行,结束所述缓存和所述数据库中的数据的同步。
本申请是根据本申请实施例的方法、设备(系统)、计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
在一个典型的配置中,设备包括一个或多个处理器(CPU)、存储器和总线。设备还可以包括输入/输出接口、网络接口等。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种数据同步方法,其特征在于,在应用服务器部署多服务实例的请求路由,该方法包括:
接收用户发送的数据请求,所述数据请求为读取数据请求或更新数据请求;
若所述数据请求为读取数据请求,则生成第一队列,所述第一队列为刷新缓存的任务路由到刷新缓存的队列;
根据第一预设规则先从所述缓存中获取对应的数据,当所述缓存中的数据过期或被清除时,从数据库中获取对应的数据,并异步存储至所述缓存中;
若所述数据请求为更新数据请求,则生成第二队列,所述第二队列为更新所述数据库的请求路由到更新数据库的队列;
根据第二预设规则对所述缓存和所述数据库中的数据进行数据同步。
2.根据权利要求1所述的方法,其特征在于,在所述接收用户发送的数据请求后,还包括:
根据数据的唯一标识,将所述数据请求发送至java虚拟机的预设队列中,每个预设队列对应一个工作线程,且每个工作线程串行处理对应的操作。
3.根据权利要求2所述的方法,其特征在于,还包括:
对所述预设队列中的所述数据请求进行去重,保证所述预设队列中仅包含一个更新缓存的数据请求。
4.根据权利要求2所述的方法,其特征在于,还包括:
判断所述数据请求的是否在预设等待时间范围内,若是,则轮询获取对应的数据;
若否,则读取所述数据库中的当前值。
5.根据权利要求1所述的方法,其特征在于,所述根据第二预设规则对所述缓存和所述数据库中的数据进行数据同步,包括:
若所述预设队列中的任务为更新数据库中的任务,则将更新状态设置为待更新,所述预设队列中新的一条刷新缓存任务将会刷新缓存,对应的删除所述缓存中的数据,并更新所述数据库;
若所述预设队列中的任务为刷新缓存的任务,则若更新状态为设置,则初始化为已更新,对应的执行查询所述数据库,并更新所述缓存中的数据;
若更新状态为待更新,则将状态设置为已更新,对应的执行查询所述数据库,并更新所述缓存中的数据;
若更新状态为已更新,则说明所述缓存已更新或者有任务正在执行,结束所述缓存和所述数据库中的数据的同步。
6.一种数据同步装置,其特征在于,在应用服务器部署多服务实例的请求路由,该装置包括:
第一处理单元,用于接收用户发送的数据请求,所述数据请求为读取数据请求或更新数据请求;
第二处理单元,用于若所述数据请求为读取数据请求,则生成第一队列,所述第一队列为刷新缓存的任务路由到刷新缓存的队列;
第三处理单元,用于根据第一预设规则先从所述缓存中获取对应的数据,当所述缓存中的数据过期或被清除时,从数据库中获取对应的数据,并异步存储至所述缓存中;
第四处理单元,用于若所述数据请求为更新数据请求,则生成第二队列,所述第二队列为更新所述数据库的请求路由到更新数据库的队列;
第五处理单元,用于根据第二预设规则对所述缓存和所述数据库中的数据进行数据同步。
7.根据权利要求6所述的装置,其特征在于,所述第一处理单元还用于:
根据数据的唯一标识,将所述数据请求发送至java虚拟机的预设队列中,每个预设队列对应一个工作线程,且每个工作线程串行处理对应的操作;
对所述预设队列中的所述数据请求进行去重,保证所述预设队列中仅包含一个更新缓存的数据请求;
判断所述数据请求的是否在预设等待时间范围内,若是,则轮询获取对应的数据;
若否,则读取所述数据库中的当前值。
8.根据权利要求6所述的装置,其特征在于,所述第五处理单元具体用于:
若所述预设队列中的任务为更新数据库中的任务,则将更新状态设置为待更新,所述预设队列中新的一条刷新缓存任务将会刷新缓存,对应的删除所述缓存中的数据,并更新所述数据库;
若所述预设队列中的任务为刷新缓存的任务,则若更新状态为设置,则初始化为已更新,对应的执行查询所述数据库,并更新所述缓存中的数据;
若更新状态为待更新,则将状态设置为已更新,对应的执行查询所述数据库,并更新所述缓存中的数据;
若更新状态为已更新,则说明所述缓存已更新或者有任务正在执行,结束所述缓存和所述数据库中的数据的同步。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在的设备执行如权利要求1至4中任一项所述的数据同步方法。
10.一种电子设备,其特征在于,所述电子设备包括至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行如权利要求1至4中任一项所述的数据同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111334163.XA CN113986981A (zh) | 2021-11-11 | 2021-11-11 | 一种数据同步方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111334163.XA CN113986981A (zh) | 2021-11-11 | 2021-11-11 | 一种数据同步方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113986981A true CN113986981A (zh) | 2022-01-28 |
Family
ID=79747995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111334163.XA Pending CN113986981A (zh) | 2021-11-11 | 2021-11-11 | 一种数据同步方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113986981A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579269A (zh) * | 2022-02-08 | 2022-06-03 | 阿里巴巴(中国)有限公司 | 任务调度方法及装置 |
CN117112267A (zh) * | 2023-10-20 | 2023-11-24 | 成都华栖云科技有限公司 | 一种应用接口的缓存维护方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060294058A1 (en) * | 2005-06-28 | 2006-12-28 | Microsoft Corporation | System and method for an asynchronous queue in a database management system |
US20090210429A1 (en) * | 2008-02-19 | 2009-08-20 | Yahoo! Inc. | System and method for asynchronous update of indexes in a distributed database |
CN107729559A (zh) * | 2017-11-08 | 2018-02-23 | 携程旅游网络技术(上海)有限公司 | 数据库读写异步访问的方法、系统、设备及存储介质 |
CN109597818A (zh) * | 2018-11-28 | 2019-04-09 | 优刻得科技股份有限公司 | 数据更新方法、装置、存储介质和设备 |
CN111414389A (zh) * | 2020-03-19 | 2020-07-14 | 北京字节跳动网络技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN112307119A (zh) * | 2020-10-27 | 2021-02-02 | 广州市网星信息技术有限公司 | 数据同步方法、装置、设备及存储介质 |
CN113407556A (zh) * | 2021-07-13 | 2021-09-17 | 南方电网数字电网研究院有限公司 | 基于消息队列的数据异步更新方法及装置 |
CN113420088A (zh) * | 2021-06-24 | 2021-09-21 | 广州欢网科技有限责任公司 | 一种缓存数据库和数据库同步的方法、装置及终端 |
-
2021
- 2021-11-11 CN CN202111334163.XA patent/CN113986981A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060294058A1 (en) * | 2005-06-28 | 2006-12-28 | Microsoft Corporation | System and method for an asynchronous queue in a database management system |
US20090210429A1 (en) * | 2008-02-19 | 2009-08-20 | Yahoo! Inc. | System and method for asynchronous update of indexes in a distributed database |
CN107729559A (zh) * | 2017-11-08 | 2018-02-23 | 携程旅游网络技术(上海)有限公司 | 数据库读写异步访问的方法、系统、设备及存储介质 |
CN109597818A (zh) * | 2018-11-28 | 2019-04-09 | 优刻得科技股份有限公司 | 数据更新方法、装置、存储介质和设备 |
CN111414389A (zh) * | 2020-03-19 | 2020-07-14 | 北京字节跳动网络技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN112307119A (zh) * | 2020-10-27 | 2021-02-02 | 广州市网星信息技术有限公司 | 数据同步方法、装置、设备及存储介质 |
CN113420088A (zh) * | 2021-06-24 | 2021-09-21 | 广州欢网科技有限责任公司 | 一种缓存数据库和数据库同步的方法、装置及终端 |
CN113407556A (zh) * | 2021-07-13 | 2021-09-17 | 南方电网数字电网研究院有限公司 | 基于消息队列的数据异步更新方法及装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579269A (zh) * | 2022-02-08 | 2022-06-03 | 阿里巴巴(中国)有限公司 | 任务调度方法及装置 |
CN117112267A (zh) * | 2023-10-20 | 2023-11-24 | 成都华栖云科技有限公司 | 一种应用接口的缓存维护方法 |
CN117112267B (zh) * | 2023-10-20 | 2024-01-23 | 成都华栖云科技有限公司 | 一种应用接口的缓存维护方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113986981A (zh) | 一种数据同步方法及装置 | |
CN105989123A (zh) | 一种数据同步方法、装置和系统 | |
CN110968603B (zh) | 一种数据访问方法及装置 | |
CN103152390B (zh) | 分布式存储系统的节点配置方法、装置、节点及系统 | |
CN110968586A (zh) | 分布式事务处理方法及装置 | |
CN111225012A (zh) | 事务处理方法、装置和设备 | |
CN106155775B (zh) | 消息处理方法、设备及系统 | |
US20180121531A1 (en) | Data Updating Method, Device, and Related System | |
CN111784329A (zh) | 业务数据的处理方法和装置、存储介质、电子装置 | |
CN110704463A (zh) | 常用数据的本地缓存方法、装置、计算机设备及存储介质 | |
CN110134503B (zh) | 一种集群环境下的定时任务处理方法、装置及存储介质 | |
US20210064483A1 (en) | Point in Time Blob Restore | |
CN110784498A (zh) | 一种个性化数据容灾方法及装置 | |
WO2020238860A1 (zh) | 分布式文件批处理方法、装置、与可读存储介质 | |
CN110764930B (zh) | 基于消息模式的请求或应答处理方法及装置 | |
CN110704438A (zh) | 一种区块链中布隆过滤器的生成方法及装置 | |
CN107181773A (zh) | 分布式存储系统的数据存储及数据管理方法、设备 | |
CN110413427B (zh) | 订阅数据拉取方法、装置、设备及存储介质 | |
CN112597151A (zh) | 数据处理方法、装置、设备和存储介质 | |
CN117435569A (zh) | 缓存系统动态扩容方法、装置、设备、介质和程序产品 | |
CN110968406B (zh) | 处理任务的方法、装置、存储介质和处理器 | |
CN111245940A (zh) | 用于物联网通信模块中移动通信号码数据的处理方法、装置 | |
CN115421856A (zh) | 一种数据恢复方法及装置 | |
CN112860746B (zh) | 一种基于缓存削减的方法、设备及系统 | |
CN114968982A (zh) | 分库分表场景业务处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |