CN108509460A - 分布式系统中的数据一致性检查 - Google Patents

分布式系统中的数据一致性检查 Download PDF

Info

Publication number
CN108509460A
CN108509460A CN201710114248.4A CN201710114248A CN108509460A CN 108509460 A CN108509460 A CN 108509460A CN 201710114248 A CN201710114248 A CN 201710114248A CN 108509460 A CN108509460 A CN 108509460A
Authority
CN
China
Prior art keywords
entity
data
state
component
list
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.)
Granted
Application number
CN201710114248.4A
Other languages
English (en)
Other versions
CN108509460B (zh
Inventor
刘小田
肖维
梁晟
陈春风
李展
张帆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Priority to CN201710114248.4A priority Critical patent/CN108509460B/zh
Priority to PCT/CN2017/079051 priority patent/WO2018157430A1/en
Priority to US16/480,586 priority patent/US11481380B2/en
Priority to EP17898566.9A priority patent/EP3566150B1/en
Publication of CN108509460A publication Critical patent/CN108509460A/zh
Application granted granted Critical
Publication of CN108509460B publication Critical patent/CN108509460B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1466Management of the backup or restore process to make the backup process non-disruptive
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency

Abstract

扫描和重新扫描检测存储库中或分布式计算环境的其他组件中的数据实体之间的状态不一致性。首先,实体基于截止时间T0被扫描。不希望进行状态比较的实体被放置在跳过的实体列表中。报告在其他实体中找到的任何不一致性。然后随后重新扫描获取状态,并且尝试削减跳过的实体列表。重新扫描可以被限制。在不需要从更新数据实体状态的服务要求停工时间的情况下,可以检测不一致性,并且可以避免不一致性的错误报告。

Description

分布式系统中的数据一致性检查
背景技术
在云计算环境或其他分布式系统中,数据可以跨越不同的存储库散布。然而,对健康系统或其他约束的追求可以支持或需要不同存储库中的数据彼此一致。这可以是具有挑战性的。
发明内容
本文描述的一些技术涉及验证跨越数据存储库的数据一致性的技术活动。一些技术具体地涉及跨越数据存储库验证数据一致性,同时在数据一致性检查期间减少或避免服务停工时间。一些技术具体涉及跨越数据存储库验证数据一致性,同时在数据更新时减少或避免不一致的假警报。与本文的教导相关的其他技术活动对于本领域技术人员也将是显而易见的。
所给出的实施例仅仅是示例性的。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。相反,本发明内容被提供来以简化的形式介绍在下面的具体实施方式中进一步描述的一些技术概念。该创新由权利要求限定,并且在本发明内容与权利要求冲突的情况下,应当以权利要求为准。
附图说明
将参考附图给出更具体的描述。这些附图仅图示所选择的方面,并且因此不完全确定覆盖或范围。
图1是图示分布式环境中的计算机系统的框图,计算机系统具有在软件的控制下彼此交互的至少一个处理器和至少一个存储器,并且还图示了一些配置的存储介质示例;
图2是图示一致性检查系统的方面的框图;
图3是图示一致性检查算法的流程图;
图4是图示数据实体的方面的框图;
图5是图示了一些处理和配置的存储介质示例的方面的流程图;
图6是图示一些一致性检查软件的方面的框图;以及
图7至图9是图示一些一致性检查过程分析的方面的时间线图。
具体实施方式
概述
分布式软件系统可以包括由相应的服务连接的多个数据存储库。由给定的服务维护或更新的存储库中的数据可以在服务启动和运行时,间歇地或间隔地保持更新。不同存储库中的数据可能需要彼此一致,以满足健康、操作的、相互作用的或其他约束。在某些情况下,诸如在恢复之后,服务管理员可能希望或需要验证跨越数据存储库的数据一致性。所呈现的问题可以包括如何避免在数据一致性检查期间的服务停工时间,以及如何避免需要报告的假警报或者否则如果在数据更新时出现则需要处理的假警报。
一种常见的方法是在数据一致性检查期间使服务离线。这种方法可以避免假警报,因为将被检查的数据在检查期间不会被修改。缺点是该方法增加了服务停工时间。数据量越大,停工时间就越长。如果数据量很大,停工时间可能相当长,甚至达到违反服务水平协议的点。
另一种常见的方法是将所有数据存储库放置在单个数据存储装置上。该方法可以保证所有数据可以备份到单个时间点,因此其避免了以后还原中的一致性问题。但是其牺牲了系统可扩展性,并且对于分布式系统可能是不可接受的。
本文所描述的一些实施例可以在更广泛的上下文中来看。例如,诸如可用性、比较、一致性和存在的概念可以与特定的实施例相关。然而,它不由广泛的上下文的可用性推断,其中在本文中排他性的权利正在被寻找用于抽象的想法;它们不是。相反,本公开集中于提供适当的特定的实施例,其技术效果完全地或部分地解决特定的技术问题。涉及可用性、比较,一致性或存在的其他介质、系统和方法在本范围之外。因此,在适当地理解本公开的情况下,也避免了模糊性、纯粹的抽象性、缺乏技术特性和伴随的证明问题。
本文描述的实施例的技术特征对于本领域的普通技术人员将是明显的,并且以几种方式对于大范围的注意的读者也将是明显的。例如,一些实施例解决基于分布式系统计算技术的技术活动,诸如,跨越分布式存储库的数据一致性,以及减少或避免分布式计算系统中的服务停工时间。此外,本领域技术人员将认识到,本文描述的一致性检查不能智力地或通过铅笔和纸执行,而必须改为利用由以计算速度操作的处理器硬件执行的软件来使用存储在数字存储设备中的数字数据来执行比较和计算。此外,由一些实施例提供的技术效果包括在没有不必要的假阳性报告的情况下、并且在没有先前方法的单个数据存储和数据大小成比例的停工时间限制的情况下,数据不一致性的有效检查。从所提供的描述,其他优点和技术特征对于本领域技术人员也是显而易见的。
缩略词和缩写词
一些缩略词和缩写词定义如下。其他缩略词和缩写词可以在本文别处定义或者不需要定义来使技术人员理解。
ALU:算术和逻辑单元
API:应用程序接口
APP:应用
CD:压缩光盘
CPU:中央处理单元
DVD:数字通用光盘或数字视频盘
FPGA:现场可编程门阵列
FPU:浮点处理单元
GPU:图形处理单元
GUI:图形用户界面
IDE:集成开发环境,有时也称为“交互式开发环境”
MPI:消息传递接口
OS:操作系统
RAID:廉价磁盘的冗余阵列,或独立磁盘的冗余阵列
RAM:随机存取存储器
ROM:只读存储器
附加术语
本文参考诸如附图中所示的示例性实施例,以及在本文中使用特定语言来描述它们。但是在本文中所示的特征的变化和进一步修改,以及由本文中的特定的实施例所示出的抽象原理的附加技术应用(其可以被相关领域的并且拥有本公开的技术人员想到)应当被认为在权利要求的范围内。
在本公开中阐明了术语的含义,因此应当仔细地注意这些说明来阅读权利要求。给出了具体的示例,但是相关领域的技术人员将理解,其他示例也可以落入所使用的术语的含义内、并且在一个或多个权利要求的范围内。在这里,术语不一定具有它们在一般使用中(特别是在非技术使用中)、或在特定行业的使用中、或在特定字典或字典集合中具有的相同的含义。附图标记可以与各种短语一起使用,以帮助示出术语的宽度。从给定的文本段省略附图标记不一定意味着文本不讨论附图的内容。发明人维护并行使他们自己的词典学的权利。引用的术语是明确定义的,但是术语也可以隐含地定义而不使用引号。这里,术语可以明确地或隐含地在详细的描述中和/或在应用文件的其他地方被定义。
如本文所使用的,“计算机系统”可以包括例如一个或多个服务器、主板、处理节点、个人计算机(便携式或非便携式)、个人数字助理、智能手机、智能手表、智能带、蜂窝或移动电话、具有至少一个处理器和存储器的其他移动设备、和/或提供至少部分地由指令控制的一个或多个处理器的其他设备。指令可以是存储器和/或专用电路中的固件或其他软件的形式。具体地,尽管可能发生许多实施例在服务器计算机上运行,但是其他实施例可以在其他计算设备上运行,并且任何一个或多个这样的设备可以是给定实施例的一部分。
“多线程”计算机系统是支持多个执行线程的计算机系统。术语“线程”应当被理解为包括能够或者服从调度(并且可能到同步)的任何代码,并且还可以被称为诸如“任务”、“进程”或“协同程序”之类的另一个名称。线程可以并行地运行、顺序地运行或以并行执行(例如,多处理)和顺序执行(例如,时间分片)的组合来运行。多线程环境已经在各种配置中被设计。执行线程可以并行地运行,或者线程可以被组织用于并行执行,但实际上依次顺序执行。多线程可以例如通过在多处理环境中的不同核上运行不同的线程来实现、通过在单个处理器核上对不同线程进行时间分片来实现、或者通过时间分片和多处理器线程的某种组合来实现。线程上下文切换可以例如由内核的线程调度器、用户空间信号或用户空间和内核操作的组合来发起。例如,线程可以轮流对共享数据操作,或者每个线程可以对其自身的数据操作。
“逻辑处理器”或“处理器”是单个独立的硬件线程处理单元(诸如,同时多线程实现中的核)。作为另一示例,每个核运行两个线程的超线程四核芯片具有八个逻辑处理器。逻辑处理器包括硬件。术语“逻辑”用于防止给定芯片具有至多一个处理器的错误结论;“逻辑处理器”和“处理器”在本文中可互换使用。处理器可以是通用的,或者它们可以被定制用于诸如图形处理、信号处理、浮点算术处理、加密、I/O处理等的特定使用。
“多处理器”计算机系统是具有多个逻辑处理器的计算机系统。多处理器环境发生在各种配置中。在给定的配置中,所有处理器可以在功能上相等,而在另一配置中,一些处理器可以由于具有不同的硬件能力、不同的软件分配或二者而不同于其他处理器。根据配置,处理器可以在单个总线上彼此紧密耦合,或者其可以被松散耦合。在一些配置中,处理器共享中央存储器,在一些配置中,处理器各自具有其自身的本地存储器,并且在一些配置中,共享存储器和本地存储器均存在。
“内核”包括操作系统、管理程序、虚拟机、BIOS代码和类似的硬件接口软件。
“代码”是指处理器指令、数据(其包括常量、变量和数据结构)、或者指令和数据二者。“代码”和“软件”在本文中可互换使用。可执行代码、注释代码和固件是代码的一些示例。
“能力”是指对一个或多个计算资源的使用或控制。
“优化”是指改进,不一定是完美。例如,可以在已经优化的程序或算法中进行进一步的改进。
本文广泛使用“程序”以包括由程序员(其也被称为开发者)编写和/或自动生成的应用、内核、驱动程序、中断处理程序、固件、状态机、库和其他代码。
“例程”是指经由跳转和上下文保存接收控制的函数、过程、异常处理器、中断处理器或另一指令块。上下文保存在堆栈上推送返回地址或以其他方式保存返回地址,并且还可以保存从例程返回时要恢复的寄存器内容。
“服务”是指云计算环境中的程序。
“IoT”或“物联网”是指可寻址嵌入式计算节点的任何网络集合。这样的节点是如本文所定义的计算机系统的示例,但是它们还具有以下特性中的至少两个特征:(a)没有本地的人类可读显示器;(b)没有本地键盘;(c)主要输入源是跟踪非语言数据源的传感器;(d)没有本地旋转磁盘存储器-RAM芯片或ROM芯片,提供唯一的本地存储器;(e)没有CD或DVD驱动;(f)家用电器中的嵌入;(g)植入的医疗设备中的嵌入;(h)在车辆中的嵌入;(i)在过程自动化控制系统中的嵌入;或(j)集中于以下之一的设计:环境监测、公民基础设施监测、工业装备监测、能源使用监测、人或动物健康监测或物理运输系统监测。
“管理程序”是运行虚拟机的软件平台。一些示例包括(Citrix Systems公司商标)、(微软公司商标)、和KVM(基于内核的虚拟机)软件。
如本文所使用的,除非另有说明,否则“包括”允许附加的元件(即,包括意为非封闭性包括)。“由...组成”是指基本上由…组成或完全由…组成。当X的非Y部分(如果存在)可以被自由地改变、去除和/或添加,而不改变所要求保护的实施例的功能性时,就所涉及的权利要求而言,X基本上由Y组成。
“过程”有时在本文中用作计算科学领域的术语,并且在技术意义上包括资源用户,即例如协同程序、线程、任务、中断处理程序、应用进程、内核进程、过程和对象方法。“过程”在本文中还用作专利法领域术语,例如在描述与系统权利要求或制品(配置的存储介质)权利要求相对的过程权利要求中。类似地,“方法”在本文中有时被用作计算科学领域中的技术术语(一种类型“例程”)以及用作专利法领域术语(“过程”)。本领域技术人员将理解在特定实例中意指哪个含义,并且还将理解,给定的要求保护的过程或方法(在专利法意义上)有时可以使用一个或多个过程或方法(在计算科学意义上)来实现。
“自动地”是指与没有自动化的情况相反,意思是自动化的使用(例如,由用于本文所讨论的特定操作和技术效果的软件配置的通用计算硬件)。特别地,“自动地”执行的步骤不是通过手在纸上执行或在人的头脑中执行,尽管它们可以由人来发起或由人交互地引导。利用机器执行自动步骤以获得在没有如此提供的技术交互的情况下不能实现的一个或多个技术效果。
技术人员理解技术效果是技术实施例的推测目的。例如,在一个实施例中涉及计算、并且还可以在没有技术组件(例如,通过纸和笔、或甚至作为智力的步骤)的情况下执行一些计算的事实不会消除技术效果的存在或改变本实施例的具体和技术性质。诸如列出实体、获取实体状态和比较实体的操作在本文中被理解为除了其固有的数字性质之外还需要并提供由人类智力步骤不能获得的速度和准确度。这是本领域技术人员理解的,但是其他人有时可能需要被告知或提醒这一事实。
“计算地”同样是指正在使用的计算设备(至少处理器加上存储器),并且排除仅通过人类思考或仅仅人类行为获得结果。例如,用纸和笔进行算术不是如本文所理解的计算运算。计算结果更快、更宽、更深、更准确、更一致、更全面、和/或以其他方式提供超出仅有人类性能范围的技术效果。“计算步骤”是计算地执行的步骤。“自动地”或“计算地”不一定意味着“立即”。“计算地”和“自动地”在本文中可互换使用。
“主动地”是指没有来自用户的直接请求。实际上,用户可能甚至没有意识到实施例的主动步骤是可能的,直到步骤的结果已经被呈现给用户。除非另有说明,本文所述的任何计算和/或自动步骤也可以主动地完成。
“语言上”是指通过使用自然语言或通常在面对面、人对人通信中使用的另一种形式的通信。在语言上通信包括例如使用其手指、手、脸和/或身体说话、打字或打手势。
贯穿本文件,可选的复数“多个”的使用是指存在一个或多个所指示的特征。例如,“(多个)处理器”是指“一个或多个处理器”或等价地“至少一个处理器”。
出于美国法律和实践的目的,至少,在本文中权利要求或其他地方中使用词语“步骤”不旨在援引装置加功能、步骤加功能或35套美国法典第112节第六段/第112(f)条权利要求的解释。特此明确反驳任何该效果的推定。
出于美国法律和实践的目的,至少,权利要求不旨在援引装置加功能解释,除非其使用短语“用于...的装置”。旨在解释为装置加功能语言的权利要求语言(如果存在)将通过使用短语“用于…的装置”明确地记载该意图。当装置加功能解释适用时,无论是通过使用“用于...的装置”和/或通过法院的权利要求语言的法律构造,在用于给定的名词或给定的动词的说明书中记载的装置应当被理解为链接到权利要求语言,并且借助于以下任意内容在本文中链接在一起:附图的框图中的相同框内的外观、由相同或相似名称的表示、由相同附图标记的表示。例如,如果权利要求限制记载“zac小部件”以及该权利要求限制变得受制于装置加功能解释,则至少在说明书中任何附图框的任何地方所标识的所有结构、段落或示例中提到的“zac小部件”、或者通过分配给zac小部件的任何附图标记绑定在一起的“zac小部件”,将被认为是在用于zac小部件的应用中标识的结构的一部分,并且将帮助定义用于zac小部件结构的等价集合。
贯穿本文,除非另有明确说明,否则对过程中的步骤的任何引用假定该步骤可以由感兴趣的一方直接执行和/或由该方通过中介机制和/或中间实体间接执行,并且仍然在该步骤的范围内。即,除非直接执行是明确陈述的要求,否则不需要由感兴趣的一方直接执行步骤。例如,关于目的地或其他主题的涉及由感兴趣一方动作(例如,比较、提取、列出、超时和本文所记载的其他动作(以及,比较、比较的、提取、提取的等))的步骤可以涉及中间动作,诸如,由某一其他方转发、复制、上传、下载、编码、解码、压缩、解压缩、加密、解密、认证、调用等,但仍被理解为由感兴趣的一方直接执行。
不论何时参考数据和指令,应当理解,这些项配置计算机可读存储器和/或计算机可读存储介质,从而将其转换成特定物品,而不是简单地存在于纸上、一个人的头脑中、或者只是在电线上传播的信号。为了在美国的专利保护的目的,至少,存储器或其他计算机可读存储介质不是在In re Nuijten案件的美国专利和商标局(USPTO)解释下的可授予专利主题范围之外的传播信号或载波。在美国,没有任何权利要求覆盖信号本身,任何声称的权利要求解释在其表面上是不合理的。除非在美国以外授权的权利要求中另有明确说明,否则权利要求不覆盖信号本身。
此外,尽管在本文其他地方明显存在相反的含义,但是要理解在一方面的(a)计算机可读存储介质和计算机可读存储器以及另一方面的(b)传输介质(也被称为信号介质)之间的清晰区别。传输介质是传播信号或载波的计算机可读介质。相反,计算机可读存储介质和计算机可读存储器不是传播信号或载波的计算机可读介质。除非在权利要求中另有明确说明,否则“计算机可读介质”是指计算机可读存储介质,而不是传播信号本身。
本文中的“实施例”是示例。术语“实施例”不能与“本发明”互换。实施例可以自由地共享或借用方面以创建其他实施例(假设结果是可操作的),即使作为结果的方面的组合在本文中没有明确地描述其本身。要求每个被允许的组合被明确地描述对于本领域技术人员是不必要的,并且将违背识别专利说明书是为本领域技术人员撰写的策略。关于从甚至少量可组合特征产生的可能组合的数目的正式组合计算和非正式常见直觉也将指示对于本文中所描述的方面存在大量的方面组合。因此,要求对每个组合的明确记载将与要求专利说明书简洁的政策、并且要求读者在相关技术领域中具有知识相矛盾。
附图标记列表
提供以下列表是为了方便和支持附图并且作为本说明书的文本的一部分,其通过参考多个项目来描述创新。在此未列出的项目仍然可以是给定的实施例的一部分。为了文本的更好的易读性,在文本中引用项目的一些(但不是全部)记载附近记载给定的附图标记。可以参考不同的示例或给定项目的不同实例来使用相同的附图标记。附图标记列表是:
100 云计算操作环境,也称为云或操作环境
102 计算机系统
104 用户
106 外围设备
108 网络
110 处理器
112 计算机可读存储介质,例如RAM、硬盘
114 可移除的配置的计算机可读存储介质
116 可由处理器执行的指令
118 数据
120 数据存储库
122 数据,该数据的一致性被检查、或将被检查
124 数据一致性检查软件
126 其它软件,例如管理程序、固件、应用
128 除了处理器和存储器之外的系统硬件
200 一致性检查系统
202 数据集合
204 跳过的实体列表
206 问题列表,即,不一致列表
208 变量,例如t0截止、重新扫描轮次上限、重新扫描执行时间上限、包括未另外指定的那些的列表
210 待检查列表
212 包含待进行一致性检查的数据实体的组件
402 时间戳
404 数据的用户可见部分
406 实体标识符
500 流程图
502 列出(动词)待检查的实体
504 跳过(至少现在)对实体的一致性检查
506 将实体放在跳过列表中
508 存在(由存储库或其他组件中的数据实体完成的事物)
510 避免数据不一致性的假警报
512 假报警
514 比较两个实体的数据部分
516 修改实体的数据部分(或删除实体),
518 触发不一致性报警
520 数据不一致性报警
522 为不一致性扫描数据实体
524 为不一致性重新扫描数据实体
526 在为不一致性扫描或重新扫描期间的阶段
528 检查跳过的实体列表中的实体
530 获取实体最新状态
532 实体最新(最近)状态
534 测试实体状态是否改变
536 使用超时机制来限制重新扫描轮次或重新扫描执行时间;限制可以相对于先前限制增加或减少
538 超时机制
540 限制重新扫描轮次
542 重新扫描轮次
544 返回跳过的实体列表
546 返回问题(不一致性)列表
548 将实体添加到问题列表
550 重新扫描执行时间
552 减少假阴性
554 假阴性
556 报告数据或其他状态中的不一致性
558 数据或其他状态中的不一致性
560 避免需要来自更新数据实体状态的服务的停工时间
562 更新数据实体状态的服务
564 更新数据实体状态的服务的停工时间
566 选择截止时间值
568 截止时间值,例如T0
570 将实体留在跳过列表中
602 扫描逻辑(软件和硬件或专用硬件)
604 重新扫描逻辑(软件和硬件或专用硬件)
606 整体列出
608 重新扫描上限
操作环境
参考图1,用于实施例的操作环境100(也称为云100或分布式系统100)包括至少两个计算机系统102。示出了一个计算机系统102。分布式系统中的计算机系统102在硬件、软件或两者方面可以是相同的,但是关于硬件、软件或两者也可以彼此不同。给定的计算机系统102可以是多处理器计算机系统,或者不是。在给定的计算机系统中的一个或多个机器可以在云100内集群化、客户端-服务器网络化和/或对等网络化。单个的机器是计算机系统,并且一组协作机器也是计算机系统。数字存储设备或其它数字存储资源(诸如,硬盘、RAID系统、磁盘阵列、网络附接存储装置或其他非易失性存储设备)也是计算机系统。给定的计算机系统102还可以被配置为用于终端用户、用于管理员的计算资源(例如,具有应用)、被配置为服务器、被配置为分布式处理节点和/或以其他式被配置。
人类用户104可以通过使用显示器、键盘和其他外围设备106,经由打字文本、触摸、语音、移动、计算机视觉、手势和/或其他形式的I/O与计算机系统102交互。用户界面可以支持实施例与一个或多个人类用户之间的交互。用户界面可以包括命令行界面、图形用户界面(GUI)、自然用户界面(NUI)、语音命令界面,和/或其他用户界面(UI)表示。
系统管理员、开发者、工程师和终端用户各自是特定类型的用户104。代表一个或多个人行动的自动代理、脚本、回放软件等也可以是用户104。存储设备和/或网络设备在一些实施例中可以被认为是外围设备,并且在其他实施例中可以被认为是系统102的一部分或全部;可以以多于一种方式将给定的示例映射到权利要求。图1中未示出的其他计算机系统可以以技术方式使用例如经由网络接口装备到网络108的一个或多个连接与计算机系统102交互或与另一系统实施例交互。
每个计算机系统102包括至少一个逻辑处理器110。与其他合适的系统相同,计算机系统102还包括一个或多个计算机可读存储介质112。介质112可以是不同的物理类型。介质112可以是易失性存储器、非易失性存储器、位置固定的介质、可移除介质、磁性介质、光学介质、固态介质和/或其他类型的物理耐用存储介质(与仅仅是传播信号相反)。特别地,配置的介质114(诸如便携式(即,外部)硬盘驱动、CD、DVD、记忆棒或其他可移动非易失性存储器介质)可以在插入或以其他方式安装时成为计算机系统的功能上的一部分,使得其内容可访问以与处理器110交互并由处理器110使用。可移除配置介质114是计算机可读存储介质112的示例。计算机可读存储介质112的一些其他示例包括内置RAM、ROM、硬盘、以及用户104不容易移除的其他存储器存储设备。为了符合当前的美国专利要求,计算机可读介质、计算机可读存储介质和计算机可读存储器均不是在美国等待或授予的权利要求下的任何信号本身。
介质114被配置有可由处理器110执行的二进制指令116;在本文中,“可执行的”在广义上用于包括例如在虚拟机上运行的机器代码、可解释代码、字节码和/或代码。介质114还配置有数据118,数据118是通过指令116的执行来创建、修改、参考和/或以其他方式用于技术效果。指令116和数据118配置存储器或其他存储介质114,指令116和数据118驻留在存储器或其他存储介质114中;当该存储器或其他计算机可读存储介质是给定的计算机系统的功能部分时,配置该介质的代码的指令116和数据118也配置该计算机系统。
尽管实施例可以被描述为被实现为由计算设备(例如,通用计算机、服务器或集群)中的一个或多个处理器执行的软件指令,但是这样的描述并不意味着穷尽所有可能的实施例。本领域技术人员将理解,相同或相似的功能也可以全部或部分地直接在硬件逻辑中实现,以提供相同或相似的技术效果。备选地,或除了软件实现之外,本文所描述的技术功能可以至少部分地由一个或多个硬件逻辑组件执行。例如,并且在不排除其他实现的情况下,实施例可以包括硬件逻辑组件,诸如现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统组件(SOC)、复杂可编程逻辑器件(CPLD)和类似组件。例如,实施例的组件可以基于其输入、输出和/或其技术效果而被分组成交互功能模块。
除了处理器110(CPU、ALU、FPU和/或GPU)、存储器/存储介质112之外,操作环境还可以包括其他硬件128,例如诸如显示器、电池、总线、电源、有线和无线网络接口卡、加速器、机架和网络电缆。显示器可以包括一个或多个触摸屏,响应于来自笔或输入板的输入的屏幕、或仅用于输出操作的屏幕。诸如处理器、存储器和网络硬件的云硬件至少部分地由基础设施即服务(IaaS)提供商提供。
在一些实施例中,诸如人类用户I/O设备(屏幕、键盘、鼠标、输入板、麦克风、扬声器、运动传感器等)的外围设备106将与一个或多个处理器110和存储器进行可操作的通信。然而,实施例还可以深深地嵌入在诸如物联网的一部分的技术系统中,使得没有人类用户104直接地与该实施例交互。软件过程可以是用户104。
在一些实施例中,系统包括由网络108连接的多个计算机。网络接口装备可以例如使用诸如分组交换网络接口卡、无线收发器或电话网络接口的组件来提供对网络108的访问,该组件可以存在于给定的计算机系统中。然而,实施例还可以通过直接存储器访问、可移除非易失性介质或其他信息存储-检索和/或传输方法来通信技术数据和/或技术指令。
在一些实施例中,数据122的部分表示诸如产品特性、库存、物理测量、设置、图像、读数、目标、体积等的真实世界项目。这样的数据也通过备份、恢复、提交、中止、重新格式化和/或其他技术操作被转换。
验证的数据122、数据一致性检查代码124和图中所示和/或文中讨论的其他项目可以各自部分地或全部驻留在一个或多个硬件介质112内,从而将这些介质配置用于超越所有硬件-软件协作操作中固有的“正常”(即,最小共同特性(denominator))交互的技术效果。
本领域技术人员将理解,本文在“操作环境”下呈现的前述方面和其他方面可以形成给定实施例的一部分。本文档的标题不旨在提供对实施例和非实施例特征集合的特征的严格分类。
一个或多个项目可以在附图中以纲要形式示出、或者在括号内列出,以强调它们不一定是所示出的操作环境或所有实施例的一部分,而是可以与操作环境中的项目或本文所讨论的一些实施例交互操作。在任何附图或任何实施例中,不一定遵循不是纲要或括号形式的项目是不一定需要的。具体地,为了方便提供图1;包括图1中的项目并不意味着该项目、或该项目所描述的使用在本创新之前是已知的。
一致性检查实施例
本文提供了示例来帮助图示技术的方面,但是本文件中给出的示例并不描述所有可能的实施例。实施例不限于本文提供的具体实现、布置、显示、特征、方法或场景。给定的实施例可以包括例如附加的或不同的技术特征、机制、序列或数据结构,并且可以以其他方式偏离本文提供的示例。
如例如利用图2、图4和图6所示,一些实施例使用在一致性检查系统200中实现的算法来检查分布式在线系统100中的数据一致性。系统100可以在数据一致性检查期间正常地服务。一致性检查系统200(也称为数据一致性扫描系统200等)包括系统102,系统102被定制以执行使用一致性检查软件124实现的算法。该算法对相应存储库120中的两个或多个数据集合202进行操作。检查其一致性的数据122被组织成实体,也使用附图标记122来表示。在一致性检查期间,将一个存储库中的给定的实体122的实例与另一个存储库中的相同实体的实例进行比较,以查看它们是否一致,即,查看由用户看到的数据部分404是否相同。用户看不到的数据部分(例如,文件结束标记之后的位)可以不同而不违反一致性。此外,物理位置将明显不同,并且物理存储的对应特性(例如,所分配的扇区的数量和页面大小)也可以不同而不违反一致性。
所示的一致性检查系统200还包括并维护被跳过的实体列表204、问题列表206和支持变量208(诸如,定义哪些实体被比较以及哪些实体太新而无法比较的当前时间截止T0)、以及重新扫描上限。
图5图示了流程图500中的一些过程实施例。除非另有说明,否则附图中所示或以其他方式公开的技术过程将由一致性检查系统200自动执行。还可以部分自动且部分手动地执行过程到涉及人类管理员或其他人的延伸动作。本文中没有预想的创新是完全手动的。在给定的实施例中,过程的零个或多个示出的步骤可以被重复,可能具有要在其上操作的不同参数或数据。实施例中的步骤也可以以不同于图5中布置(从上到下的顺序)的顺序来完成。步骤可以以串联、部分重叠的方式或完全并行地执行。遍历流程图500以指示在过程期间执行的步骤的顺序可以从过程的一个执行不同于过程的另一个执行。流程图遍历的顺序也可以从一个过程实施例不同于另一个过程实施例。只要所执行的过程是可操作的并且符合至少一个权利要求,步骤也可以被省略、组合、重命名、重新分组或以其他方式脱离所示流程。
为了方便起见,以下的描述描绘了包含两个存储库组件A和B的目标在线系统100,其中A和B上的数据彼此相关。在其他示例中,可以存在多于两个的组件,因为这里呈现的方法可以被扩展。例如,如果存在其数据也与A和B的数据相关联的第三组件C,则实施例可以首先检查A和B之间的一致性,然后检查B和C之间的一致性,并且最终通过将其都放置在单个问题列表206中来将其结果合并在一起。
在所示的架构中,待检查的实体122各自具有指示其最后修改时间的相应时间戳属性402。组件A和B中的实体也共享作为实体标识符406的公共唯一密钥属性(例如学生ID),其是唯一的并且不被重复使用
在该所示架构的示例中,做出一些假设。一个假设是在一致性扫描期间,已经被删除的实体不会再次出现。即,如果具有唯一id X的实体已经被删除,则在一致性扫描期间将不会遇到或出现具有该id X的实体。另一个假设是系统中的任何机器之间的本地机器时间差是可预测的。换言之,在机器时间差上存在已知的或可确定的最大值或上限。
在一些实施例中,数据扫描如下阶段地进行。
第一扫描522阶段526:扫描逻辑602在待检查列表210中列出502所有来自A和B的实体,但是仅检查在时间T0之后未被修改的实体,其中T0=ST-TD,ST是数据扫描开始时间,TD是机器212之间的最大机器时间差。通过该方法,实施例可以保证所有扫描的数据在相同时间点T0反映系统状态。在第一扫描中,以下实体将被跳过504并且被放入506跳过的实体列表中:
(存在、存在)实体,即在组件212二者中均存在508的实体,但在T0之后修改516一个或两个组件实例。
(存在、不存在)实体,即,在一侧上不存在的实体(即,不存在于组件的一个组件中的实体)。在第一扫描中,这种类型的实体被跳过504,因为不可能知道“不存在”实体的最后修改时间,因此在一个或多个重新扫描阶段中使用定制的重新扫描逻辑604,以避免510这样实体的假报警512。
否则,可以比较514两个实体和来自两侧(例如,两个存储库)的实体信息,并且如果它们不一致,则触发518警报520。
重新扫描524阶段526:重新扫描逻辑604可以被执行多次。在一个有效的示例中,重新扫描将仅检查528在跳过的实体列表中的实体,该跳过的实体列表是从先前扫描轮次中产生506的。对于每个实体,一个是检查,重新扫描逻辑将以指定的顺序两次从两个组件获取530实体最近状态532:->A->B->A->B,其中“->A”是指从组件A获取实体的最近状态。重新扫描检查逻辑包括实现以下的软件和硬件:
对于(存在、存在)情况,如果测试534确定其状态在两个组件212的任一个中的两次获取操作期间未改变,则检查实体。否则,其将再次被放入506被跳过的实体列表中用于下一重新扫描轮次。
对于(存在、不存在)情况,只有在测试534确定其状态在两个组件212的两次获取操作期间没有改变时,则实体将被检查。否则,其将再次被放入506跳过的实体列表中用于下一重新扫描轮次。
在一些示例中,调用者可以使用536超时机制538或者限制540重新扫描轮次542来控制重新扫描执行时间550,或者直接限制540重新扫描时间550。示例可以返回544用于在结果中感知的跳过的实体列表。因为跳过的实体在扫描期间保持改变,跳过的实体可以被添加548到问题列表中。
假阴性554是在数据扫描中未被捕捉到的真实的不一致性问题。可能存在假阴性,因为即使在跳过的实体列表中仍然存在实体,归因于超时或达到最大重新扫描时间或轮次约束,重新扫描阶段也可以结束。
通过增加540最大重新扫描时间可以减少假阴性,或者可以在未来的数据扫描中捕获假阴性。如果无效的实体停留在系统中,最终它应当被数据扫描捕获。即使在极端情况下(实体被相当频繁地修改并且永远不会被检查),其很可能处于健康状态而不是不一致的状态,因为不健康的实体可能不会被如此频繁地更新。
图3示出了进一步图示适用于如本文教导的一致性检查的算法的流程图。
配置的介质
一些实施例包括配置的计算机可读存储介质112。介质112可以包括磁盘(磁性的、光学的或其他)、RAM、EEPROM或其他ROM,和/或其他可配置的存储器,具体地地包括计算机可读介质(其不仅仅是传播的信号)。被配置的存储介质可以具体地是可移除存储介质114(诸如,CD、DVD或闪存)。可以是可移除的或不可移除的、并且可以是易失性的或非易失性的通用存储器可以被配置为使用项目(诸如,一致性检查软件124、跳过列表204以及以数据118和指令116形式其他列表、从可移除介质114和/或诸如网络连接的另一个源的读取)的实施例以形成配置的介质。配置的介质112能够使得计算机系统执行用于验证如本文所公开的数据一致性的技术过程步骤。因此,附图有助于图示配置的存储介质实施例和过程实施例、以及系统和过程实施例。特别地,图3、图5图示的或本文中以其他方式教导的任何过程步骤可以用于帮助配置存储介质以形成配置的介质实施例。
示例性分析
以下分析图示了本文公开的两阶段扫描如何可以实现零假报警的目标。
系统抽象。假设存在由两个组件A、B组成的分布式系统。A和B在实体E上具有关系。A和B的关系定义如下:
1.A中的E具有m个可能状态:A1、A2、...、Am。
a.一旦A中的E从状态A1离开,它将永远不会回到A1;(开始状态)
b.一旦A中的E进入状态Am,它将永远不会去到其他状态;(结束状态)
c.A1和Am不能使用状态值区分。
2.B中的E具有n个可能的状态:B1、B2、...、Bn。
a.一旦B中的E从状态B1离开,它将永远不会回到B1;(开始状态)
b.一旦B中的E进入状态Bn,它将永远不会去到其他状态。(结束状态)
c.B1和Bn不能使用状态值区分。
3.M(S)是获得E进入状态S的时间点的函数。
a.M(A1)和M(B1)是未知的,(为了分析,认为其从来不存在);
b.M(Am)和M(Bn)是未知的,(对于分析,认为它存在,但已被清除);
c.对于除A1、B1、Am、Bn之外的所有其他状态,M(S)不是未知的。
4.在任何给定时间p,A中的E必须在一个且仅一个状态中。
5.在任何给定时间p,B中的E必须在一个且仅一个状态中。
6.对于A或B中的任何给定的两个状态S1、S2,如果S1==S2指示M(S1)==M(S2)。
7.在时间点p处的系统状态被定义为在P处的A的状态中的E和在P处的B的状态中的E的组合。然后,存在系统状态的m*n个可能的组合:(A1、B1)、(A1、B2)、...、(Am、Bn)。
a.在这些可能的系统状态中,它们中的多个被定义为无效的系统状态。假设(Ai、Bj)是无效的系统状态,则无效系统状态的定义是:在任何给定时间点,如果A的状态中的E是Ai,则B的状态中的E不能是Bj;并且如果B的状态中的E是Bj,则A的状态中的E不能是Ai。
b.不是无效系统状态的所有其他系统状态被定义为有效的系统状态。
c.如果(A0、Bj)是无效的系统状态,则(Am、Bj)也是无效的系统状态。
d.如果(Ai、B0)是无效的系统状态,则(Ai、Bn)也是无效的系统状态。
8.A状态中的E只能从A检索,B状态中的E只能从B检索。假设S是在时间点处A或B中的E的状态,定义:
a.ST(S)是获得状态S的开始查询时间的函数;
b.RT(S)是获得状态S的接收时间的函数;
c.ST(S)<RT(S)始终为真;
d.基于上述,可以总是找到ST(S)和RT(S)之间的时间,使得E的状态是S,并且使用函数T(S)来获得该时间。然后ST(S)<=T(S)<=RT(S)。
实体检查逻辑设计。首先对于实体E扫描逻辑:
·限定时间t0<现在,时间t0是数据扫描时间分割线。不检查t0之后修改的实体。
·检索A中的E的状态,因为At0在t0之后,推导出ST(At0)>t0;
·检索B中的E的状态,因为Bt0在t0之后,推导出ST(Bt0)>t0。
·如果M(At0)不是未知的并且M(Bt0)不是未知的
ο如果M(At0)<t0并且M(Bt0)<t0
·如果(At0、Bt0)是无效系统状态,则敲响警报[1],
·否则结束检查E,由于它是一个匹配
ο否则将E添加到跳过的实体列表作为(存在、存在)实体
·否则如果M(At0)未知并且M(Bt0)未知
ο结束检查E
·否则如果M(At0)未知或M(Bt0)未知
ο将E添加到跳过的实体列表作为(存在、不存在)实体对于实体E的重新扫描逻辑(从跳过的实体列表挑选E):
·从A获得E的最近状态,作为状态At1;
·从B获得E的最近状态,作为状态Bt1,其中ST(Bt1)>RT(At1);
·从A获得E的最近状态,作为At2,其中ST(At2)>RT(Bt1);
·从B获得E的最近状态,作为Bt2,其中ST(Bt2)>RT(At2);
·检查逻辑:
ο对于(存在、不存在)实体,
·如果M(At1)==M(At2)==未知并且Bt1==Bt2
如果At2与Bt1不匹配,则敲响警报[2.1];
否则结束检查E。
·否则如果At1==At2and M(Bt1)==M(Bt2)==未知
如果At2与Bt1不匹配,则敲响警报[2.2];
否则结束检查E。
·否则将E添加到跳过的实体列表
ο对于(存在、存在)实体
·如果At1==At2或Bt1==Bt2
如果At2与Bt1不匹配,则敲响警报[3];
否则结束检查E。
·否则将E添加到跳过的实体列表
零假警报证明方法:
为证明(Ai、Bj)是真警报,则可以证明存在时间点或时间段,在该时间点或时间段,A的状态中的E为Ai,并且B的状态中的E为Bj,则证明其不是假警报。
零假警报证明。参考图7,对于警报[1],
·M(At0)<t0<ST(At0)<=T(At0)→从时间M(At0)到T(At0),E在A中的状态At0中;
·M(Bt0)<t0<ST(Bt0)<=T(Bt0)→从时间M(Bt0)到T(Bt0),E在B中的状态Bt0中;
·→最大值[M(At0),M(Bt0)]<t0<[ST(At0),ST(Bt0)]的最小值;
·→从时间最大值[M(At0),M(Bt0)]到时间[ST(At0),ST(Bt0)]的最小值,(At0,Bt0)是真阳性。
参考图8,对于警报[2.1],
·M(At1)==M(At2)==未知,→At1是A0或Am,At2是A0或Am。
·假设At1==A0,At2==A0,则从时间T(At1)到T(At2),A中的E保持在A0状态中,可以发现时间T(Bt1),在时间T(Bt1)处,(A0,Bt1)为真阳性。
·假设At1==Am,At2==Am,则从时间T(At1)到T(At2),A中的E保持在状态Am中,→因此在时间T(Bt1)处,(Am,Bt1)为真阳性。
参考图9,假设At0==A0,At2==Am,则对于晚于RT(At2)的任何时间,E在状态Am中。因为T(Bt2)>ST(Bt2)>RT(At2),所以在时间T(Bt2)处,(Am,Bt2)为真阳性。注意:基于系统抽象[1.a,b],情况(At1==Am and At2==A0)是不可能的。
可以使用与警报[2.1]相同的方式证明警报[2.2]。
对于警报[3],
·如果At1==At2,因为T(At1)<T(Bt1)<T(At2)并且M(At1)==M(At2)→在时间T(Bt1),(At2,Bt1)为真阳性。
·如果Bt1==Bt2,因为T(Bt1)<T(At2)<T(Bt2)并且M(Bt1)==M(Bt2)→在时间T(At2),(At2,Bt1)为真阳性。
一些附加的组合和变型
代码、数据结构、逻辑、组件、通信、和/或其功能等价物的这些组合中的任何组合还可以与如上所述的系统或其变型中的任何组合。过程可以包括可操作的任何子集或组合或序列中的本文所描述的任何步骤。每个变型可以单独出现,或与任何一个或多个其他变型组合出现。每个变形可以与任何过程一起发生,并且每个过程可以与任何一个或多个其他过程组合。每个过程或过程组合(包括变型)可以与上文所述的任何介质组合和变型组合。
在一些实施例中,扫描522和重新扫描524检测分布式计算环境的存储库或其他组件212中的数据实体之间的状态不一致性558。首先,基于截止时间T0来扫描实体。将不期望的状态比较的实体放置506在跳过的实体列表中。通过显示或打印列表、通过电子邮件或发送给管理员等来报告556在其他实体中发现的任何不一致性。然后,后续重新扫描获取530状态,并尝试削减跳过的实体列表。重新扫描可以被限制540。在不需要560从更新数据实体状态的服务562的要求停工时间564的情况下,可以检测不一致性,并且可以避免510不一致性的假报告。
附加的示例#1。用于检测数据不一致性的计算技术方法包括选择566截止时间值T0;扫描522相应组件212中的数据实体122,数据实体具有包括状态532的数据部分404;将存在于两个组件中、但在T0之后在一个或两个组件中被修改的任何扫描数据实体放入506跳过的列表204中;将仅存在于一个组件中的任何扫描数据实体放入506跳过的列表中;比较514不处在跳过列表中的数据实体的数据部分404,并且如果任何经比较的实体在其数据部分中不同,则触发518不一致性警报520;以及执行一个或多个重新扫描524阶段526以尝试对处在跳过列表中的数据实体的状态的比较。
附加的示例#2。附加示例#1的方法,其中组件212在这里被指定为组件A和组件B,其中一个或多个重新扫描阶段526中的每一个重新扫描阶段以交织顺序从组件中两次获取530数据实体的近期状态532,即从组件A获取,然后从组件B获取,然后从组件A获取,并且然后从组件B获取,其中对于因为实体存在于两个组件中但在截止时间568之后在一个或两个组件中被修改516而使实体被放入506到跳过列表中的情况,如果实体状态在获取期间在至少一个组件中未改变,则针对不一致性558比较514实体状态,否则实体被留在570跳过列表中,并且其中对于因为实体仅存在508于组件的一个组件中而使所述实体被放入506到跳过列表中的情况,如果实体状态在获取期间在任一组件中未改变,则针对不一致性比较514实体状态,否则实体被留在570跳过的列表中。
附加的示例#3。附加示例#2的方法,其中重新扫描阶段526由执行时间550上限、执行多少重新扫描轮次542的上限或两者限制540。重新扫描时的这种上限608和时间差上限是支持变量208的每个示例。
附加的示例#4。附加示例#1的方法,其中在不需要560从更新数据实体的任何服务562的要求停工时间564的情况下,执行该方法。
附加的示例#5。附加示例#1的方法,其中该方法避免510假警报512,因为仅实际数据不一致性触发518不一致性报警520。
附加的示例#6。一种计算机可读存储介质,其被配置有可执行指令116以执行附加示例#1至#5的任何方法。
附加的示例#7。一种被装配用于数据一致性检测的分布式计算系统200,该系统包括:至少两个组件212,每个组件212具有至少一个处理器110;与处理器可操作的通信的存储器112;以及具有相应状态532的数据实体122;一致性检查软件124,驻留在至少一个存储器中并且可以使用至少一个处理器而执行以实现一种方法,该方法(a)将存在于两个组件中但在截止时间T0之后在一个或两个组件中被修改516的任何数据实体E_E放入506跳过列表204中,(b)将仅存在508于一个组件中的任何扫描数据实体E_N放入506到跳过列表中,(c)比较514不处于跳过列表中的数据实体的状态,(d)如果任何经比较的实体在其状态不同,则报告556不一致性,以及(e)执行一个或多个重新扫描阶段526以尝试在跳过列表中的数据实体的状态的比较。
附加的示例#8。附加示例#7的系统,其中一致性检查软件(f)从组件获取530实体的更多较近期的状态532,(g)在实体状态在获取期间在至少一个组件中未变化时,针对实体E_E比较514状态,(h)当实体状态在获取期间在任一组件中未变化时,针对实体E_N比较514状态,(i)否则在跳过的列表中留下570实体,以及(j)报告在比较时其状态为不一致的任何实体。
附加的示例#9。附加示例#8的系统,其中重新扫描阶段由支持变量208限制540,支持变量208包括执行时间上限550、执行多少重新扫描轮次542的上限、或两者。
附加的示例#10。附加示例#7的系统,其中系统包括更新数据实体的状态的服务562,并且其中一致性检查软件执行和报告556任何不一致性,而不需要564来自服务的停工时间560。
附加的示例#11。附加示例#7的系统,其中一致性检查软件避免510假警报512,因为仅报告556实际数据的不一致性。
结论
尽管本文中明确地示出和描述了特定实施例为过程、配置的介质或系统,但是应当理解,一种类型的实施例的讨论也一般延伸到其它实施例类型。例如,结合图3和图5的过程的描述还有助于描述配置的介质,并且帮助描述如结合其它附图所讨论的系统和制造的技术效果和操作。不会认为来自一个实施例的限制必然被读入另一个实施例。特别地,过程不一定限于在讨论系统或制造(例如,配置的存储器)时呈现的数据结构和布置。
本领域技术人员将理解,实现细节可以涉及特定代码(例如,特定API、特定字段和特定样本程序),因此不需要出现在每个实施例中。本领域技术人员还将理解,在讨论细节中使用的程序标识符和一些其它术语是实现特定的,并且因此不需要涉及每个实施例。尽管如此,虽然它们不一定需要存在于此,但是这样的细节可以通过提供上下文来帮助一些读者,和/或可以图示本文所讨论的技术的许多可能实现中的几个。
除非本文明确陈述这样的排除,否则本文参考具有一些特征X的实施例和本文其它地方参考具有一些特征Y的实施例不从本公开中排除具有特征X和特征Y的实施例。所有可能的否定权利要求限制在本公开的范围内,在某种意义上,被声明为实施例的一部分的任何特征也可以被明确地从另一实施例中的包含去除,即使在本文任何示例中没有给出该特定排除。术语“实施例”在本文中仅仅被用作“过程、系统、制造品、配置的计算机可读介质和/或本文中以与适用法律一致的方式应用的教导的其它示例”的更方便的形式。因此,只要实施例与至少一个权利要求一致,给定的“实施例”可以包括本文公开的特征的任何组合。
并非图中所示的每个项目都需要存在于每个实施例中。相反,实施例可以包含在附图中未明确示出的一个或多个项目。尽管这里在文本和附图中通过具体示例示出了一些可能性,但是实施例可以脱离这些示例。例如,示例的具体技术效果或技术特征可以在不同的硬件和/或软件中被省略、重命名、不同地分组、重复、实例化、或者是出现在两个或多个示例中的效果或特征的混合。在一些实施例中,在一个位置处示出的功能还可以提供在不同位置处;技术人员认识到,可以在给定实现中以各种方式定义功能模块,而不必从视为整体的交互模块的集合中省略期望的技术效果。
贯穿全文通过附图标记参考了附图。在与给定附图标记相关联的短语中、在附图中或在文本中的任何明显不一致性应当被理解为简单地加宽由该标记引用的范围。即使使用相同的附图标记,给定附图标记的不同实例可以指代不同的实施例。类似地,给定的附图标记可以用于指代动词、名词和/或每个对应的实例,例如,处理器110可以通过执行它们来处理110指令。
如本文所使用的,诸如“一个”和“该/所述”的术语包括所指示的项目或步骤中的一个或多个。特别地,在权利要求中,对项目的引用通常是指存在至少一个这样的项目,并且对步骤的引用意味着执行步骤的至少一个实例。
标题仅是为了方便;关于给定主题的信息可以在其标题指示该主题的部分之外找到。
所提交的所有权利要求和摘要是说明书的一部分。
尽管已经在附图中示出并在上面描述了示例性实施例,但是对于本领域普通技术人员显而易见的是,在不脱离权利要求中阐述的原理和概念的情况下,可以进行许多修改,并且这样的修改不需要包含整个抽象概念。虽然以结构特征和/或过程动作专用的语言描述了主题,但是应当理解,所附权利要求中限定的主题不一定限于权利要求上面描述的具体技术特征或动作。在给定的定义或示例中识别的每种方式或方面或技术效果不必存在于或用于每个实施例中。相反,所描述的具体特征和动作和效果被公开为在实现权利要求时考虑的示例。
所有不包括整个抽象概念但落入权利要求的等同物的含义和范围内的变化将在其法律允许的最大范围内被包括在其范围内。

Claims (11)

1.一种用于检测数据不一致性的计算技术方法,所述方法包括:
选择截止时间值T0;
扫描相应组件中的数据实体,所述数据实体具有包括状态的数据部分;
将存在于两个组件中但在T0之后在一个或两个组件中被修改的任何扫描到的数据实体放入跳过列表中;
将存在于所述组件中的仅一个组件中的任何扫描到的数据实体放入所述跳过列表中;
比较不处于所述跳过列表中的数据实体的数据部分,并且如果任何经比较的实体在其数据部分中不同,则触发不一致性警报;以及
执行一个或多个重新扫描阶段以尝试对处于所述跳过列表中的数据实体的状态的比较。
2.根据权利要求1所述的方法,其中所述组件在此被指定为组件A和组件B,其中所述一个或多个重新扫描阶段中的每一个重新扫描阶段以交织顺序从所述组件两次获取数据实体的近期的状态,即,从组件A获取、然后从组件B获取、然后从组件A获取、并且然后从组件B获取,其中对于因为实体存在于两个组件中但在截止时间之后在一个或两个组件中被修改而使所述实体被放入所述跳过列表中的情况,如果所述实体状态在所述获取期间在至少一个组件中未改变,则针对不一致性比较所述实体状态,否则将所述实体留在所述跳过列表中,并且其中对于因为实体仅存在于所述组件的一个组件中而使所述实体被放入所述跳过列表中的情况,如果所述实体状态在所述获取期间在任一组件中均未变化,则针对不一致性比较所述实体状态,否则所述实体被留在所述跳过列表中。
3.根据权利要求2所述的方法,其中所述重新扫描阶段由执行时间上限、执行多少重新扫描轮次的上限或两者所限制。
4.根据权利要求1所述的方法,其中所述方法被执行而不需要来自更新所述数据实体的任何服务的停工时间。
5.根据权利要求1所述的方法,其中所述方法避免假警报,因为仅实际数据的不一致性触发所述不一致性警报。
6.一种计算机可读存储介质,所述计算机可读存储介质被配置有可执行指令用以执行权利要求1至5中任一项所述的方法。
7.一种配备用于数据不一致性检测的分布式计算系统,所述系统包括:
至少两个组件,每个组件具有至少一个处理器、与所述处理器可操作的通信的存储器、以及具有相应状态的数据实体;
一致性检查软件,所述一致性检查软件驻留在至少一个存储器中、并且使用至少一个处理器而可执行以执行方法,所述方法(a)将存在于两个组件中但在截止时间T0之后在一个或两个组件中被修改的任何数据实体E_E放入跳过列表中,(b)将仅存在于所述组件中的一个组件中的任何扫描到的数据实体E_N放入所述跳过列表中,(c)比较不处于所述跳过列表中的数据实体的状态,(d)如果任何经比较的实体在其状态中不同,则报告不一致性,以及(e)执行一个或多个重新扫描阶段以尝试对处于所述跳过列表中的数据实体的状态的比较。
8.根据权利要求7所述的系统,其中一致性检查软件(f)从所述组件获取实体的较近期的状态,(g)在所述实体状态在所述获取期间在至少一个组件中未变化时,比较实体E_E的状态,(h)当所述实体状态在所述获取期间在任一组件中未变化时,比较实体E_N的状态,(i)否则将实体留在所述跳过列表中,以及(j)报告在比较时状态不一致的任何实体。
9.根据权利要求8所述的系统,其中所述重新扫描阶段由执行时间上限、执行多少重新扫描轮次的上限或两者所限制。
10.根据权利要求7所述的系统,其中所述系统包括更新数据实体的所述状态的服务,并且其中所述一致性检查软件执行和报告任何不一致性而不需要从所述服务要求停工时间。
11.根据权利要求7所述的系统,其中所述一致性检查软件避免假警报,因为仅实际数据不一致性被报告。
CN201710114248.4A 2017-02-28 2017-02-28 分布式系统中的数据一致性检查 Active CN108509460B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201710114248.4A CN108509460B (zh) 2017-02-28 2017-02-28 分布式系统中的数据一致性检查
PCT/CN2017/079051 WO2018157430A1 (en) 2017-02-28 2017-03-31 Data consistency check in distributed system
US16/480,586 US11481380B2 (en) 2017-02-28 2017-03-31 Data consistency check in distributed system
EP17898566.9A EP3566150B1 (en) 2017-02-28 2017-03-31 Data consistency check in distributed system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710114248.4A CN108509460B (zh) 2017-02-28 2017-02-28 分布式系统中的数据一致性检查

Publications (2)

Publication Number Publication Date
CN108509460A true CN108509460A (zh) 2018-09-07
CN108509460B CN108509460B (zh) 2021-07-20

Family

ID=63369673

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710114248.4A Active CN108509460B (zh) 2017-02-28 2017-02-28 分布式系统中的数据一致性检查

Country Status (4)

Country Link
US (1) US11481380B2 (zh)
EP (1) EP3566150B1 (zh)
CN (1) CN108509460B (zh)
WO (1) WO2018157430A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109982426A (zh) * 2019-03-21 2019-07-05 中国科学院合肥物质科学研究院 一种无人驾驶车辆传感器数据离线同步方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11222005B1 (en) * 2017-07-18 2022-01-11 EMC IP Holding Company LLC Proactive storage system configuration consistency validation
CN111897683A (zh) * 2020-07-10 2020-11-06 广东小天才科技有限公司 电子设备及其故障修复方法和装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1784677A (zh) * 2004-03-31 2006-06-07 微软公司 用于数据库备份的一致性检验的系统和方法
US20090172298A1 (en) * 2007-12-31 2009-07-02 Yoon Ki W Cached dirty bits for context switch consistency checks
CN102934114A (zh) * 2010-06-15 2013-02-13 微软公司 用于文件系统的检查点
WO2013187816A1 (en) * 2012-06-15 2013-12-19 Telefonaktiebolaget Lm Ericsson (Publ) Method and a consistency checker for finding data inconsistencies in a data repository
US20160110406A1 (en) * 2014-10-16 2016-04-21 Microsoft Technology Licensing, Llc Validation of data across multiple data stores
CN106294611A (zh) * 2016-08-02 2017-01-04 重庆农村商业银行股份有限公司 银行核心系统及新老核心系统数据切换方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6751636B1 (en) 2000-12-05 2004-06-15 Silicon Graphics, Inc. System and method for maintaining and recovering data consistency across multiple instances of a database
EP1574955B1 (en) 2004-03-12 2012-10-24 Sap Ag Management of inbound conflicts when merging data of distributed systems
US7774319B2 (en) 2004-08-11 2010-08-10 Sap Ag System and method for an optimistic database access
CN101192971B (zh) * 2006-11-23 2011-05-11 中兴通讯股份有限公司 主备数据一致性检测方法
US8126848B2 (en) 2006-12-07 2012-02-28 Robert Edward Wagner Automated method for identifying and repairing logical data discrepancies between database replicas in a database cluster
US20080140734A1 (en) * 2006-12-07 2008-06-12 Robert Edward Wagner Method for identifying logical data discrepancies between database replicas in a database cluster
US7711716B2 (en) 2007-03-06 2010-05-04 Microsoft Corporation Optimizations for a background database consistency check
US8326800B2 (en) 2011-03-18 2012-12-04 Microsoft Corporation Seamless upgrades in a distributed database system
EP2691878A1 (en) * 2011-03-28 2014-02-05 Telefonaktiebolaget L M Ericsson (PUBL) Data management in a data virtualization environment
US9235607B1 (en) * 2012-03-29 2016-01-12 Google Inc. Specifying a predetermined degree of inconsistency for test data
US9652220B2 (en) 2015-05-11 2017-05-16 Sap Portals Israel Ltd. Zero down-time deployment of new application versions
US11442919B2 (en) * 2015-07-31 2022-09-13 Accenture Global Services Limited Data reliability analysis
CN105589961B (zh) * 2015-12-21 2019-02-19 武汉达梦数据库有限公司 一种数据库实时同步系统数据一致性的检测方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1784677A (zh) * 2004-03-31 2006-06-07 微软公司 用于数据库备份的一致性检验的系统和方法
US20090172298A1 (en) * 2007-12-31 2009-07-02 Yoon Ki W Cached dirty bits for context switch consistency checks
CN102934114A (zh) * 2010-06-15 2013-02-13 微软公司 用于文件系统的检查点
WO2013187816A1 (en) * 2012-06-15 2013-12-19 Telefonaktiebolaget Lm Ericsson (Publ) Method and a consistency checker for finding data inconsistencies in a data repository
US20160110406A1 (en) * 2014-10-16 2016-04-21 Microsoft Technology Licensing, Llc Validation of data across multiple data stores
CN106294611A (zh) * 2016-08-02 2017-01-04 重庆农村商业银行股份有限公司 银行核心系统及新老核心系统数据切换方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109982426A (zh) * 2019-03-21 2019-07-05 中国科学院合肥物质科学研究院 一种无人驾驶车辆传感器数据离线同步方法

Also Published As

Publication number Publication date
EP3566150A1 (en) 2019-11-13
EP3566150A4 (en) 2020-09-30
EP3566150B1 (en) 2021-10-27
CN108509460B (zh) 2021-07-20
US20190384758A1 (en) 2019-12-19
US11481380B2 (en) 2022-10-25
WO2018157430A1 (en) 2018-09-07

Similar Documents

Publication Publication Date Title
CN109416651B (zh) 多租户云计算环境中的更新协调
US10152309B2 (en) Cross-library framework architecture feature sets
CN105247483B (zh) 应用内的带外框架库
US11947933B2 (en) Contextual assistance and interactive documentation
US11327877B2 (en) Pipeline performance improvement using stochastic dags
US9021428B2 (en) Troubleshooting visuals and transient expressions in executing applications
US20170169339A1 (en) Optimized execution order correlation with production listing order
US10768904B2 (en) System and method for a computational notebook interface
US11392427B2 (en) Lock-free reading of unitary value sets
US20220129540A1 (en) Runtime security analytics for serverless workloads
CN108509460A (zh) 分布式系统中的数据一致性检查
US20230289444A1 (en) Data traffic characterization prioritization
US10078562B2 (en) Transactional distributed lifecycle management of diverse application data structures
US20220004577A1 (en) Techniques for visualizing dependencies in a data analytics system
US10606667B2 (en) Precondition exclusivity mapping of tasks to computational locations
US11169980B1 (en) Adaptive database compaction
Wiktorski Data-intensive systems: Principles and fundamentals using Hadoop and spark
US9779132B1 (en) Predictive information discovery engine
US20240160442A1 (en) Working context transfer across development environments
KR102651294B1 (ko) 화면 구성 요소에 대한 정보 수집을 지원하는 방법
US20230325159A1 (en) Register allocation heuristics order
Schiavi Performance measurements in a high throughput computing environment
Kadirvel Techniques and tools for an autonomic approach to fault and performance management in Map-Reduce

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
GR01 Patent grant
GR01 Patent grant