保持不同存储系统的数据一致的方法以及装置制造方法及图纸

技术编号:27198506 阅读:35 留言:0更新日期:2021-01-31 12:00
本说明书实施例提供保持不同存储系统的数据一致的方法以及装置,所述保持不同存储系统的数据一致的方法包括:在写操作更新第一存储系统的情况下,以原子操作将第一数据处理为读取不到,且在所述原子操作中针对第一主键生成或更新对应的版本号;在读操作从第二存储系统读取不到第一数据的情况下,获取第一主键最新的版本号,且从第一存储系统读取出第二数据;将获取的版本号与第一主键最新的版本号进行比较;如果一致,则以原子操作将第二数据更新到第二存储系统且针对第一主键更新对应的版本号;如果不一致,则重新进入获取第一主键最新的版本号,且从第一存储系统读取出第二数据的步骤。据的步骤。据的步骤。

【技术实现步骤摘要】
保持不同存储系统的数据一致的方法以及装置


[0001]本说明书实施例涉及计算机
,特别涉及一种保持不同存储系统的数据一致的方法。本说明书一个或者多个实施例同时涉及一种保持不同存储系统的数据一致的装置,一种计算设备,以及一种计算机可读存储介质。

技术介绍

[0002]在一些应用场景中,一个存储系统(如持久化数据源)和应用服务之间往往需要使用另一个存储系统(如缓存系统)来获取数据。当一个存储系统更新,也需要更新另一个存储系统的数据。例如,为了保持A存储系统中保存的是B存储系统中的最新数据,目前在写操作时先更新A存储系统,然后删除B存储系统对应的数据,在读操作时,先读取B存储系统,如果数据存在则返回,否则读取A存储系统的数据并更新B存储系统。
[0003]但是,经过上述操作仍然会发生两个存储系统的数据不一致的情况。

技术实现思路

[0004]有鉴于此,本说明书施例提供了一种保持不同存储系统的数据一致的方法。本说明书一个或者多个实施例同时涉及一种保持不同存储系统的数据一致的装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。
[0005]根据本说明书实施例的第一方面,提供了一种保持不同存储系统的数据一致的方法,包括:在写操作更新第一存储系统的情况下,以原子操作将第一数据处理为读取不到,且在所述原子操作中针对第一主键生成或更新对应的版本号,其中,所述第一数据为所述写操作针对的第一主键在第二存储系统中对应的数据;在读操作从所述第二存储系统读取不到所述第一数据的情况下,获取所述第一主键最新的版本号,且从所述第一存储系统读取出第二数据,所述第二数据为所述第一主键在所述第一存储系统中对应的数据;如果一致,则以原子操作将所述第二数据更新到所述第二存储系统,且在所述原子操作中针对所述第一主键更新对应的版本号;如果不一致,则重新进入所述获取所述第一主键最新的版本号,且从所述第一存储系统读取出第二数据的步骤。
[0006]可选地,所述第一存储系统为持久化数据源,所述第二存储系统为缓存系统。
[0007]可选地,所述方法还包括:如果获取不到所述第一主键最新的版本号,则以原子操作针对所述第一主键生成对应的版本号初始值。
[0008]可选地,所述在读操作从所述第二存储系统读取不到所述第一数据的情况下,获取所述第一主键最新的版本号包括:向所述第二存储系统发送所述读操作读取数据的请求;接收所述第二存储系统针对所述请求反馈的数据无法被读取到的消息,所述消息携带了所述第一主键最新的版本号;根据所述消息获取所述第一主键最新的版本号。
[0009]可选地,所述第二存储系统提供了隐藏获取接口,所述隐藏获取接口用于获取所述第一主键最新的版本号。所述在读操作从所述第二存储系统读取不到所述第一数据的情况下,获取所述第一主键最新的版本号包括:向所述第二存储系统发送所述读操作读取数
据的请求;接收所述第二存储系统针对所述请求反馈的数据无法被读取到的消息;根据所述消息通过所述第二存储系统的隐藏获取接口获取所述第一主键最新的版本号。
[0010]可选地,所述第二存储系统提供了隐藏接口,所述隐藏接口用于以原子操作将数据标识为隐藏以无法被读取,且在所述原子操作中针对数据的主键生成或更新对应的版本号。所述在写操作更新第一存储系统的情况下,以原子操作将第一数据处理为读取不到,且在所述原子操作中针对第一主键生成或更新对应的版本号包括:在写操作更新第一存储系统的情况下,通过调用所述隐藏接口,以原子操作将第一数据标识为隐藏以无法被读取,且在所述原子操作中针对所述第一主键生成或更新对应的版本号。
[0011]可选地,所述在写操作更新第一存储系统的情况下,以原子操作将第一数据处理为读取不到包括:在写操作更新第一存储系统的情况下,以原子操作将所述写操作针对的第一主键在第二存储系统中对应的数据删除。
[0012]根据本说明书实施例的第二方面,提供了一种保持不同存储系统的数据一致的装置,包括:写模块,被配置为在写操作更新第一存储系统的情况下,以原子操作将第一数据处理为读取不到,且在所述原子操作中针对第一主键生成或更新对应的版本号,其中,所述第一数据为所述写操作针对的第一主键在第二存储系统中对应的数据。读模块,被配置为在读操作从所述第二存储系统读取不到所述第一数据的情况下,获取所述第一主键最新的版本号,且从所述第一存储系统读取出第二数据,所述第二数据为所述第一主键在所述第一存储系统中对应的数据。比较模块,被配置为将获取的版本号与所述第一主键最新的版本号进行比较,如果不一致,触发读模块重新进入所述获取所述第一主键最新的版本号,且从所述第一存储系统读取出第二数据的步骤。数据更新模块,被配置为如果所述比较模块判定一致,则以原子操作将所述第二数据更新到所述第二存储系统,且在所述原子操作中针对所述第一主键更新对应的版本号。
[0013]根据本说明书实施例的第三方面,提供了一种计算设备,包括:存储器和处理器;所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:在写操作更新第一存储系统的情况下,以原子操作将第一数据处理为读取不到,且在所述原子操作中针对第一主键生成或更新对应的版本号,其中,所述第一数据为所述写操作针对的第一主键在第二存储系统中对应的数据;在读操作从所述第二存储系统读取不到所述第一数据的情况下,获取所述第一主键最新的版本号,且从所述第一存储系统读取出第二数据,所述第二数据为所述第一主键在所述第一存储系统中对应的数据;将获取的版本号与所述第一主键最新的版本号进行比较;如果一致,则以原子操作将所述第二数据更新到所述第二存储系统,且在所述原子操作中针对所述第一主键更新对应的版本号;如果不一致,则重新进入所述获取所述第一主键最新的版本号,且从所述第一存储系统读取出第二数据的步骤。
[0014]根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现任意一项所述保持不同存储系统的数据一致的方法的步骤。
[0015]本说明书一个实施例提供了保持不同存储系统的数据一致的方法,由于该方法在写操作更新第一存储系统的情况下,以原子操作将第一数据处理为读取不到且针对所述第一主键生成或更新对应的版本号,而第一数据为所述写操作针对的第一主键在第二存储系
统中对应的数据,从而通过原子操作对数据以及版本号的更新作为一个整体在第二存储系统中实现了预占位,有效防止并发更新导致的不一致性。在需要读取第一数据的情况下,如果从所述第二存储系统读取不到,则获取所述第一主键最新的版本号,且从所述第一存储系统读取出第二数据,将获取的版本号与所述第一主键最新的版本号进行比较。如果版本号一致,说明读操作从第一存储系统读取出第二数据之后,读取出的数据并未发生更新,则可以原子操作将读取出的第二数据更新到所述第二存储系统且在所述原子操作中针对所述第一主键更新对应的版本号,能够有效防止并发读导致的不一致性。如果版本号不一致,则说明读操作从第一存储系统读取本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种保持不同存储系统的数据一致的方法,包括:在写操作更新第一存储系统的情况下,以原子操作将第一数据处理为读取不到,且在所述原子操作中针对第一主键生成或更新对应的版本号,其中,所述第一数据为所述写操作针对的第一主键在第二存储系统中对应的数据;在读操作从所述第二存储系统读取不到所述第一数据的情况下,获取所述第一主键最新的版本号,且从所述第一存储系统读取出第二数据,所述第二数据为所述第一主键在所述第一存储系统中对应的数据;将获取的版本号与所述第一主键最新的版本号进行比较;如果一致,则以原子操作将所述第二数据更新到所述第二存储系统,且在所述原子操作中针对所述第一主键更新对应的版本号;如果不一致,则重新进入所述获取所述第一主键最新的版本号,且从所述第一存储系统读取出第二数据的步骤。2.根据权利要求1所述的方法,所述第一存储系统为持久化数据源,所述第二存储系统为缓存系统。3.根据权利要求1所述的方法,还包括:如果获取不到所述第一主键最新的版本号,则以原子操作针对所述第一主键生成对应的版本号初始值。4.根据权利要求1所述的方法,所述在读操作从所述第二存储系统读取不到所述第一数据的情况下,获取所述第一主键最新的版本号包括:向所述第二存储系统发送所述读操作读取数据的请求;接收所述第二存储系统针对所述请求反馈的数据无法被读取到的消息,所述消息携带了所述第一主键最新的版本号;根据所述消息获取所述第一主键最新的版本号。5.根据权利要求1所述的方法,所述第二存储系统提供了隐藏获取接口,所述隐藏获取接口用于获取所述第一主键最新的版本号;所述在读操作从所述第二存储系统读取不到所述第一数据的情况下,获取所述第一主键最新的版本号包括:向所述第二存储系统发送所述读操作读取数据的请求;接收所述第二存储系统针对所述请求反馈的数据无法被读取到的消息;根据所述消息通过所述第二存储系统的隐藏获取接口获取所述第一主键最新的版本号。6.根据权利要求1所述的方法,所述第二存储系统提供了隐藏接口,所述隐藏接口用于以原子操作将数据标识为隐藏以无法被读取,且在所述原子操作中针对数据的主键生成或更新对应的版本号;所述在写操作更新第一存储系统的情况下,以原子操作将第一数据处理为读取不到,且在所述原子操作中针对第一主键生成或更新对应的版本号包括:在写操作更新第一存储系统的情况下,通过调用所述隐藏接口,以原子操作将第一数据...

【专利技术属性】
技术研发人员:刘欢王若朱国云
申请(专利权)人:阿里云计算有限公司
类型:发明
国别省市:

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

1