CN110019102A - 分布式数据管理系统及方法 - Google Patents
分布式数据管理系统及方法 Download PDFInfo
- Publication number
- CN110019102A CN110019102A CN201811109884.9A CN201811109884A CN110019102A CN 110019102 A CN110019102 A CN 110019102A CN 201811109884 A CN201811109884 A CN 201811109884A CN 110019102 A CN110019102 A CN 110019102A
- Authority
- CN
- China
- Prior art keywords
- node
- computing device
- file
- data
- update
- 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
Links
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/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
-
- 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
-
- 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/273—Asynchronous replication or reconciliation
-
- 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/178—Techniques for file synchronisation in file systems
-
- 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/18—File system types
- G06F16/182—Distributed file systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/30—Services specially adapted for particular environments, situations or purposes
- H04W4/38—Services specially adapted for particular environments, situations or purposes for collecting sensor information
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)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及分布式管理系统及方法。一种计算装置包括被配置为与第二计算装置通信的接口、被配置为存储与存储在第二计算装置处的文件的第二副本同步的文件的第一副本的存储器以及处理器。处理器被配置为响应于在接口不能与第二计算装置通信时接收到对文件的更新,来访问指示与包括该文件的多个文件中的每一个相关联的同步设置的版本控制管理数据。处理器被配置为在确定版本控制管理数据指示与该文件相关联的第一同步设置的条件下,将更新写入第一副本,以及在确定版本控制管理数据指示与该文件相关联的第二同步设置的条件下,避免将更新写入第一副本。
Description
技术领域
本公开一般涉及分布式数据管理系统。
背景技术
分布式计算机系统使得不同位置的多个装置能够访问共享服务或共享数据,如通过一个或多个网络连接,并且与集中式计算机系统相比提供改进的可扩展性。一种类型的分布式计算机系统是共享文件系统,其中组数据存储在集中式服务器(或小型服务器组)中。由于共享数据存储在单个(或几个)位置,因此共享文件系统容易受到单点故障(或少量故障点)的影响。
另一种类型的分布式计算机系统是分布式数据存储系统。在分布式数据存储系统中,组数据被拷贝(例如,复制)并存储在多个节点处,这使得分布式数据存储系统能够使用复制的数据容忍故障或网络断开。出于这个原因,分布式数据存储系统已被用作企业分布式系统的基础,例如数据中心中的计算机集群。这些企业分布式系统通常包括通过一个或多个相对安全的网络连接的大量单个节点(如,装置)。
为了保持多个节点上的组数据之间的一致性,可以由人类网络管理员设置同步策略。当企业分布式系统的一个或多个节点断电或断开时,只要特定数量的节点(如,法定数量)保留在组中,同步策略可以允许企业分布式系统的一组节点继续操作。组的其余节点可以继续更新和复制组数据,并且当节点返回到组时,返回节点通过检索存储在其他节点之一处的组数据的副本并用检索到的副本重写返回节点处的任何组数据来执行数据协调。通过从组的另一节点复制组数据,防止返回节点具有差异的组数据,尽管以在节点与组断开时丢失由返回节点生成或接收的任何数据为代价。
这种“一刀切”的同步和协调策略可以在包括大量节点、相对稳定的网络和执行某些管理操作的人类网络管理员的企业分布式系统(如数据中心)中很好地工作。然而,在不具有相同特征的分布式数据管理系统中,特定的同步和协调策略可能不足。例如,航空电子装置环境(如,飞机系统)中的分布式数据管理系统的特征可以是更少的节点、更不稳定的网络、未计划或突然的断电和上电操作、多个节点同时加入系统、独立/可中断的电源电路、很少或没有人工网络管理,以及无论组中的节点数量多少继续操作(对于至少某些应用程序)。此外,对于至少某些应用程序,数据协调期间的数据丢失可能会对系统性能产生负面影响。由于这些不同的操作条件,企业分布式系统尚未扩展到某些操作环境,如基于车辆的系统或“物联网”(IoT)装置。
发明内容
在特定实施方式中,一种用于分布式数据管理系统的计算装置包括:接口,被配置为与分布式数据管理系统的第二计算装置通信;存储器,被配置为存储与存储在第二计算装置处的文件的第二副本同步的文件的第一副本,以及处理器。处理器被配置为响应于在接口不能与第二计算装置通信时接收到对文件的更新来访问版本控制管理数据,对于包括该文件的多个文件的每个特定文件,该版本控制管理数据指示与特定文件关联的同步设置。处理器被配置为在确定版本控制管理数据指示与文件相关联的第一同步设置的条件下,将更新写入文件的第一副本。处理器还被配置为,在确定版本控制管理数据指示与文件相关联的第二同步设置的条件下,避免将更新写入文件的第一副本。
在另一特定实施方式中,一种分布式数据管理方法包括在第一计算装置处存储与存储在第二计算装置处的文件的第二副本同步的文件的第一副本。该方法进一步包括:响应于在与第二计算装置的通信不可用时接收到对文件的更新,访问版本控制管理数据,针对包括该文件的多个文件的每个特定文件,该版本控制管理数据指示与该特定文件相关联的同步设置。该方法包括,在确定版本控制管理数据指示与文件相关联的第一同步设置的条件下,将更新写入文件的第一副本。该方法进一步包括,在确定版本控制管理数据指示与文件相关联的第二同步设置的条件下,避免将更新写入文件的第一副本。
在另一特定实施方式中,一种分布式数据管理系统包括第一计算装置和第二计算装置。第一计算装置包括:第一接口,被配置为与第二计算装置的第二接口通信;第一存储器,被配置为存储与存储在第二计算装置处的文件的第二副本同步的文件的第一副本,以及第一处理器。第一处理器被配置为响应于在第一接口不能与第二接口通信时接收到对文件的第一更新,来访问版本控制管理数据的第一副本,针对包括该文件的多个文件中的每个特定文件,该版本控制管理数据指示与特定文件关联的同步设置。第一处理器被配置为在确定版本控制管理数据的第一副本指示与文件相关联的第一同步设置的条件下,将第一更新写入文件的第一副本。第一处理器进一步被配置为,在确定版本控制管理数据的第一副本指示与文件相关联的第二同步设置的条件下,避免将第一更新写入文件的第一副本。第二计算装置包括:第二接口,被配置为与第一计算装置的第一接口通信,以及第二存储器,被配置为存储文件的第二副本。
附图说明
图1是示出分布式数据管理系统的特定实施方式的框图,该分布式数据管理系统基于每个目录或每个文件同步数据。
图2是示出以基于树的版本管理方案为基础执行数据协调的分布式数据管理系统的特定实施方式的框图;
图3是执行数据同步和协调的方法的示例的流程图;
图4示出根据本公开的方面的分布式数据管理系统的装置的操作的第一示例;
图5示出根据本公开的方面的分布式数据管理系统的装置的操作的第二示例;
图6示出根据本公开的方面的分布式数据管理系统的装置的操作的第三示例;
图7示出根据本公开的方面的分布式数据管理系统的装置的操作的第四示例;
图8示出根据本公开的方面的分布式数据管理系统的装置的操作的第五示例;
图9是根据本公开的方面的指示数据协调的示例的有向非循环图;
图10是基于每个文件或每个目录执行数据同步的方法的示例的流程图;以及
图11是包括分布式数据管理系统的飞机的框图,该分布式数据管理系统包括图1和图2的计算装置。
具体实施方式
参考附图描述了特定实施方式。在说明书中,在整个附图中,共同的特征由共同的参考标号表示。如本文所使用的,各种术语仅用于描述特定实施方式的目的,而不旨在是限制性的。例如,除非上下文另有明确说明,否则单数形式“一(a)”、“一个(an)”和“该(the)”也旨在包括复数形式。可以进一步理解,术语“包含”可以与“包括”互换使用。另外,将理解术语“其中(wherein)”可以与“其中(where)”互换使用。如本文所使用的,“示例性”可以表示示例、实施方式和/或方面,并且不应该被解释为限制或表示偏好或优选实施方式。如本文所使用的,用于修改元素(例如结构、组件、操作等)的序数术语(例如,“第一”、“第二”、“第三”等)本身不表示元素相对于另一元素的任何优先级或顺序,而是仅仅将元素与具有相同名称的另一元素区分开(但是为了使用序数术语)。如本文所使用的,术语“组”是指一个或多个元素的分组,术语“多个”是指多个元素。
在本公开中,如“确定”、“计算”、“生成”、“调整”、“修改”等术语可用于描述如何执行一个或多个操作。应当注意,这些术语不应被解释为限制性的,并且可以利用其他技术来执行类似的操作。另外,如本文所提到的,“生成”、“计算”、“使用”、“选择”、“访问”和“确定”可以互换使用。例如,“生成”、“计算”或“确定”参数(或信号)可以指主动生成、计算或确定参数(或信号),或者可以指使用、选择或访问已生成的参数(或信号),例如由其他组件或装置生成的参数。另外,“调整”和“修改”可以互换使用。例如,“调整”或“修改”参数可以指将参数从第一值改变为第二值(“修改值”或“调整值”)。如本文所使用的,“耦接”可以包括“通信耦接”、“电耦接”或“物理耦接”,并且还可以(或可选地)包括其任何组合。两个装置(或组件)可以经由一个或多个其他装置、组件、电线、总线、网络(例如,有线网络、无线网络或其组合)等直接或间接地耦接(例如,通信耦接、电耦接或物理耦接)。电耦接的两个装置(或组件)可以包括在同一装置中或不同装置中,并且可以通过电子装置、一个或多个连接器或电感耦接连接,如说明性的、非限制性示例。在一些实施方式中,通信耦接(例如,电通信)的两个装置(或组件)可以直接或间接地发送和接收电信号(数字信号或模拟信号),例如经由一个或多个电线、总线、网络等。如本文所使用的,“直接耦接”可以包括耦接(例如,通信耦接、电耦接或物理耦接)而没有中间组件的两个装置。
本文公开的实施方式涉及用于分布式数据管理系统(也称为分布式版本化文件系统(DVFS))的系统和方法。根据本公开的方面的分布式数据管理系统可以在具有与企业分布式系统不同的特性的环境中实现,例如基于车辆的分布式系统或“物联网”(IoT)。为了说明,基于车辆的系统或IoT系统的特征可能是节点数量少、网络相对不稳定、计划外断电和上电操作、多个节点同时加入系统、独立/可中断电源电路、很少或者没有人工网络管理,并且无论有效节点的数量如何都继续操作(对于至少某些应用程序)。典型的企业分布式系统不适合这些环境。例如,企业分布式系统中基于法定数量的同步在具有少量节点的系统中效率低,因为法定数量将难以维护,导致在大量时间内组数据被锁定。另外,企业分布式系统被设计为处理“优雅(graceful)”的上电和断电(例如,让节点一次一个地离开系统或者一次添加一个)。在基于车辆的系统和IoT系统中,节点更可能不可预测地加入(或离开)系统,包括多个节点可能同时加入系统的情况。典型的企业分布式系统可能无法防止这些情况下的数据差异,而是依赖于人类网络管理员来解决数据差异。但是,基于车辆的系统和IoT系统可能无法依靠人类网络管理员来解决数据差异问题。
因此,本公开的分布式数据管理系统被配置为基于每个目录或每个文件来选择数据同步和数据协调策略。允许以更精细的粒度选择不同的策略可以使本公开的分布式数据管理系统能够解决与基于车辆的系统或IoT系统相关联的上述挑战。为了说明,分布式数据管理系统的计算装置包括被配置为与分布式数据管理系统的第二装置通信的接口,存储与存储在第二计算装置处的文件的第二副本同步的文件的第一副本的存储器,以及处理器。处理器被配置为基于每个目录或每个文件执行同步操作或协调操作。例如,处理器被配置为响应于在接口不能与第二计算装置通信时接收到对文件的更新,来访问版本控制管理数据。对于多个文件的文件,版本控制管理数据指示与相应文件相关联的同步设置。例如,版本控制管理数据可以指示同步工作空间的每个目录或同步工作空间的每个单独文件的同步设置。处理器进一步被配置为基于版本控制管理数据确定是否写入更新。例如,如果版本控制管理数据指示与文件相关联的第一同步设置,则处理器可以将更新写入文件的第一副本。或者,如果版本控制管理数据指示与文件相关联的第二同步设置,则处理器可以避免写入更新。
因为同步设置基于每个目录或每个文件,所以可以根据第一同步方案(例如,允许更新而无需法定数量的方案)来同步与较高数据可用性标准或频繁更新的数据相关联的一些文件(或目录),以及可以根据第二方案(例如,基于法定数量的方案)同步与较不频繁更新的数据或较高数据完整性标准相关联的其他文件(或目录)。因此,本公开的分布式数据管理系统的计算装置可以执行具有不同标准(例如,高可用性或高完整性)的应用程序,而无需额外的硬件(例如,用于每种类型的应用程序的专用硬件)。这种灵活性使得本公开的分布式数据管理系统能够补偿基于车辆的系统或IoT系统(例如具有高数据完整性标准的“关键”系统和具有高可用性标准的基于服务的系统)的不同的应用程序。
在一些实施方式中,分布式数据管理系统的计算装置被配置为使用基于树的版本管理方案来进行数据协调操作。为了说明,每个计算装置可以存储指示共享工作空间的提交版本的树的数据。当从组中分区(partitioned)特定装置时,该装置可以继续接收对同步工作空间的文件的更新。每次装置将工作空间(例如,文件的状态)提交到存储库时,树数据都用分支更新。当装置重新加入组时,装置可以从组中的其他装置之一检索共享工作空间的副本,并且可以在树数据中存储新分支。装置可以确定新分支和先前分支(例如,在装置被分区时添加的数据)之间的差异并且可以将数据提供给对应的应用程序以确定是否将数据包括在对工作区的将来的更新中。以这种方式,与在协调(或人类网络管理员干预)期间发生数据丢失的企业分布式系统相比,执行自动应用程序级数据协调而没有数据丢失。因此,本公开的分布式数据管理系统可以在没有(或很少有)人类网络管理的基于车辆的系统或IoT系统中实现。
图1示出了基于每个目录或每个文件同步数据的系统100(例如,分布式数据管理系统)的特定实施方式的示例。例如,可以根据不同的同步方法同步不同的目录(例如,一组文件)或不同的文件,而不需要人类网络管理员。基于每个目录或每个文件使数据同步增加分布式数据管理系统的多功能性,使得分布式数据管理系统可以部署在典型的企业环境之外,例如在航空电子装置环境(或其他基于车辆的环境)中或者在“物联网”(IoT)装置上,如本文进一步描述的。
系统100包括第一计算装置102、第二计算装置152和第三计算装置192。第一计算装置102、第二计算装置152和第三计算装置192可以经由网络190通信耦接。在特定实施方式中,第一计算装置102、第二计算装置152和第三计算装置192集成到交通工具中。例如,系统100可以集成在飞机、无人驾驶飞机(UAV)、航天器、卫星、船只或陆地交通工具(汽车、卡车、坦克等)中。在特定实施方式中,系统100是飞机的分布式航空电子装置系统。例如,计算装置102、152和192可以包括或对应于传感器装置、控制装置、环境装置、电力装置等。或者,系统100可以集成在建筑或建筑物内,例如冶炼厂、制造设施、机场、空间发射系统等。在特定实施方式中,第一计算装置102包括或对应于飞机的第一航线可更换单元,第二计算装置152包括或对应于飞机的第二航线可更换单元,以及第三计算装置192包括或对应于飞机的第三航线可更换单元。在另一特定实施方式中,第一计算装置102、第二计算装置152和第三计算装置192是IoT装置。作为非限制性示例,计算装置102、152和192包括或对应于建筑和家庭设备(例如,智能家居装置、互联网连接装置、媒体装置、计算机、机器人装置等)、环境监控装置、基础设施管理装置、制造设备和监视装置、农业装置、能量管理装置、医疗和保健装置、车辆、能够生成数据和访问网络的其他装置或其组合。
第一计算装置102包括处理器103、存储器106和接口108。接口108可以包括或对应于网络接口、发送器、接收器、收发器或其组合,其被配置为经由网络190与系统100的其他装置进行通信。处理器103被配置为执行存储在存储器106处的计算机可读指令以执行各种操作,如本文进一步描述的。在特定示例中,处理器103被配置为执行应用程序114。应用程序114可以与要执行的特定操作相关联。作为非限制性示例,应用程序114是传感器应用程序,其被配置为从一个或多个传感器(例如,集成在第一计算装置102中或可由第一计算装置102访问的传感器,如经由网络190)接收传感器数据并生成输出数据,如来自一个或多个传感器的汇总或收集的数据。在特定实施方式中,应用程序114可以由计算装置102、152和192中的每一个执行,如本文进一步描述的。处理器103还可以被配置为执行数据管理器104以对共享组数据执行一个或多个数据管理操作,如本文进一步描述的。虽然被描述为由处理器103执行,但是在其他实施方式中,数据管理器104包括专用电路或硬件,如现场可编程门阵列(FPGA)装置、专用集成电路(ASIC)、数字信号处理器(DSP)、控制器等,执行(或使处理器103执行)本文描述的操作的软件(例如,可由处理器执行的指令)、固件或其组合。存储器106被配置为存储相关装置标识符125、一个或多个阈值编号127、工作空间105(例如,共享工作空间)、版本控制管理数据117和对等数据129。
第二计算装置152包括处理器153、存储器156和接口158。接口158可以包括或对应于网络接口、发送器、接收器、收发器或其组合,其被配置为经由网络190与系统100的其他装置进行通信。处理器153被配置为执行存储在存储器156处的计算机可读指令以执行各种操作,如本文进一步描述的。例如,处理器153可以执行类似于应用程序114的一个或多个应用程序。存储器156被配置为存储工作空间155(例如,共享工作空间)。存储器156还可以存储相关装置标识符、一个或多个阈值编号、版本控制管理数据和对等数据,如参考第一计算装置102所描述的。处理器153还包括或执行数据管理器154,类似于第一计算装置102的数据管理器104。以类似方式,第三计算装置192包括处理器、存储器和接口。
计算装置102、152和192中的每一个被配置为生成本地数据并执行本地操作。例如,在本地处理和存储临时数据(例如,“会话”状态)和特定节点数据。如本文所使用的,系统100的成员(例如,计算装置102、152和192)也可以称为节点。另外,计算装置102、152和192中的每一个被配置为生成、存储和处理由其他装置共享的组数据。为了说明,每个计算装置被配置为维护包括一个或多个组数据的文件的对应共享工作空间。为了管理工作空间,每个计算装置执行或包括相应的数据管理器。例如,第一计算装置102执行(或包括)数据管理器104以管理工作空间105,并且第二计算装置152执行(或包括)数据管理器154以管理工作空间155。
为了能够在系统100的多个计算装置之间共享组数据,计算装置102、152和192被配置为复制分组数据(例如,要由系统100的多个计算装置读取和写入的一个或多个文件)并将复制的数据存储在相应的工作空间中。为了说明,组数据可以包括文件,第一计算装置102将文件的第一副本107存储在存储器106中的工作空间105中,第二计算装置152将文件的第二副本157存储在存储器156的工作空间155中,第三计算装置192将文件的第三副本存储在第三计算装置192的存储器中的工作空间中。尽管在图1中示出了单个文件的副本的存储,每个工作空间可以包括多于一个文件的副本。在特定实施方式中,工作空间105和155中的每一个存储一个或多个目录,每个目录包括一个或多个文件。
计算装置102、152和192被配置为使得能够访问工作空间中的复制文件到在计算装置102、152和192处执行的一个或多个应用程序,例如应用程序114。此外,数据管理器104和154被配置为基于一个或多个条件和版本控制管理数据来管理对存储在相应工作空间中的文件的更新。例如,数据管理器104包括同步器110,其被配置(或执行)以基于版本控制管理数据117同步存储在工作空间105处的文件的副本(例如,复制数据),例如第一副本107。版本控制管理数据117包括与特定文件相关联的同步设置、与特定目录相关联的同步设置或两者。与文件(或目录)相关联的同步设置指示由数据管理器104用来控制对应文件(目录)的同步的多个可选同步方案中的特定同步方案。特定同步方案可以指示文件何时被同步、文件如何被更新(例如,被写入)、用于允许(或阻止)更新的条件、其他同步信息或其组合。
在操作期间,组数据被复制并存储在每个计算装置处,该计算装置是系统100的一组有效的,连接的计算装置的成员。例如,在第一时间,第一计算装置102、第二计算装置152和第三计算装置192经由网络190连接以形成组,并且组数据被复制并本地存储。为了说明,第一计算装置102将文件的第一副本107存储在存储器106中,第二计算装置152将文件的第二副本157存储在存储器156中,并且第三计算装置192将文件的第三副本存储在第三计算装置192的存储器中。在计算装置102、152、192处执行的一个或多个应用程序可以在相应数据管理器的控制下访问文件的副本。例如,数据管理器104可以控制应用程序114对第一计算装置102处的第一副本107的访问,并且数据管理器154可以控制对第二计算装置152处的第二副本157的访问。可以基于版本控制管理数据117控制访问,版本控制管理数据117包括与第一副本107相关联的同步设置121。同步设置121指示与第一副本107相关联的同步方案。尽管在图1中示出了单个同步设置,版本控制管理数据117可以包括多个同步设置。例如,版本控制管理数据117可以包括与存储在工作空间105处的多个文件(例如,文件的副本)相关联的多个同步设置。
数据管理器104可以基于访问类型(例如,读取操作或写入操作)并且基于同步设置121和第一计算装置102的一个或多个条件来确定是否使应用程序114能够访问第一副本107。例如,因为文件被复制到本地存储器(例如,存储器106),所以与对于每次读取操作从服务器检索共享数据的共享文件系统相比,允许所有读取操作并且不会产生网络开销。对于写入操作(或修改或更新第一副本107的其他操作),同步器110基于同步设置121和第一计算装置102处的一个或多个条件选择性地使应用程序能够114对第一副本107进行访问。
同步设置121指示要应用于第一副本107的多个同步方案或模式之一。在一些实施方式中,多个同步模式包括法定数量模式和高可用性模式。在其他实施方式中,除了法定数量模式、高可用性模式或两者之外或代替法定数量模式、高可用性模式或两者,可以使用其他模式。在法定数量模式中,如果特定计算装置连接到包括至少阈值数量的装置的一组装置,则允许在特定计算装置处对复制文件(例如,第一副本107)的更新。作为说明性示例,如果系统100包括总共六个计算装置,则当大多数装置被包括在组中时(例如,当组中包括四个或更多个装置时)可以存在法定数量。在图1所示的示例中(例如,如果系统包括总共三个计算装置),则法定数量是任意两个计算装置的组或所有三个计算装置的组。在法定数量模式中,只要该组包括至少阈值数量的装置,该组的装置可以在本地更新复制的数据并在该组的成员之间共享更新。可以使用“安全写入”与组中的其他装置共享更新。为了执行安全写入,对工作空间处的文件进行更新的计算装置将更新发送到该组的每个计算装置并等待直到该组的另一个计算装置在工作空间处执行更新之前接收(并确认)该更新。另外,该组的计算装置在计算装置之间维护和传递信息,以使得能够按照组的计算装置之间的顺序(例如,“写入事件的总排序”)执行写入操作。使用安全写入减少了组的计算装置之间的数据差异(在意外断开与网络190的连接的情况下)。尽管参考法定数量模式进行了描述,但是在一些实施方式中,在所有同步模式中使用安全写入(以及写入事件的排序)。
在法定数量模式中,如果特定计算装置被隔离(例如,未连接到系统100的任何其他计算装置)或连接到包括少于阈值数量的计算装置的组,则避免对复制数据的更新。因此,防止了在隔离或小组的一部分的计算装置处的复制数据的差异。为了说明,当特定计算装置稍后重新加入组时,可以请求存储在该组的不同计算装置处的文件的副本并用于更新本地副本,从而防止特定计算装置存储与该组的其他计算装置不同的数据。因此,法定数量模式旨在保持数据完整性,因此对于数据完整性是主要标准的文件(或目录)是有益的,例如“关键”系统文件或目录。
在高可用性模式中,计算装置能够更新复制文件,而不管计算装置是否是包括至少特定数量的计算装置的组的一部分。例如,从网络190分区(partitioned)的各个计算装置可以在与网络190断开连接时(或者作为不包含足够计算装置以满足法定人数的组的一部分时)继续更新对应于高可用性模式的文件的副本。因为特定计算装置可以在特定计算装置能够重新加入组之前多次更新本地存储的文件副本,所以特定计算装置可以存储来自该组的其他成员的不同数据。为了从潜在的不同数据提供自动恢复,系统100的计算装置可以根据由版本控制管理数据117指示的数据协调设置来执行数据协调操作,如参考图2进一步描述的。
以这种方式,系统100的计算装置使用版本控制管理数据117基于每个文件或每个目录执行同步(和数据协调)。以下描述系统100的操作的特定示例。示例是说明性的而不是限制性的。
在特定示例中,当接口108不能与第二计算装置152通信时,数据管理器104(例如,处理器103)从应用程序114接收对文件的第一副本107的更新115。例如,在第一时间(第一副本107存储在工作空间105处)之后的第二时间,第二计算装置152可能断电或与网络190断开连接,或者第一计算装置102可能与网络190断开连接。当接口108不能与第二计算装置152通信时,响应于接收到更新115,处理器103(例如,数据管理器104和同步器110)访问版本控制管理数据117以确定与文件的第一副本107相关联的同步设置121。如果同步设置121是第一同步设置,则处理器103(例如,数据管理器104)将更新115写入工作空间105中的文件的第一副本107。如果同步设置121是第二同步设置,处理器103(例如,数据管理器104)避免将更新115写入工作空间105中的文件的第一副本107。
在特定实施方式中,版本控制管理数据117包括与存储在工作空间105处的多个单独文件相关联的多个同步设置。在该实施方式中,同步设置121仅对应于文件的第一副本107,并且其他同步设置对应于其他文件。在替代实施方式中,版本控制管理数据117指示与包括文件的第一副本107的文件的目录相关联的同步设置。例如,同步设置指示应用于包括文件的第一副本107的多个文件的同步模式。在该实施方式中,在确定同步设置121指示第一同步设置对应于包括文件的第一副本107的文件的目录的条件下,处理器103(例如,数据管理器104)将更新115写入文件的第一副本107,并且在确定同步设置121指示第二同步设置对应于文件目录的条件下,处理器103(例如,数据管理器104)避免将更新115写入文件的第一副本107。
作为第一示例,处理器103响应于确定第一同步设置对应于法定数量模式并且检测到接口108能够与多个计算装置中的至少阈值数量的计算装置通信,将更新115写入文件的第一副本107,该多个计算装置包括第二计算装置152和一个或多个附加计算装置。为了说明,计算装置102、152和192可以周期性地(或响应于事件)生成对等数据,如对等数据129,指示哪些计算装置在不同时间是对等体(例如,组的一部分)。对等数据可以指示相关装置标识符125(例如,系统100的所有已知成员的装置标识符)中的一个或多个。例如,在第一计算装置102能够与第二计算装置152和第三计算装置192通信的第一时间(例如,当接收和存储文件的第一副本107的时间),第一计算装置102生成指示第二计算装置152和第三计算装置192的标识符的第一对等数据131。在接口108不能与第二计算装置152通信并且接收到更新115的第二时间,第一计算装置102生成第二对等数据133,其指示接口108能够与之通信的计算装置的标识符。例如,第二对等数据133可以指示第三计算装置192的标识符(如果接口108能够与第三计算装置192通信)或者可以是空数据(如果接口108不能与任何其他计算装置进行通信)。可以周期性地或者响应于检测到接口108能够与之通信的计算装置的数量的变化来更新对等数据129。
为了确定是否以法定数量模式写入更新115,处理器103确定由第二对等数据133指示的对等计算装置的数量,并将该数量与对应于同步设置121的(一个或多个阈值数量127的)阈值数量进行比较。如果该数量满足(例如,大于或等于)阈值数量,则处理器103将更新115写入文件的第一副本107。为了说明,如果阈值数量是1并且第二对等数据133指示第三计算装置192的标识符,则处理器103将更新115写入工作空间105中的文件的第一副本107。
作为第二示例,响应于确定第一同步设置对应于高可用性模式,处理器103将更新115写入文件的第一副本107。在高可用性模式中,无论第二对等数据133指示的计算装置的数量如何,都写入更新115。作为第三示例,响应于确定第二同步设置对应于法定数量模式并且检测到接口108能够与少于阈值数量的包括第二计算装置152和一个或多个附加计算装置的多个计算装置通信,处理器103避免将更新115写入文件的第一副本107。为了说明,在法定数量模式中,在第二对等数据133指示比阈值数量更少的计算装置的条件下,处理器103避免将更新115写入文件的第一副本107。
第二计算装置152(和第三计算装置192)执行与第一计算装置102类似的操作。作为说明性示例,处理器153(例如,数据管理器154)被配置为响应于当接口158不能与第一计算装置102通信时接收到对文件的第二副本157(例如,来自由处理器153执行的应用程序)的第二更新,访问存储在存储器156的版本控制管理数据的副本。在该示例中,处理器153被配置为在确定版本控制管理数据指示第一特定同步设置与文件的第二副本157相关联的条件下,将第二更新写入文件的第二副本157。处理器153进一步被配置为在确定版本控制管理数据指示第二特定同步设置与文件的第二副本157相关联的条件下,避免将第二更新写入文件的第二副本157。
因此,图1的系统100提供了一种分布式数据管理系统,该分布式数据管理系统能够基于每个文件或每个目录执行同步和更新操作。例如,可以根据法定数量模式管理文件的第一副本,并且可以根据高可用性模式管理第二文件的第二副本。因为系统100能够根据不同模式管理不同文件,所以系统100比传统分布式数据管理系统更灵活。因此,系统100更适合用于更具挑战性的系统环境,例如基于车辆的系统或IoT,其具有更少的节点(以及每个节点处的有限硬件)、计划外的上电和断电、有限的电池功率,以及可能不稳定的网络。由于可以将不同的同步设置用于不同的文件,因此可以根据法定数量模式管理“关键”系统文件,以保护系统文件的数据完整性,并且可以根据高可用性模式管理服务文件或传感器生成的文件,以允许更新数据,而不管分布式数据管理系统中的条件如何。由于这种增强的灵活性,比起将单个同步策略应用于在分布式数据管理系统中的所有文件的传统分布式数据管理系统,系统100能够更好地处理基于车辆的系统(例如飞机分布式系统)的挑战或与IoT相关的挑战。
图2示出了以基于树的版本管理方案为基础执行数据协调的系统200(例如,分布式数据管理系统)的特定实施方式的示例。使用基于树的版本管理方案使得系统200的装置能够在同步之后执行自动数据恢复和协调。因此,系统200能够在没有人类网络管理员的情况下从分区事件(partitioning events)(或可能导致“脑裂”状况的其他事件)中恢复,这使得系统200能够部署在基于车辆的环境中或在IoT装置上。
系统200包括第一计算装置102、第二计算装置152和第三计算装置192,如参考图1所述。除了被配置为执行如参考图1所描述的选择性更新操作之外,计算装置102、152和192被配置为执行复制数据的版本管理。为了说明,版本控制管理数据可以指示与关于存储在计算装置102、152和192的工作空间处的数据执行版本控制相关联的一个或多个设置或规则。为了进一步说明,每个计算装置102、152、192可以在存储器中维护对应的工作空间(例如,目录),该工作空间用作要提交到存储器中的存储库的文件(或目录)的暂存区域(staging area)。计算装置102、152、192可以在不同时间(例如响应于检测到的条件)将工作空间“提交”到本地存储库。如本文所使用的,提交工作空间是指将工作空间内的文件的当前状态数据保存到本地存储器。在一些实施方式中,每次提交工作空间时,存储仅指示自先前提交以来对工作空间所做的改变的状态数据。在其他实施方式中,存储指示工作空间的当前状态的快照的状态数据。
在一些实施方式中,全局唯一标识符与要被同步的每个单独的本地工作空间相关联,作为共享数据的副本。在每个工作空间内是根据各个(或基于目录的)同步设置同步的单个文件(例如,文件的副本)或目录(例如,文件的副本组),如参考图1所述。提交工作空间(例如,存储指示工作空间的当前状态的状态数据)也可以称为检查点。在特定实施方式中,在上电事件之后(或在处理器的初始化阶段之后)并且在与系统200的其他装置同步之前提交工作空间(例如,创建检查点)。
在特定实施方式中,计算装置102、152和192被配置为执行“延迟同步(lazysynchronization)”。延迟同步指仅在组成员身份增长时的同步。当对等节点启动或当合并分区网络时,组成员身份可能会增长。在一些实施方式中,除了执行延迟同步之外,计算装置102、152和192被配置为启用基于应用程序的同步。例如,第一计算装置102可以被配置为基于来自应用程序114的指令来同步工作空间105。基于应用程序的同步使应用程序能够在预期活动的时段(,例如预期密集的数据收集发生的时段)之前同步工作空间。
为了执行同步,计算装置102、152和192被配置为将工作空间提交到相应的本地存储库,确定每个计算装置是“受害节点”还是“幸存节点”,从幸存节点(如果计算装置是受害节点)检索复制数据的副本,并执行数据协调操作。受害节点是从幸存节点检索复制数据副本并使用检索到的副本而不是本地数据的节点,以便在同步事件之后所有节点具有相同的复制数据。因为受害节点用来自幸存节点的复制来重写本地数据,所以受害节点被称为“受害者”。然而,如本文进一步描述的,计算装置102、152和192被配置为维护基于树的版本控制管理数据,这使受害节点能够选择性地保留本地数据,否则这些数据会在协调期间丢失。
确定特定计算装置是受害节点还是幸存节点是基于存储在每个计算装置102、152和192处的版本控制管理数据中包括的协调设置。协调设置可以基于每个文件或每个目录存储,类似于同步设置,或基于每个工作区存储。每个协调设置指示对应于存储在工作空间处的相应文件(或目录)的多个协调设置之一。在特定实施方式中,多个协调设置包括“LAST”设置、“FIRST”设置和“NONE”设置。在其他实施方式中,可以选择少于三个或多于三个的协调设置。在LAST设置中,选择幸存节点作为要从一组幸存候选者(例如,在前一周期中运行的节点池,例如航空电子装置实施方式中的飞行周期)中断开的最后一个节点。如果同步设置是法定数量模式,则幸存节点是建立法定数量的最后一组节点的最后一个(或任意成员)被断开。在FIRST设置中,幸存节点是幸存候选者中的第一个变成为在线的节点(或者来自当前已经是对等的最大的一组节点的节点)。在NONE设置中,工作空间之间的差异由计算装置102、152和192执行的应用程序解决(例如,除非由应用程序控制,否则不发生复制和协调)。
为了防止在协调期间的数据丢失,计算装置102、152和192被配置为在执行工作空间提交和协调操作时使用基于树的版本管理方案。为了说明,计算装置102、152和192被配置为生成指示提交树的树数据。树数据指示相应工作空间的版本树。例如,当提交工作空间时,相应的计算装置被配置为更新树数据以指示版本树中的新节点。当确定计算装置是受害节点时,计算装置在从幸存节点检索和存储复制数据之前更新树数据以指示新分支。为了说明,计算装置可以指示版本树在两个方向上分支。在一个分支中是由计算装置提交的最新版本(作为导致计算装置确定它是受害节点的同步操作的一部分),并且在另一个分支中是从幸存节点复制的版本。通过维护树数据(以及在否则将导致数据丢失的同步操作期间的分支),可以使在计算装置处更新的数据可用(例如,提供给计算装置处的一个或多个应用程序或由其检索),从而使得能够进行应用程序级数据协调操作。
为了说明,在操作期间,计算装置102、152和192可以经历一个或多个连接改变(例如,由于断电或从网络190分区)。例如,在初始时,第一计算装置102、第二计算装置152和第三计算装置192均可以经由网络190连接以形成共享复制数据的一组节点。例如,计算装置102、152、192中的每一个可以在相应的工作空间存储特定文件的副本。为了说明,第一计算装置102在工作空间105处存储文件的第一副本107,并且第二计算装置152在工作空间155处存储文件的第二副本157。计算装置102、152和192执行一个或多个可能尝试更新文件的相应副本的应用程序。基于同步设置121来控制对文件的第一副本107的更新,如参考图1所述。
在第二时间,第一计算装置102变得与该组的其他计算装置断开连接(或者经历断电操作,然后是上电操作)。处理器103生成并存储不指示任何标识符的第一对等数据131(例如,第一对等数据131可以是空数据)。基于同步设置121继续选择性地允许对文件的第一副本107的更新,如参考图1所述。在至少一些实施方式中,在第一计算装置102与其他计算装置断开连接之后,可以对文件的第一副本107(或工作空间105内的文件的另一副本)进行一个或多个更新。例如,同步设置121可以指示文件的第一副本107与高可用性模式相关联。
在第二时间,第一计算装置102变得重新连接到网络190并且重新连接到第二计算装置152和第三计算装置192。处理器103生成并存储指示第二计算装置152和第三计算装置192的标识符的第二对等数据133。另外,执行一个或多个协调操作。例如,数据管理器104执行(或包括)进行数据协调操作的协调器212。协调器212包括硬件、软件或其组合,被配置为执行一个或多个协调操作,如本文进一步描述的。在特定实施方式中,因为第一计算装置102的对等组的大小已经增加(从0到2),所以处理器103根据同步设置121指示的延迟同步方案将工作空间105提交到存储库109。为了简化说明,描述了其中工作空间包括单个文件(文件的第一副本107)的示例。这样的说明不旨在是限制性的,并且在其他示例中,工作空间105包括提交给存储库109的多个文件。
将工作空间105提交到存储库109包括将文件的第一副本107存储为第一版本111。第一计算装置102还更新树数据215以指示与工作空间105(包括文件的第一副本107)相关联的树的第一节点。例如,由树数据215指示的树的头部与第一版本111(以及在提交工作空间105期间存储在存储库109中的任何其他文件)相关联。以类似的方式,第二计算装置152将文件的第二副本157的版本存储在存储库259中,例如存储第一版本260,并维护与存储库259中的文件的版本相关联的树数据261。
处理器103(例如,协调器212)可以在第二时间检测协调阶段,并且在协调阶段期间,确定接口108能够与第一组计算装置通信。第一组计算装置包括第二计算装置152和第三计算装置192,如第二对等数据133所指示的。处理器103(例如,协调器212)可以响应于检测到处理器103的初始化阶段(例如,在上电条件之后),检测到与第二计算装置152恢复通信,或两者都检测到来检测协调阶段。响应于检测到协调阶段,处理器103(例如,协调器212)访问版本控制管理数据117以确定与文件的第一副本107相关联的协调设置223。协调设置223指示文件的第一副本107与多个协调设置之一相关联。多个协调设置指示何时进行协调,如何确定幸存或受害节点,是否使用法定数量来确定幸存节点等。
在确定协调设置223是第一协调设置的条件下,处理器103向第二计算装置152发送对更新数据的请求。例如,协调设置223可以指示LAST设置,并且处理器103可以根据LAST设置确定第一计算装置102是否是幸存节点(或受害节点)。为了说明,处理器103从由第二对等数据133指示的该组计算装置的每个计算装置接收对等数据。例如,第一计算装置102从第二计算装置152接收附加对等数据229。附加对等数据229指示在第一时间(例如,第一计算装置102与网络190断开连接的时间)第二计算装置152的对等组。在特定示例中,附加对等数据229指示在第二时间第三计算装置192是第二计算装置152的对等体。
在特定实施方式中,第一计算装置102确定第一计算装置102是否是受害装置,并且如果是,则基于本地对等数据(例如,第一对等数据131和第二对等数据133)和附加对等数据229确定可访问的幸存装置。例如,如果附加对等数据229指示第二计算装置152在第二时间具有更多对等体(或者在第二时间具有法定数量的一部分),则第一计算装置102确定第二计算装置152是幸存节点(并且第一计算装置102是受害节点)。以这种方式,第一计算装置102基于本地对等数据和附加对等数据229选择第二计算装置152(例如,作为幸存节点)。
基于确定第二计算装置152是幸存节点(并且第一计算装置102是受害节点),第一计算装置102将用于文件的第二版本的请求241发送到第二计算装置152。例如,处理器103(例如,协调器212)可以经由接口108向第二计算装置152发起请求241的传输。第二计算装置152接收请求241并且作为响应将数据243经由接口158发送到第一计算装置。数据243指示文件的第二副本157(包括在第一计算装置102与第二计算装置152断开连接时进行的任何更新)。第一计算装置102接收数据243并将数据243存储在存储库109中作为文件的第二版本113。
另外,处理器103可以更新树数据215以指示已经发生分支。例如,表示第二版本113的条目被添加为来自最近添加的条目的单独分支,并且新分支被指定为“主干”的一部分(例如,引领从头条目到初始条目的连接条目)。包含新条目之前最近添加的条目的另一个分支被指定为分支(例如,不是主干的一部分)。然而,因为新条目被添加到不同的分支,所以先前添加的条目可以指示由第二时间之前的一个或多个更新引起的改变。在不使用基于树的版本的系统中,这种改变将在协调过程期间丢失(例如,用数据243重写)。然而,本公开的系统和方法使得能够选择性地保留该数据。
为了说明,在协调阶段期间,在存储第二版本113之后,处理器103使用树数据215来确定差异数据217。差异数据217包括指示文件的第一版本111与文件的第二版本113之间的差异的特定数据。差异数据217被提供给一个或多个应用程序,例如图1的应用程序114,并且一个或多个应用程序执行数据协调。例如,应用程序114可以基于差异数据217确定是否对文件的第一副本107进行一次或多次更新,以重新引入在第一计算装置102失去与第二计算装置152的连接之后提交的数据(并且否则将通过用文件的第二版本113重写而丢失)。例如,应用程序114可以在协调阶段期间生成一个或多个更新以重新引入在第一计算装置102断开连接时生成的数据,并且由于使用安全写入(如参考图1所述),在协调阶段期间,将向组中的每个计算装置提供一个或多个更新。
在替代示例中,第二计算装置152在第一时间与组断开连接并且在第二时间重新加入组,并且第一计算装置102在整个时间保持在组中。在该示例中,第一计算装置102可以确定第一计算装置102是幸存节点。响应于确定第一计算装置102是幸存节点,第一计算装置102经由接口108向第二计算装置152发送更新消息245。当第二计算装置152断开连接时,更新消息245指示对第一文件的第一副本107进行的一个或多个更新。因此,在一些实施方式中,幸存节点可以将复制数据的更新副本“推送”到受害节点(而不是等待受害节点“获取”复制数据的更新副本)。
因此,图2的系统200利用基于树的版本管理方案使用关于复制数据(例如,复制并存储在计算装置102、152和192处的共享数据)的版本控制(使用版本控制管理数据117和存储库109和259中的文件版本的存储)。为了说明,系统200的计算装置维护树数据,该树数据指示存储在存储库中的复制数据的版本之间的关系。例如,第一计算装置102维护树数据215,该树数据215指示存储在存储库109中的版本(例如,文件的第一版本111和文件的第二版本113)之间的关系。通过维护树数据,计算装置102、152和192能够确定在协调期间否则将丢失的数据,并向对应的应用程序提供该数据的指示,以实现应用程序定义的恢复和数据的重新引入。以这种方式,可以通过来自应用程序的一个或多个更新来重新引入在协调期间否则将丢失的数据。因此,系统200使得能够在一个或多个计算装置断开连接或断电之后重新同步复制数据而没有数据丢失,这使得与高可用性模式相关联的文件能够在特定计算装置与组断开连接时被更新而在重新连接特定计算装置时不丢失更新的数据。
因为系统200执行数据协调(例如,由于基于树的版本控制管理方案)而没有数据丢失,所以系统200适合于实现为飞机(或其他交通工具)的分布式数据管理系统,与典型的企业分布式数据系统相比,其可能具有有限的或不稳定的电源、少量的节点、不可预测的上电和断电,以及具有航线可替换性和最小的管理开销和数据计费。另外,存储在系统200的计算装置处的树数据指示可用于取证目的的版本记录,与典型的企业分布式数据系统相比,这可以是飞机系统所共有的。另外,通过将数据协调卸载到应用层,与典型的企业分布式数据系统相比,减少了与系统200相关联的开销。此外,应用程序驱动的数据协调可减少与执行数据协调的人类网络管理员相关的故障。在一些实施方式中,系统200启用延迟同步或周期性同步而不是实时复制。因为同步策略包括基于过去和当前组成员资格(例如,基于第一对等数据131、第二对等数据133和附加对等数据229)来确定生存期,所以能够在不使用同步系统时钟的情况下执行同步,这会增加计算装置102、152和192的复杂性。
图3示出了执行数据同步和协调的方法300。在一些实施方式中,方法300由图1和图2的第一计算装置102、第二计算装置152或第三计算装置192执行,作为非限制性实例。方法300对应于执行如参考图2所述的“延迟同步”的方法。在特定实施方式中,响应于检测到特定条件(例如,上电操作、初始化操作或计算装置处的对等组中的对等体的数量的增加),启动方法300。在其他实施方式中,方法300可以由应用程序启动。
方法300包括:在302处,在特定计算装置处提交工作空间。提交工作空间包括将指示工作空间状态的状态信息存储在存储库中。例如,第一计算装置102可以将文件的第一副本107作为文件的第一版本111存储在存储库109处,如参考图2所述。
方法300包括:在304处的幸存者选择。幸存者选择基于存储在版本控制管理数据中的协调设置。例如,版本控制管理数据117中包括的协调设置223可以指示确定幸存节点的方法。在特定实施方式中,协调设置基于每个文件存储。在另一特定实施方式中,协调设置基于每个目录存储。在另一特定实施方式中,协调设置基于每个工作空间存储。
方法300包括:在306处,确定特定计算装置是否是受害节点。例如,特定计算装置可以通过访问存储在版本控制管理数据中的协调设置来确定它是否是受害者。在特定实施方式中,协调设置指示基于LAST设置、FIRST设置或NONE设置确定幸存节点,如参考图2所述。在特定实施方式中,不是幸存节点的所有计算装置被认为是受害节点。如果特定计算装置不是受害节点,则方法300根据同步设置继续处理对工作空间中的文件的更新,直到检测到触发要提交的工作空间的后续条件。
如果确定特定计算装置是受害节点,则方法300继续到308,并且创建分支。例如,第一计算装置102可以更新树数据215以指示相对于先前提交的工作空间版本(例如,文件的第一版本111)已经发生了分支。
方法300包括:在310处,从幸存者节点获取(pull)数据。例如,第一计算装置102可以将请求241发送到第二计算装置152(响应于确定第二计算装置152是幸存节点),并且第一计算装置102响应于发送请求241而从第二计算装置152接收数据243。数据243指示文件的第二副本157。第一计算装置102将数据243作为第一副本107的新版本存储在工作空间105中并且作为文件的第二版本113存储在存储库109中。
方法300进一步包括:在312处,在执行协调。例如,处理器103(例如,协调器212)确定指示第二版本113与第一版本111之间的差异的差异数据217。差异数据217被提供给应用程序114,并且应用程序114确定在协调阶段期间是否将由差异数据217指示的数据添加到对文件的第一副本107的一个或多个后续更新中。以这种方式,执行应用程序级协调,并且由于包括使用树数据215的基于树的版本控制管理方案,在协调期间数据不会丢失。
因此,图3的方法300使分布式数据管理系统的装置能够执行同步和数据协调操作而不会丢失数据。在没有数据丢失的情况下执行数据协调在特定环境中可能是重要的,例如基于车辆的环境或IoT环境,其中每个计算装置继续接收或生成数据,而不管计算装置是否与其他计算装置连接。
图4至图8示出了分布式数据管理系统的操作的示例。在图4至图8中,操作由活动图示出,活动图包括以下列方式的状态、数据和事件的串:工作空间状态->(delta)->事件->(delta)->同步的工作空间状态。工作空间状态携带有关工作空间的信息,并标注如下:
nodes:(PrevPeers)->(CurrPeers),HEAD[DELTA]其中nodes是具有相同工作空间状态的节点列表,PrevPeers是先前的工作空间对等节点,CurrPeers是当前工作空间对等节点,HEAD是工作空间的最后提交版本的指示符,DELTA是自HEAD以来对工作空间做的累积更改的符号指示符。
工作空间符号的第一示例是AB:(ABC)->(AB),c1。在该示例中,节点A和B具有相同的工作空间状态,节点A和B的先前对等体是节点A、B和C,而节点A和B的当前对等体是其本身(例如,节点B是节点A的对等体,节点A是节点B的对等体)。HEAD版本被指定为c1,并且自c1以来未对工作区进行任何更改。
工作空间符号的第二示例是B:(ABC)->(B),c1,d1。在该示例中,节点B当前是自身的(例如,与其他节点断开连接),并且节点A、B和C先前是对等体。HEAD版本被指定为c1,并且节点B在与c1相关联的提交之后对共享工作空间进行了更新d1。
工作空间符号的第三示例是B:(ABC)->(AB),c1,d1'。在该示例中,节点B断电(可能在应用更新d1之前),节点A、B和C是先前的对等体,并且在节点B上电之后,节点A和B是对等体。HEAD版本被指定为c1,并且节点B在与c1相关联的提交之后对共享工作空间进行了更新d1'。因为节点B在进行所有更新d1之前可能已经失去了电力,所以更新被指定为d1'(指示更新d1中的至少一些但可能不是全部)。
参照图4,示出了分布式数据管理系统的装置的操作的第一示例,并且该第一示例通常被指定为400。图4示出了第一节点(“节点A”)和第二节点(“节点B”)的操作。在特定实施方式中,节点A和节点B包括或分别对应于图1和图2的第一计算装置102和第二计算装置152。
在402处,节点A和节点B加入对等集并存储复制数据的相同副本,其被提交为c1。因此,此时,节点A处的工作空间中的文件和节点B处的工作空间中的文件是相同的,并且由HEAD c1指示。节点A和B中的每一个存储指示版本c1的条目的树数据,并且该条目被指定为HEAD。
在404处,发生对共享工作空间的更新d1。由于使用安全写入,如参考图1所述,当一个节点处的应用程序更新共享工作空间时,该更新被提供给对等集的每个其他节点,并且只要对等集的每个节点保持上电并连接,就在对等集的每个节点进行更新。例如,在节点A或节点B处执行的应用程序可以生成更新d1,并且节点A和节点B都在相应的工作空间处执行更新d1。
在406处,发生触发同步的事件。作为非限制性示例,该事件可以是对等集的成员资格的变化、对等组的一个节点处的电力循环(例如,断电和上电),或周期性出现的同步时间。在图4中示出的第一示例400中,事件在节点A和B处的更新d1完成之后发生。
在408处,节点A和B将相应的工作空间提交到相应的存储库。提交由c2=c1+d1表示。因为节点A和节点B在402处和在408处提交工作空间之间保持对等,所以节点A和节点B的提交的工作空间保持相同。另外,节点A和节点B将对应于c2的条目添加到相应的树数据,并将与c2相关联的条目指定为HEAD。
在410处,发生对共享工作空间的更新d2。由于使用安全写入,节点A和节点B都开始在相应的工作空间处执行更新d2。在412处,节点B断电。节点B可能在节点B的工作空间完成更新d2之前断电。因此,在414处,节点A的对等集从A和B变为单独的A。节点A可以更新对等数据以指示节点B不再在对等集中。由于自408以来未发生任何提交,因此节点A处的HEAD仍指示c2,并且更新d2正在待处理。另外,在断电之前,更新d2'在节点B处于待处理状态。节点B的更新被指定为d2',因为在节点B断电之前是否所有更新d2都被执行(或仅仅是其一部分)是未知的。
在416处,节点A断电。在断电之前,没有提交也没有附加更新。因此,在418处,节点A和节点B处的工作空间的状态与在414处的工作空间的状态相同。在420处,节点B上电。根据存储在节点B处的同步设置,节点B可以被配置为响应于检测到上电或初始化操作而提交工作空间。因此,在422处,节点B将工作空间提交到存储库。提交由c3=c2+d2'表示。节点B将对应于c3的条目添加到树数据,并将该条目指定为HEAD。此外,节点B检测到它不再与节点A对等,并更改对等集以指示节点B没有对等体。例如,节点B可以更新存储在节点B处的对等数据以指示对等集中没有其他节点。
在424处,节点A上电。因此,在426处,节点A将其工作空间提交到其存储库。提交由c4=c2+d2表示。节点A将对应于c4的条目添加到树数据,并将该条目指定为HEAD。
在428处,节点A检测到它与节点B连接并且更新其对等集以包括节点B。节点B类似地检测到它已经与节点A重新连接并且更新其对等集以包括节点A。此外,节点A和B执行同步。例如,节点A和节点B处的同步设置可以指示响应于检测到上电(或初始化)并且响应于检测到对相应对等集的增加而执行同步。在特定实施方式中,此类同步设置指示延迟同步方案。作为同步的一部分,节点A和节点B确定幸存节点。用于确定幸存者节点的规则可以由存储在每个节点处的协调设置来指示。协调设置可以基于每个文件、每个目录或每个工作空间来存储。
在图4的第一示例400中,幸存节点被确定为在对等集中活动的最后一个节点。在其他实施方式中,可以使用其他规则来确定幸存节点。因为在节点B断电之后节点A保留在对等集中,所以节点A被确定为幸存者。可以基于比较对等数据来确定幸存节点,如参考图2所描述的。因此,节点B向节点A发送针对共享工作空间的请求,并且节点A将对应于c4的工作空间提供给节点B.
节点B使用来自节点A的数据重写存储在其工作空间中的数据,并将工作空间提交到存储库。提交由c4表示。节点B还响应于确定节点B不是幸存者而在树数据中创建分支。为了说明,节点B将c4的条目添加到树数据作为c2的条目的新分支,使得c4的条目和c3的条目在不同的分支上。节点B将c4的条目指定为HEAD。然而,由于存在c3条目的分支,节点B可以将c4与c3进行比较,以确定要提供给应用程序的差异数据,以执行应用程序级数据协调。在图4中所示的特定示例中,c4和c3之间的差异是在节点B断电之前未完成的更新d2的部分。因此,数据协调不会在此特定示例中添加任何其他更新。
图4还示出了指示工作空间的版本(例如,图1和图2的工作空间105和155)以及版本之间的关系的有向非循环图490。在图4中所示的特定示例中,有向非循环图490指示在节点B处生成并存储的树数据(例如,树数据261)。例如,在402处,节点B添加对应于c1的条目,并且在408处,节点B添加对应于c2的条目。c2和c1之间的差异是d1,如从c2到c1的箭头所示。在422处,节点B添加c3的条目。c3和c2之间的差异是d2',如从c3到c2的箭头所示。在428处,节点B将对应于c4的条目添加到新分支。c4和c2之间的差异是d2,如从c4到c2的箭头所示。另外,对应于c4的条目在428处被设置为HEAD,如c4周围的圆圈所示。可以通过添加连接到c4的条目来制作附加条目。在特定实施方式中,条目c1、c2和c4可以被称为由有向非循环图490指示的树的“主干”,而c3可以被称为分支条目。如本文进一步描述的,可以将分支条目与主干条目进行比较,以确定提供给应用程序的差异数据,以防止在协调期间数据丢失。节点A存储包括对应于c1、c2和c4但不对应于c3的条目的类似的树数据。
参照图5,示出了分布式数据管理系统的装置的操作的第二示例,并且该第二实例通常被指定为500。图5示出了第一节点(“节点A”)、第二节点(“节点B”)和第三节点(“节点C”)的操作。在特定实施方式中,节点A、节点B和节点C包括或分别对应于图1和图2的第一计算装置102、第二计算装置152和第三计算装置192。在第二示例500中,根据法定数量模式来同步文件,如果对等集低于N/2个节点(N=3时为2个节点),则该模式防止更新被应用于工作空间。另外,在图5中幸存节点被确定为保留在先前的法定数量中的LAST(最后)节点。
在502处,节点A、节点B和节点C加入对等集并存储复制数据的相同副本,其被提交为c1。因此,此时,节点A处的工作空间中的文件、节点B处的工作空间中的文件以及节点C处的工作空间中的文件是相同的,并且由HEAD c1指示。节点A、B和C中的每一个存储指示版本c1的条目的树数据,并且该条目被指定为HEAD。先前的节点A、B和C的对等集由(*)表示。
在504处,发生对共享工作空间的更新d1。由于使用安全写入,节点A、B和C开始在相应的工作空间处执行更新d1。在506处,节点B断电。节点B可能在节点B的工作空间处完成更新d1之前断电。因此,在508处,节点A和C的对等集改变为仅包括节点A和C(而没有节点B)。节点A和C可以更新对等数据以指示节点B不再在对等集中。由于自502以来未发生任何提交,因此节点A和C处的HEAD仍指示c1,并且更新d1正在待处理。另外,在断电之前,更新d1'在节点B处于待处理状态。节点B的更新被指定为d1',因为在节点B断电之前是否所有更新d1都被执行(或仅仅是其一部分)是未知的。
在510处,发生对共享工作空间的更新d2。因为节点A和节点C每个都包括在大小为2(例如,A和C)的对等集中,所以仍然保留法定数量并且仍然允许更新。因此,节点A和C开始执行更新d2。在512处,节点C断电。因此,在514处,节点A检测到节点C不再连接并且更新其对等集以仅包括其自身。另外,更新d1和d2在节点A处于待处理状态。节点C可能在完成更新d2之前断电,因此在节点C处待处理的更新被指定为d1和d2'。此时,法定数量丢失,并且没有节点能够对相应的工作空间执行更新。
在516处,节点A断电。在断电之前,没有提交也没有附加更新。因此,在518处,节点A的对等集包括节点A并且更新d1和d2待处理,节点B的对等集包括节点A、B和C并且更新d1'正在待处理,并且节点C的对等集包括节点A和C以及更新d1和d2'正在待处理。
在520处,节点B上电。在522处,节点B响应于检测到上电操作(或初始化操作)而将其工作空间提交到存储库。提交由c2=c1+d1'表示。节点B将对应于c2的条目添加到树数据,并将该条目指定为HEAD。另外,节点B检测到它不再与节点A和C对等,并且改变对等集以指示节点B没有对等体。例如,节点B可以更新存储在节点B处的对等数据以指示对等集中没有其他节点。虽然节点B上电,但节点B不是法定数量的一部分,因此防止从在节点B处执行的应用程序接收的任何更新修改工作空间。
在524处,节点A通电。因此,在526处,节点A响应于检测到上电条件(或初始化操作)而将其工作空间提交到存储库。提交由c3=c1+d1+d2表示。节点A将对应于c3的条目添加到树数据,并将该条目指定为HEAD。
在528处,节点A检测到它与节点B连接并且更新其对等集以包括节点B。节点B类似地检测到它已经与节点A重新连接并且更新其对等集以包括节点A。此外,节点A和B执行同步。作为同步的一部分,节点A和节点B根据LAST设置(指示法定数量的最后成员被选择为幸存节点的设置)确定幸存节点。节点A和B共享对等数据并确定节点A是法定数量的最后一个成员,因此选择节点A作为幸存节点。节点B向节点A发送对共享工作空间的请求,且节点A向节点B提供与c3对应的工作空间。节点B用来自节点A的数据重写存储在其工作空间中的数据,并将工作空间提交到存储库。提交由c3表示。节点B还响应于确定节点B不是幸存者而在树数据中创建分支。为了说明,节点B将c3的条目添加到树数据中作为c1的条目的新分支,使得c3的条目和c2的条目在不同的分支上。节点B将c3的条目指定为HEAD。因为图5示出了在法定数量模式下的操作,与c2相关联的条目不用于执行数据协调(因为在节点B不是法定数量的一部分时生成了该条目)。此时,存在法定数量,且节点A和B可以允许更新以修改工作空间。
在530处,发生更新d3。因为节点A和B是法定数量的一部分(例如,它们的对等集包括至少两个节点,A和B),所以节点A和B开始执行更新d3。因此,在532处,节点A和B的对等集包括两个节点(节点A和B),并且更新d3待处理。在534处,节点C上电。因此,在536处,节点C响应于检测到上电条件(或初始化操作)而将其工作空间提交到存储库。提交由c4=c1+d1+d2'表示。节点C将对应于c4的条目添加到树数据,并将该条目指定为HEAD。此外,节点A和B将其工作空间提交到其存储库。这些提交由c5=c3+d3表示。节点A和B将对应于c5的条目添加到它们的树数据中,并将条目指定为HEAD。
在528处,节点C检测与节点A和B的连接,并且节点A和B检测与节点C的连接。节点C更新其对等集以包括节点A和B,并且节点A和B更新其对等集以包括节点C。另外,节点A、B和C执行同步。作为同步的一部分,节点A、B和C根据LAST设置(指示法定数量的最后一个成员被选为幸存节点的设置)确定幸存节点。节点A、B和C共享对等数据并确定节点A是法定数量的最后成员,因此选择节点A作为幸存节点。节点C向节点A发送针对共享工作空间的请求,而节点A将对应于c5的工作空间提供给节点C。节点C用来自节点A的数据重写存储在其工作空间中的数据,并将工作空间提交到存储库。提交由c5表示。节点C还响应于确定节点C不是幸存者而在树数据中创建分支。为了说明,节点C将c5的条目添加到树数据中作为c1的条目的新分支,使得c5的条目和c4的条目在不同的分支上。节点C将c5的条目指定为HEAD。因为图5示出了在法定数量模式下的操作,因此与c4相关联的条目可以用于执行数据协调(因为该条目是在节点C是法定数量的一部分时生成的),然而,c4不包括未包括在c5中的任何附加数据。此时,节点A、B和C是法定数量的一部分,并且每个节点可以允许更新以修改相应的工作空间。例如,在540处,发生更新d4并将其应用于节点A、B和C的工作空间。
图5还示出了指示工作空间的版本和版本之间的关系的组合有向非循环图590。组合有向非循环图590基于存储在三个节点A、B和C处的树数据,尽管每个节点可以仅存储指示组合非循环图590的一部分的数据(例如,每个节点可以存储指示在相应节点处创建的分支,而不是在其他节点处创建的分支的树数据)。为了说明,存储在节点A处的树数据包括对应于c1(在502处添加)、c3(在526处添加)和c5(在536处添加)的条目。存储在节点B的树数据包括对应于c1(在502处添加)、c2(在522处添加)、c3(在538处添加)和c5(在536处添加)的条目。存储在节点C的树数据包括对应于c1(在502处添加)、c4(在536处添加)和c5(在538处添加,具有直接到c1的连接和d1+d2+d3的差异)的条目。
参照图6,示出了分布式数据管理系统的装置的操作的第三示例,并且第三示例通常被指定为600。图6示出了第一节点(“节点A”)、第二节点(“节点B”)和第三节点(“节点C”)的操作。在特定实施方式中,节点A、节点B和节点C包括或分别对应于图1和图2的第一计算装置102、第二计算装置152和第三计算装置192。在第三示例600中,根据法定数量模式同步文件,如果对等集低于N/2个节点(当N=3时为2个节点),则,该法定数量模式防止更新被应用于工作空间。另外,在图6中幸存节点被确定为保留在先前的法定数量中的LAST(最后)节点。
在602处,节点A、节点B和节点C加入对等集并存储复制数据的相同副本,其被提交为c1。因此,此时,节点A处的工作空间中的文件、节点B处的工作空间中的文件以及节点C处的工作空间中的文件是相同的,并且由HEAD c1指示。节点A、B和C中的每一个存储指示版本c1的条目的树数据,并且该条目被指定为HEAD。先前的节点A、B和C的对等集由(*)表示。
在604处,发生对共享工作空间的更新d1。由于使用安全写入,节点A、B和C开始在相应的工作空间处执行更新d1。在606处,节点B从节点A和C分区(但保持供电)。节点B在节点B的工作空间完成更新d1之后被分区。因此,在608处,节点A和C的对等集改变为仅包括节点A和C(而没有节点B),并且节点B的对等集被改变为仅包括节点B。节点A和C可以更新对等数据以指示节点B不再在对等集中,并且节点B可以更新对等数据以指示节点A和C不再在对等集中。因为自602以来没有发生任何提交,所以节点A、B和C处的HEAD仍然指示c1,并且更新d1正在待处理。
在610处,发生对共享工作空间的更新d2。因为节点A和节点C都包含在大小为2的对等集中,所以仍然保留法定数量并且仍然允许更新。因此,节点A和C开始执行更新d2。在612处,节点A和C被分区。因此,在614处,节点A检测到节点C不再连接并且更新其对等集以仅包括其自身。此外,更新d1和d2在节点A处于待处理状态。节点C检测到节点A不再连接并更新其对等集以仅包括其自身。此外,更新d1和d2在节点C处于待处理状态。此时,法定数量丢失,并且没有节点能够对相应的工作空间执行更新。
在616处,节点B加入(例如,重新连接)节点A。因此,在618处,节点A和B确定对等集的增加并提交它们相应的工作空间。节点A的提交由c3=c1+d1+d2表示,且节点B的提交由c2=c1+d1表示。节点A将对应于c3的条目添加到树数据,并将该条目指定为HEAD,而节点B将对应于c2的条目添加到树数据,并将该条目指定为HEAD。
在620处,节点A检测到它与节点B连接并且更新其对等集以包括节点B。节点B类似地检测到它已经与节点A重新连接并且更新其对等集以包括节点A。此外,节点A和B执行同步。作为同步的一部分,节点A和节点B根据LAST设置(指示法定数量的最后成员被选择为幸存节点的设置)确定幸存节点。节点A和B共享对等数据并确定节点A是法定数量的最后一个成员,因此选择节点A作为幸存节点。节点B向节点A发送对共享工作空间的请求,而节点A向节点B提供与c3对应的工作空间。节点B用来自节点A的数据重写存储在其工作空间中的数据,并将工作空间提交到存储库。提交由c3表示。因为c3包括与c2相关联的所有改变,所以节点B将c3的条目添加到树数据作为连接到c2的新条目,使得c2和c3的条目在主干中。节点B将c3的条目指定为HEAD。
在622处,发生更新d3。因为节点A和B是法定数量的一部分(例如,它们的对等集包括至少两个节点,A和B),所以节点A和B开始执行更新d3。在624处,节点C加入(例如,重新连接)节点A和B。因此,在626处,节点C响应于检测到上电操作(或初始化操作)而将其工作空间提交到存储库。节点C的提交由c3表示。节点C将对应于c3的条目添加到树数据中,并将该条目指定为HEAD。此外,节点A和B将它们的工作空间提交到它们的存储库。这些提交由c4=c3+d3表示。节点A和B将对应于c4的条目添加到它们的树数据中,并将条目指定为HEAD。
在628,节点C检测与节点A和B的连接,并且节点A和B检测与节点C的连接。节点C更新其对等集以包括节点A和B,并且节点A和B更新其对等集以包括节点C。另外,节点A、B和C执行同步。作为同步的一部分,节点A、B和C根据LAST设置(指示法定数量的最后一个成员被选为幸存节点的设置)确定幸存节点。节点A、B和C共享对等数据并确定节点A是法定数量的最后成员,因此选择节点A作为幸存节点。节点C向节点A发送对共享工作空间的请求,而节点A将对应于c4的工作空间提供给节点C。节点C用来自节点A的数据重写存储在其工作空间中的数据,并将工作空间提交到存储库。因为c4包括与c3相关联的所有改变,所以节点C将c4的条目添加到树数据作为连接到c3的新条目,使得c3和c4的条目在主干中。节点C将c4的条目指定为HEAD。由于树数据中没有分支,因此不执行数据协调。此时,节点A、B和C是法定数量的一部分,并且每个节点可以允许更新以修改相应的工作空间。例如,在630处,发生更新d4并将其应用于节点A、B和C的工作空间。
图6还示出了指示工作空间的版本和版本之间的关系的组合有向非循环图690。组合有向非循环图690基于存储在三个节点A、B和C处的树数据,尽管每个节点仅可以存储指示组合非循环图690的一部分的数据(例如,每个节点可以存储指示在相应节点处创建的分支,而不是在其他节点处创建的分支的树数据)。为了说明,存储在节点A处的树数据包括对应于c1(在602处添加)、c3(在618处添加)和c4(在626处添加)的条目。存储在节点B的树数据包括对应于c1(在602处添加)、c2(在618处添加)、c3(在620处添加)和c4(在626处添加)的条目。存储在节点C的树数据包括对应于c1(在602处添加)、c3(在626处添加)和c4(在628处添加)的条目。
参照图7,示出了分布式数据管理系统的装置的操作的第四示例,并且第四示例通常被指示为700。图7示出了第一节点(“节点A”)、第二节点(“节点B”)和第三节点(“节点C”)的操作。在特定实施方式中,节点A、节点B和节点C包括或分别对应于图1和图2的第一计算装置102、第二计算装置152和第三计算装置192。在第四示例700中,根据高可用性模式来同步文件,该高可用性模式使得能够将更新应用于工作空间而不管节点的对等集的大小。另外,在图7中,幸存节点被确定为保留在先前的法定数量中的LAST节点。
在702处,节点A、节点B和节点C加入对等集并存储复制数据的相同副本,其被提交为c1。因此,此时,节点A处的工作空间中的文件、节点B处的工作空间中的文件以及节点C处的工作空间中的文件是相同的,并且由HEAD c1指示。节点A、B和C中的每一个存储指示版本c1的条目的树数据,并且该条目被指定为HEAD。先前的节点A、B和C的对等集由(*)表示。
在704处,发生对共享工作空间的更新d1。由于使用安全写入,节点A、B和C开始在相应的工作空间处执行更新d1。在706处,节点B断电。节点B可能在节点B的工作空间处完成更新d1之前断电。因此,在708处,节点A和C的对等集改变为仅包括节点A和C(而没有节点B)。节点A和C可以更新对等数据以指示节点B不再在对等集中。由于自702以来未发生任何提交,因此节点A和C处的HEAD仍指示c1,并且更新d1正在待处理。另外,在断电之前,更新d1'在节点B处于待处理状态。节点B的更新被指定为d1',因为在节点B断电之前是否所有更新d1都被执行(或仅仅是其一部分)是未知的。
在710处,发生对共享工作空间的更新d2。由于高可用性模式,始终允许更新。因此,节点A和C开始执行更新d2。在712处,节点C断电。因此,在714处,节点A检测到节点C不再连接并且更新其对等集以仅包括其自身。另外,更新d1和d2在节点A处于待处理状态。节点C可能在完成更新d2之前断电,因此在节点C处待处理的更新被指定为d1和d2'。
在716处,发生对节点A的共享工作空间的更新d3。节点A开始执行更新d3。在718处,节点A断电。在断电之前,没有提交也没有附加更新。因此,在720处,节点A的对等集包括节点A并且更新d1、d2和d3'正在待处理,节点B的对等集包括节点A、B和C并且更新d1'正在待处理,并且节点C的对等集包括节点A和C并且更新d1和d2'正在待处理。
在722处,节点B上电。在724处,节点B响应于检测到上电操作(或初始化操作)而将其工作空间提交到存储库。提交由c2=c1+d1'表示。节点B将对应于c2的条目添加到树数据,并将该条目指定为HEAD。另外,节点B检测到它不再与节点A和C对等,并且改变对等集以指示节点B没有对等体。例如,节点B可以更新存储在节点B处的对等数据以指示对等集中没有其他节点。在726处,发生对节点B的共享工作空间的更新d4。节点B开始执行更新d4。在728处,节点B的对等集仅指示节点B(例如,没有其他节点)并且更新d4正在待处理。
在730处,节点A上电。因此,在732处,节点A响应于检测到上电条件(或初始化操作)而将其工作空间提交到存储库。提交由c3=c1+d1+d2+d3表示。节点A将对应于c3的条目添加到树数据,并将该条目指定为HEAD。此外,节点B将其工作空间提交到存储库。提交由c4=c2+d4表示。节点B将对应于c4的条目添加到树数据中,并将该条目指定为HEAD。
在734处,节点A检测到它与节点B连接并且更新其对等集以包括节点B。节点B类似地检测到它已经与节点A重新连接并且更新其对等集以包括节点A。此外,节点A和B执行同步。作为同步的一部分,节点A和节点B根据LAST设置(指示对等集的最后成员被选择为幸存节点的设置)确定幸存节点。节点A和B共享对等数据并确定节点A是活动对等集的最后成员,因此选择节点A作为幸存节点。节点B向节点A发送对共享工作空间的请求,节点A向节点B提供与c3对应的工作空间。节点B用来自节点A的数据重写存储在其工作空间中的数据,并将工作空间提交到存储库。提交由c3表示。节点B还响应于确定节点B不是幸存者而在树数据中创建分支。为了说明,节点B将c3的条目添加到树数据中作为c1的条目的新分支,使得c3的条目在与c2和c4的条目不同的分支上(例如,分支是从c1开始,因为c1是节点B连接到节点A时的最后一次提交)。节点B将c3的条目指定为HEAD。因为c4包括未包括在c3中的附加数据(例如,d4),所以c4可以用于数据协调,如参考图9进一步描述的。
在736处,发生更新d5。节点A和B开始执行更新d5。因此,在738处,节点A和B的对等集包括两个节点(节点A和B),并且更新d5待处理。在740处,节点C上电。因此,在742处,节点C响应于检测到上电条件(或初始化操作)而将其工作空间提交到存储库。提交由c5=c1+d1+d2'表示。节点C将对应于c5的条目添加到树数据,并将该条目指定为HEAD。此外,节点A和B将它们的工作空间提交到它们的存储库。这些提交由c6=c3+d5表示。节点A和B将对应于c6的条目添加到它们的树数据中,并将条目指定为HEAD。
在744处,节点C检测到与节点A和B的连接,并且节点A和B检测到与节点C的连接。节点C更新其对等集以包括节点A和B,并且节点A和B更新其对等集以包括节点C。另外,节点A、B和C执行同步。作为同步的一部分,节点A、B和C根据LAST设置(指示对等集的最后一个成员被选择为幸存节点的设置)确定幸存节点。节点A、B和C共享对等数据并确定节点A是对等集的最后成员,因此选择节点A作为幸存节点。节点C向节点A发送对共享工作空间的请求,而节点A将对应于c6的工作空间提供给节点C。节点C用来自节点A的数据重写存储在其工作空间中的数据,并将工作空间提交到存储库。提交由c6表示。节点C还响应于确定节点C不是幸存者而在树数据中创建分支。为了说明,节点C将c6的条目添加到树数据中作为c1的条目的新分支,使得c5的条目和c6的条目在不同的分支上。节点C将c6的条目指定为HEAD。如果c5包括未包括在c6中的附加数据,则c5可用于数据协调。此时,节点A、B和C均被配置为允许更新以修改相应的工作空间。例如,在746处,发生更新d6并将其应用于节点A、B和C的工作空间。
图7还示出了指示工作空间的版本和版本之间的关系的组合有向非循环图790。组合有向非循环图790基于存储在三个节点A、B和C处的树数据,尽管每个节点仅可以存储指示组合非循环图790的一部分的数据(例如,每个节点可以存储指示在相应节点处创建的分支,而不是在其他节点处创建的分支的树数据)。为了说明,存储在节点A处的树数据包括对应于c1(在702处添加)、c3(在732处添加)和c6(在742处添加)的条目。存储在节点B的树数据包括对应于c1(在702处添加)、c2(在724处添加)、c4(在732处添加)、c3(在734处添加)和c6(在742处添加)的条目。存储在节点C的树数据包括对应于c1(在702添加)、c5(在742处添加)和c6(在744处添加)的条目。
参照图8,示出了分布式数据管理系统的装置的操作的第五示例,并且第五示例通常被指定为800。图8示出了第一节点(“节点A”)、节点装置(“节点B”)和第三节点(“节点C”)的操作。在特定实施方式中,节点A、节点B和节点C包括或分别对应于图1和图2的第一计算装置102、第二计算装置152和第三计算装置192。在第五示例800中,根据高可用性模式来同步文件,该高可用性模式允许将更新应用于工作空间而不管对等集的节点数量。另外,在图8中,将幸存节点确定为保留在先前的对等集中的LAST节点。在其他实施方式中,幸存节点根据FIRST设置来确定,在FIRST设置中从已经是对等体(例如,已经同步)的多数节点集中选择任意节点,并且如果不存在多数节点,则任意节点被选为幸存节点。
在802处,节点A、节点B和节点C加入对等集并存储复制数据的相同副本,其被提交为c1。因此,此时,节点A处的工作空间中的文件、节点B处的工作空间中的文件以及节点C处的工作空间中的文件是相同的,并且由HEAD c1指示。节点A、B和C中的每一个存储指示版本c1的条目的树数据,并且该条目被指定为HEAD。先前的节点A、B和C的对等集由(*)表示。
在804处,发生对共享工作空间的更新d1。由于使用安全写入,节点A、B和C开始在相应的工作空间处执行更新d1。在806处,节点B从节点A和C分区(但保持供电)。节点B在节点B的工作空间完成更新d1之后被分区。因此,在808处,节点A和C的对等集改变为仅包括节点A和C(而没有节点B),并且在810处,节点B的对等集被改变为仅包括节点B。节点A和C可以更新对等数据以指示节点B不再在对等集中,并且节点B可以更新对等数据以指示节点A和C不再在对等集中。由于自802以来未发生任何提交,因此节点A、B和C处的HEAD仍指示c1,并且更新d1正在待处理。
在820处,发生对节点B的工作空间的更新d3。节点B开始执行更新d3。因此,在822处,更新d1和d3待处理,并且c1保持为HEAD。在812处,发生对节点A和节点C的工作空间的更新d2。节点A和C开始执行更新d2。在814处,节点A和C被分区。因此,在818处,节点A检测到节点C不再连接并且更新其对等集以仅包括其自身。另外,更新d1和d2在节点A处待处理。在816处,节点C检测到节点A不再连接并且更新其对等集以仅包括其自身。此外,更新d1和d2在节点C处于待处理状态。
在824处,发生对节点A的工作空间的更新d4。节点A开始执行更新d4。因此,在826处,更新d1、d2和d4在节点A处待处理,并且c1保持为HEAD。在828处,发生对节点C的工作空间的更新d5。节点C开始执行更新d5。因此,在830处,更新d1、d2和d5在节点C处待处理,并且c1保持为HEAD。
在832处,节点B加入(例如,重新连接)节点A。因此,在834处,节点A和B确定对等集的增加并提交它们相应的工作空间。节点A的提交由c3=c1+d1+d2+d4表示,节点B的提交由c2=c1+d1+d3表示。节点A将对应于c3的条目添加到树数据,并将该条目指定为HEAD,并且节点B将对应于c2的条目添加到树数据,并将该条目指定为HEAD。
在836处,节点A检测到它与节点B连接并且更新其对等集以包括节点B。节点B类似地检测到它已经与节点A重新连接并且更新其对等集以包括节点A。另外,节点A和B执行同步。作为同步的一部分,节点A和节点B根据LAST设置(指示活动对等体集的最后一个成员被选择为幸存节点的设置)确定幸存节点。节点A和B共享对等数据并确定节点A是活动对等集的最后成员,因此选择节点A作为幸存节点。节点B向节点A发送对共享工作空间的请求,节点A向节点B提供与c3对应的工作空间。节点B用来自节点A的数据重写存储在其工作空间中的数据,并将工作空间提交到存储库。提交由c3表示。c3的条目被添加到c3条目的新分支中。节点B将c3的条目指定为HEAD。因为c2包括未包括在c3中的附加数据,所以节点B基于c3和c2之间的差异生成差异数据,并将差异数据提供给在节点B处执行的应用程序。应用程序确定是否生成一个或多个更新(该更新包括差异数据指示的数据),以防止在协调期间数据丢失。
在838,发生对节点A和B的工作空间的更新d6。节点A和B开始执行更新d6。因此,在840处,更新d6在节点A和B处等待c3。在842处,节点C加入(例如,重新连接)节点A和B。因此,在844处,节点C响应于检测到对等集的增加将其工作空间提交到存储库。节点C的提交由c4=c1+d1+d2+d5表示。节点C将对应于c4的条目添加到树数据,并将该条目指定为HEAD。此外,节点A和B将它们的工作空间提交到它们的存储库。这些提交由c5=c3+d6表示。节点A和B将对应于c5的条目添加到它们的树数据中,并将条目指定为HEAD。
在846处,节点C检测到与节点A和B的连接,并且节点A和B检测到与节点C的连接。节点C更新其对等集以包括节点A和B,并且节点A和B更新其对等集以包括节点C。另外,节点A、B和C执行同步。作为同步的一部分,节点A、B和C根据LAST设置(指示对等集的最后一个成员被选择为幸存节点的设置)确定幸存节点。节点A、B和C共享对等数据并确定节点A是对等集的最后成员,因此选择节点A作为幸存节点。节点C向节点A发送对共享工作空间的请求,而节点A将对应于c5的工作空间提供给节点C。节点C用来自节点A的数据重写存储在其工作空间中的数据,并将工作空间提交到存储库。c5的条目被添加到c1条目的新分支中。节点C将c5的条目指定为HEAD。因为c4包括未包括在c5中的附加数据,所以节点C基于c4和c5之间的差异生成差异数据,并将差异数据提供给在节点C处执行的应用程序。应用程序确定是否生成一个或多个更新(该更新包括差异数据指示的数据)以防止在协调期间数据丢失。此时,节点A、B和C可以允许更新以修改各种的工作空间。例如,在848处,发生更新d7并将其应用于节点A、B和C的工作空间。
图8还示出了指示工作空间的版本和版本之间的关系的组合有向非循环图890。组合的有向非循环图890基于存储在三个节点A、B和C处的树数据,尽管每个节点仅可以存储指示组合非循环图890的一部分的数据(例如,每个节点可以存储指示在相应节点处创建的分支,而不是在其他节点处创建的分支的树数据)。为了说明,存储在节点A处的树数据包括对应于c1(在802处添加)、c3(在834处添加)和c5(在844处添加)的条目。存储在节点B的树数据包括对应于c1(在802处添加)、c2(在834处添加)、c3(在836处添加)和c5(在644处添加)的条目。存储在节点C的树数据包括对应于c1(在802处添加)、c4(在844处添加)和c5(在846处添加)的条目。有向非循环图890中的空条目用于说明。
参照图9,示出了指示跨多个装置的分布式数据管理系统的工作空间的版本和版本之间的关系的组合有向非循环图900。组合有向非循环图900基于存储在三个节点A、B和C处的树数据,尽管每个节点仅可以存储指示组合非循环图900的一部分的数据(例如,每个节点可以存储指示在相应节点处创建的分支,而不是在其他节点处创建的分支的树数据)。组合的非循环图900对应于参考图7描述的操作。然而,关于图9,节点被配置为以基于树的版本管理方案为基础执行数据协调。例如,节点B在创建具有对应于c3的条目的分支之后(例如,当节点B和节点A执行同步时)确定指示c4和c3之间的差异的差异数据。
在特定实施方式中,差异数据被提供给应用程序,并且应用程序确定是否生成附加更新以将与未使用分支相关联的数据添加回主干。例如,应用程序可以确定更新d4添加了重要数据,因此应用程序在协调操作期间生成包括d4的更新。虽然d4被示为添加有更新d6(例如,在节点C已经与节点A和B同步之后),但是在其他示例中,应用程序可以在更新d5(例如,在节点A和节点B执行同步之后)的同时(或邻近时间)生成包括d4的更新。在替代实施方式中,树数据存储在每个节点处,但差异数据并未生成且提供给应用程序。相反,应用程序被编程为访问执行应用程序的节点的存储库以便提取差异数据。
图10示出了执行数据同步的方法1000。在一些实施方式中,作为非限制性实例,方法1000由图1和图2的第一计算装置102、第二计算装置152或第三计算装置192执行。
方法1000包括:在1002处,在第一计算装置处存储与存储在第二计算装置处的文件的第二副本同步的文件的第一副本。例如,第一计算装置可以包括或对应于在第一计算装置102,文件的第一副本可以包括或对应于文件的第一副本107,文件的第二副本可以包括或对应于文件的第二副本157,并且第二计算装置可以包括或对应于第二计算装置152。
方法1000包括:在1004处,与第二计算装置的通信不可用时接收对文件的更新。例如,当接口108不能连接到第二计算装置152时,更新可以包括或对应于由处理器103(例如,数据管理器104)接收的更新115。
方法1000包括:在1006处,访问版本控制管理数据,对于包括所述文件的多个文件的每个特定文件,版本控制管理数据指示与特定文件相关联的同步设置。例如,版本控制管理数据可以包括或对应于版本控制管理数据117,其包括同步设置121。在特定实施方式中,版本控制管理数据包括对应于各个文件的同步设置。在其他实施方式中,版本控制管理数据包括与目录相对应的同步设置。
方法1000包括:在1008处,在确定版本控制管理数据指示与文件相关联的第一同步设置的条件下,将更新写入文件的第一副本。为了说明,作为非限制性示例,在同步设置为高可用性设置的条件下,将更新115写入工作空间105中的文件的第一副本107。
方法1000进一步包括:在1010处,在确定版本控制管理数据指示与文件相关联的第二同步设置的条件下,避免将更新写入文件的第一副本。为了说明,作为非限制性示例,在同步设置是法定数量设置且第一计算装置102不是法定数量的一部分的条件下,不将更新115写入工作空间105中的文件的第一副本107。
在特定实施方式中,方法1000包括,响应于检测到协调阶段,将文件的第一副本存储为文件的第一版本,确定通信可用于第一组计算装置,第一组计算装置包括第二计算装置,并且更新对等数据以指示第一组计算装置。例如,文件的第一版本可以包括或对应于第一版本111。作为非限制性实例,响应于检测到与第二计算装置的通信被恢复或者响应于检测到上电事件,可以检测协调事件。在该实施方式中,方法1000进一步包括从第一组计算装置中的每一个接收附加对等数据,以及基于对等数据、附加对等数据和与文件相关联的协调设置从第一组计算装置中选择第二计算装置。例如,协调设置可以包括或对应于协调设置223。在该特定实施方式中,方法1000进一步包括向第二计算装置发送对文件的第二版本的请求,响应于该请求从第二计算装置接收数据,并将数据存储为文件的第二个版本。例如,该请求可以包括或对应于请求241,并且该数据可以包括或对应于数据243。在一些实施方式中,方法1000进一步包括,响应于检测到特定计算装置的通信状态的改变,更新对等数据以指示通信状态。
因此,方法1000使得能够基于每个文件(或每个应用程序)执行同步。因此,方法1000适合于在基于车辆的分布式数据管理系统(例如分布式飞机系统)或IoT装置上执行。
在特定实施方式中,图10的方法1000的一个或多个元素可以由执行存储在非暂时性计算机可读介质上的指令的处理器执行。例如,非暂时性计算机可读介质可以存储指令,当由处理器执行时,使得处理器执行包括在第一计算装置处存储与存储在第二计算装置处的文件的第二副本同步的文件的第一副本的操作。该操作包括,响应于在与第二计算装置的通信不可用时接收对文件的更新,访问版本控制管理数据,该版本控制管理数据针对包括该文件的多个文件的每个特定文件指示与该特定文件相关联的同步设置。该操作包括,在确定版本控制管理数据指示与文件相关联的第一同步设置的条件下,将更新写入文件的第一副本。该操作进一步包括,在确定版本控制管理数据指示与文件相关联的第二同步设置的条件下,避免将更新写入文件的第一副本。
可以在如图11所示的飞机1100的背景下描述本公开的各方面。飞机1100可以包括分布式数据管理系统1132,其包括第一计算装置102、第二计算装置152、第三计算装置192,以及一个或多个可选的附加计算装置1112。如图11所示,飞机1100还包括具有多个系统1120的机身1118和内舱1122。高级系统1120的示例包括推进系统1124、电气系统1126、环境系统1128,液压系统1130和分布式数据管理系统1132中的一个或多个。还可以包括其他系统。虽然分布式数据管理系统1132被示为单独的系统,但是在其他实施方式中,分布式数据管理系统1132可以包含或包括在系统1124至1130中的一个或多个内。尽管示出了航空航天示例,但是本公开可以应用于其他行业。例如,分布式数据管理系统1132可以用在有人驾驶或无人驾驶交通工具(例如卫星、船只或陆基交通工具)上、建筑物或其他结构中。
尽管图1至11中的一个或多个示出了根据本公开的教导的系统、装置和/或方法,但本公开不限于这些示出的系统、装置和/或方法。如本文所示或所述的图1至11中任何一个的一个或多个功能或组件可以与图1至11中的另一个的一个或多个其他部分组合。例如,可以结合图10的方法1000的一个或多个元素或本文描述的其他操作执行图3的方法300的一个或多个元素。因此,本文描述的单个实施方式不应被解释为限制,并且可以在不脱离本公开的教导的情况下适当地组合本公开的实施方式。作为示例,参考图3或图10描述的一个或多个操作可以是可选的,可以至少部分地同时执行,和/或可以以与所示出或描述的顺序不同的顺序执行。
此外,本公开包括根据以下项的实施例:
项1、一种用于分布式数据管理系统的计算装置,该计算装置包括:
接口,被配置为与分布式数据管理系统的第二计算装置通信;
存储器,被配置为存储与存储在第二计算装置处的文件的第二副本同步的文件的第一副本;以及
处理器,被配置为响应于在接口不能与第二计算装置通信时接收对文件的更新:
访问版本控制管理数据,对于包括该文件的多个文件的每个特定文件,版本控制管理数据指示与特定文件相关联的同步设置;
在确定版本控制管理数据指示与文件相关联的第一同步设置的条件下,将更新写入文件的第一副本;以及
在确定版本控制管理数据指示与文件相关联的第二同步设置的条件下,避免将更新写入文件的第一副本。
项2、如项1所述的计算装置,其中,版本控制管理数据指示与包括文件的多个文件的目录相关联的同步设置。
项3、如项2所述的计算装置,其中,处理器进一步被配置为响应于在接口不能与第二计算装置通信时接收到对多个文件的目录的第一文件的更新:
在确定版本控制管理数据指示与多个文件的目录相关联的第一特定同步设置的条件下,将更新写入第一文件的第一特定副本;以及
在确定版本控制管理数据指示与多个文件的目录相关联的第二特定同步设置的条件下,避免将更新写入第一文件的第一特定副本。
项4、如项1至3中任一项的计算装置,其中,处理器进一步被配置为响应于在将更新写入文件的第一副本之后检测到接口能够与第二计算装置通信:
在确定版本控制管理数据指示与文件相关联的第一协调设置的条件下,向第二计算装置发送更新消息,其中,更新消息指示对文件的第一副本的更新;以及
在确定版本控制管理数据指示第二协调设置的条件下,向第二计算装置发送对更新数据的请求,更新数据指示对文件的第二副本的改变。
项5、如项1至4中任一项所述的计算装置,其中,处理器被配置为响应于确定第一同步设置对应于法定数量模式并且检测到接口能够与多个计算装置中的至少阈值数量的计算装置的通信,将更新写入文件的第一副本,其中,多个计算装置包括第二计算装置和一个或多个附加计算装置。
项6、如项1至5中任一项所述的计算装置,其中,处理器被配置为响应于确定第一同步设置对应于高可用性模式,将更新写入文件的第一副本。
项7、如项1至6中任一项所述的计算装置,其中,处理器被配置为响应于确定第二同步设置对应于法定模式并且检测到接口能够与多个计算装置中少于阈值数量的计算装置通信,避免将更新写入文件的第一副本,其中,多个计算装置包括第二计算装置和一个或多个附加计算装置。
项8、如项1至7中任一项所述的计算装置,其中,处理器、接口和存储器被集成到飞机、车辆或物联网(IoT)装置中的至少一个中。
项9、如项1至8中任一项所述的计算装置,其中,处理器进一步被配置为:在协调阶段期间,在第一时间确定接口能够与包括第二计算装置的第一组计算装置通信,并且其中,存储器被配置为存储指示接口能够在第一时间与第一组计算装置通信的对等数据。
项10、如项9所述的计算装置,其中,处理器被配置为响应于检测到处理器的初始化阶段,检测到与第二计算装置恢复通信,或两者都检测到,来检测协调阶段。
项11、如项9至10中任一项所述的计算装置,其中,处理器进一步被配置为在协调阶段期间:
将在存储器中的文件的第一个副本存储为文件的第一版本;
从第一组计算装置中的每一个接收附加的对等数据;
基于对等数据、附加对等数据和与文件相关联的协调设置,从第一组计算装置中选择第二计算装置;
向第二计算装置发送对文件的第二版本的请求;
响应于该请求,从第二计算装置接收数据;以及
将数据存储在存储器中作为文件的第二版本。
项12、如项11所述的计算装置,其中,处理器进一步被配置为在协调阶段期间向一个或多个应用程序提供指示文件的第一版本和文件的第二版本之间的差异的特定数据。
项13、一种分布式数据管理方法,该方法包括:
在第一计算装置处存储与存储在第二计算装置中的文件的第二副本同步的文件的第一副本;
响应于在与第二计算装置的通信不可用时接收到对文件的更新:
访问版本控制管理数据,对于包括该文件的多个文件的每个特定文件,版本控制管理数据指示与该特定文件相关联的同步设置;
在确定版本控制管理数据指示与文件相关联的第一同步设置的条件下,将更新写入文件的第一副本;以及
在确定版本控制管理数据指示与文件相关联的第二同步设置的条件下,避免将更新写入文件的第一副本。
项14、如项13所述的方法,进一步包括,响应于检测到协调阶段:
将文件的第一副本存储为文件的第一版本;
确定与第一组计算装置的通信可用,第一组计算装置包括第二计算装置;
更新对等数据以指示第一组计算装置;
从第一组计算装置中的每一个接收附加对等数据;
基于对等数据、附加对等数据和与文件相关联的协调设置,从第一组计算装置中选择第二计算装置;
向第二计算装置发送对文件的第二版本的请求;
响应于该请求从第二计算装置接收数据;以及
将数据存储为文件的第二版本。
项15、如项14所述的方法,进一步包括,响应于检测到特定计算装置的通信状态的改变,更新对等数据以指示通信状态。
项16、如项14至15中任一项所述的方法,其中,响应于检测到与第二计算装置的通信被恢复来检测协调阶段。
项17、如项14至16中任一项所述的方法,其中,响应于检测到上电事件来检测协调阶段。
项18、一种分布式数据管理系统,包括:
第一计算装置,包括:
第一接口,被配置为与第二计算装置的第二接口通信;
第一存储器,被配置为存储与存储在第二计算装置处的文件的第二副本同步的文件的第一副本;以及
第一处理器,被配置为响应于在第一接口不能与第二接口通信时接收到对文件的第一更新:
访问版本控制管理数据的第一副本,对于包括该文件的多个文件的每个特定文件,该版本控制管理数据指示与该特定文件相关联的同步设置;
在确定版本控制管理数据的第一副本指示与文件相关联的第一同步设置条件下,将第一更新写入文件的第一副本;以及
在确定版本控制管理数据的第一副本指示与文件相关联的第二同步设置的条件下,避免将第一更新写入文件的第一副本;以及
第二计算装置包括:
第二接口,被配置为用于与第一计算装置的第一接口通信;以及
第二存储器,被配置为存储文件的第二副本。
项19、如项18所述的分布式数据管理系统,其中,第二计算装置还包括第二处理器,第二处理器被配置为响应于在第二接口不能与第一接口通信时接收到对文件的第二更新:
访问版本控制管理数据的第二副本;
在确定版本控制管理数据的第二副本指示与文件相关联的第一特定同步设置的条件下,将第二更新写入文件的第二副本;和
在确定版本控制管理数据的第二副本指示与文件相关联的第二特定同步设置的条件下,避免将第二更新写入文件的第二副本。
项20、如项18至19中任一项所述的分布式数据管理系统,其中,第一计算装置对应于飞机的第一航线可替换单元,并且其中,第二计算装置对应于飞机的第二航线可替换单元。
本文描述的示例的说明旨在提供对各种实施方式的结构的一般理解。这些说明不旨在用作利用本文描述的结构或方法的装置和系统的所有元件和特征的完整描述。在阅读本公开后,许多其他实施方式对于本领域技术人员而言是显而易见的。从本公开其他实施方式可以被使用并得出,使得可以在不脱离本公开的范围的情况下进行结构和逻辑的替换和改变。例如,方法操作可以以与图中所示不同的顺序执行,或者可以省略一个或多个方法操作。因此,本公开和附图应被视为说明性的而非限制性的。
此外,尽管本文已说明和描述了特定实例,但应了解,经设计以实现相同或类似结果的任何后续布置可替代所示出的特定实施方式。本公开旨在涵盖各种实施方式的任何和所有后续修改或变更。在阅读本说明书之后,上述实施方式的组合以及本文未具体描述的其他实施方式对于本领域技术人员而言将是显而易见的。
提交本公开的摘要,其理解是它不会用于解释或限制权利要求的范围或含义。另外,在前面的具体实施方式中,出于简化本公开的目的,可以将各种特征组合在一起或者在单个实施方式中描述。上述示例说明但不限制本公开。还应该理解,根据本公开的原理可以进行多种修改和变更。如以下权利要求所反映的,所要求保护的主题可以针对少于任何所公开示例的所有特征。因此,本公开的范围由以下权利要求及其等同物限定。
Claims (15)
1.一种用于分布式数据管理系统的计算装置,所述计算装置包括:
接口,被配置为与所述分布式数据管理系统的第二计算装置通信;
存储器,被配置为存储与存储在所述第二计算装置处的文件的第二副本同步的所述文件的第一副本;以及
处理器,被配置为响应于在所述接口不能与所述第二计算装置通信时接收到对所述文件的更新:
访问版本控制管理数据,对于包括所述文件的多个文件的每个特定文件,所述访问版本控制管理数据指示与所述特定文件相关联的同步设置;
在确定所述版本控制管理数据指示与所述文件相关联的第一同步设置的条件下,将所述更新写入所述文件的所述第一副本;以及
在确定所述版本控制管理数据指示与所述文件相关联的第二同步设置的条件下,避免将所述更新写入所述文件的所述第一副本。
2.根据权利要求1所述的计算装置,其中,所述版本控制管理数据指示与包括所述文件的多个文件的目录相关联的同步设置。
3.根据权利要求2所述的计算装置,其中,所述处理器进一步被配置为响应于在所述接口不能与所述第二计算装置通信时接收所述多个文件的目录的第一文件的更新:
在确定所述版本控制管理数据指示与所述多个文件的目录相关联的第一特定同步设置的条件下,将所述更新写入所述第一文件的第一特定副本;以及
在确定所述版本控制管理数据指示与所述多个文件的目录相关联的第二特定同步设置的条件下,避免将所述更新写入所述第一文件的所述第一特定副本。
4.根据权利要求1至3中任一项所述的计算装置,其中,所述处理器进一步被配置为响应于在将所述更新写入所述文件的所述第一副本之后检测到所述接口能够与所述第二计算装置通信:
在确定所述版本控制管理数据指示与所述文件相关联的第一协调设置的条件下,向所述第二计算装置发送更新消息,其中,所述更新消息指示对所述文件的所述第一副本的所述更新;以及
在确定所述版本控制管理数据指示第二协调设置的条件下,向所述第二计算装置发送更新数据的请求,所述更新数据指示对所述文件的所述第二副本的改变。
5.根据权利要求1至3中任一项所述的计算装置,其中,所述处理器被配置为响应于确定所述第一同步设置对应于法定数量模式并检测到所述接口能够与多个计算装置中的至少阈值数量的计算装置通信,将所述更新写入所述文件的所述第一副本,其中,所述多个计算装置包括所述第二计算装置和一个或多个附加计算装置。
6.根据权利要求1至3中任一项所述的计算装置,其中,所述处理器被配置为响应于确定所述第一同步设置对应于高可用性模式,将所述更新写入所述文件的所述第一副本。
7.根据权利要求1至3中任一项所述的计算装置,其中,所述处理器被配置为响应于确定所述第二同步设置对应于法定数量模式并且检测到所述接口能够与多个计算装置中的少于阈值数量的计算装置通信,避免将所述更新写入所述文件的所述第一副本,其中,所述多个计算装置包括所述第二计算装置和一个或多个附加计算装置。
8.根据权利要求1至3中任一项所述的计算装置,其中,所述处理器、所述接口和所述存储器被集成到飞机、车辆以及物联网装置中的至少一个。
9.根据权利要求1至3中任一项所述的计算装置,其中,所述处理器进一步被配置为:在协调阶段期间,在第一时间确定所述接口能与包括所述第二计算装置的第一组计算装置通信,并且其中,所述存储器被配置为存储指示所述接口能够在第一时间与所述第一组计算装置通信的对等数据,其中,所述处理器被配置为响应于检测到所述处理器的初始化阶段,检测到与所述第二计算装置恢复通信或者两者来检测所述协调阶段。
10.根据权利要求9所述的计算装置,其中,所述处理器进一步被配置为在所述协调阶段期间:
将所述文件的所述第一副本存储在所述存储器中作为所述文件的第一版本;
从所述第一组计算装置中的每一个计算装置接收附加对等数据;
基于所述对等数据、所述附加对等数据和与所述文件相关联的协调设置,从所述第一组计算装置中选择所述第二计算装置;
向所述第二计算装置发送所述文件的第二版本的请求;
响应于所述请求,从所述第二计算装置接收数据;以及
将所述数据存储在所述存储器中作为所述文件的所述第二版本,其中,所述处理器进一步被配置为在所述协调阶段期间将指示所述文件的所述第一版本与所述文件的所述第二版本之间的差异的特定数据提供至一个或多个应用程序。
11.一种分布式数据管理方法,所述方法包括:
在第一计算装置处存储与存储在第二计算装置处的文件的第二副本同步的所述文件的第一副本;
响应于在与所述第二计算装置的通信不可用时接收到对所述文件的更新:
访问版本控制管理数据,对于包括所述文件的多个文件的每个特定文件,所述版本控制管理数据指示与所述特定文件相关联的同步设置;
在确定所述版本控制管理数据指示与所述文件相关联的第一同步设置的条件下,将所述更新写入所述文件的所述第一副本;以及
在确定所述版本控制管理数据指示与所述文件相关联的第二同步设置的条件下,避免将所述更新写入所述文件的所述第一副本。
12.根据权利要求11所述的方法,进一步包括:响应于检测到协调阶段:
将所述文件的所述第一副本存储为所述文件的第一版本;
确定与第一组计算装置的通信可用,所述第一组计算装置包括所述第二计算装置;
更新对等数据以指示所述第一组计算装置;
从所述第一组计算装置中的每一个计算装置接收附加对等数据;
基于所述对等数据、所述附加对等数据和与所述文件相关联的协调设置从所述第一组计算装置中选择所述第二计算装置;
向所述第二计算装置发送所述文件的第二版本的请求;
响应于所述请求,从所述第二计算装置接收数据;以及
将所述数据存储为所述文件的所述第二版本。
13.根据权利要求12所述的方法,进一步包括:响应于检测到特定计算装置的通信状态的改变,更新所述对等数据以指示所述通信状态。
14.根据权利要求12至13中任一项所述的方法,其中,响应于检测到与所述第二计算装置的通信被恢复,检测所述协调阶段。
15.根据权利要求12至13中任一项所述的方法,其中,响应于检测到上电事件来检测所述协调阶段。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/726,927 | 2017-10-06 | ||
US15/726,927 US11755615B2 (en) | 2017-10-06 | 2017-10-06 | Distributed data management system and method |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110019102A true CN110019102A (zh) | 2019-07-16 |
CN110019102B CN110019102B (zh) | 2023-09-19 |
Family
ID=63998475
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811109884.9A Active CN110019102B (zh) | 2017-10-06 | 2018-09-21 | 分布式数据管理系统及方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11755615B2 (zh) |
EP (1) | EP3467687B1 (zh) |
CN (1) | CN110019102B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11360955B2 (en) * | 2018-03-23 | 2022-06-14 | Ebay Inc. | Providing custom read consistency of a data object in a distributed storage system |
CN110046199A (zh) * | 2019-04-24 | 2019-07-23 | 北京阿尔山金融科技有限公司 | 交易数据的同步方法、装置及电子设备 |
CN113329042B (zh) * | 2020-02-12 | 2024-06-11 | 斑马智行网络(香港)有限公司 | 消息处理方法及系统、车联网系统、服务器、电子设备 |
CN113194502B (zh) * | 2021-04-30 | 2022-06-21 | 哈尔滨工业大学 | 一种无人机集群的分布式中心选择和通信方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060224775A1 (en) * | 2003-08-01 | 2006-10-05 | Nitgen Technologies Inc. | Contents synchronization system in network enviroment and a method therefor |
US20100250507A1 (en) * | 2009-03-31 | 2010-09-30 | Microsoft Corporation | Enumeration of a concurrent data structure |
US20110196866A1 (en) * | 2010-02-09 | 2011-08-11 | Yahoo! Inc. | Small table: multitenancy for lots of small tables on a cloud database |
US9069827B1 (en) * | 2012-01-17 | 2015-06-30 | Amazon Technologies, Inc. | System and method for adjusting membership of a data replication group |
CN104885054A (zh) * | 2013-03-13 | 2015-09-02 | 华为技术有限公司 | 大规模并行处理数据库中执行事务的系统和方法 |
US20160063083A1 (en) * | 2014-08-29 | 2016-03-03 | Netapp, Inc. | Synchronization cache seeding |
CN105991752A (zh) * | 2015-03-06 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 一种数据块更新方法及设备 |
CN106105370A (zh) * | 2014-03-21 | 2016-11-09 | 三星电子株式会社 | 用于设备到设备同步优先级的方法和装置 |
CN106790565A (zh) * | 2016-12-27 | 2017-05-31 | 中国电子科技集团公司第五十二研究所 | 一种网络附属存储集群系统 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7587467B2 (en) * | 1999-12-02 | 2009-09-08 | Western Digital Technologies, Inc. | Managed peer-to-peer applications, systems and methods for distributed data access and storage |
WO2013054374A1 (en) * | 2011-10-12 | 2013-04-18 | Hitachi, Ltd. | Storage system, and data backup method and system restarting method of storage system |
US8719225B1 (en) | 2012-01-17 | 2014-05-06 | Amazon Technologies, Inc. | System and method for log conflict detection and resolution in a data store |
US9081843B2 (en) | 2012-11-06 | 2015-07-14 | Tibco Software Inc. | Data replication protocol with steady state data distribution and quorum formation |
US10747746B2 (en) | 2013-04-30 | 2020-08-18 | Amazon Technologies, Inc. | Efficient read replicas |
US9244958B1 (en) | 2013-06-13 | 2016-01-26 | Amazon Technologies, Inc. | Detecting and reconciling system resource metadata anomolies in a distributed storage system |
US20160117304A1 (en) * | 2014-10-28 | 2016-04-28 | TerraXML, Inc. | Standalone document management method |
US10091305B2 (en) * | 2014-12-17 | 2018-10-02 | International Business Machines Corporation | Disconnect protection for command-line remote terminals |
US10936548B2 (en) * | 2016-03-15 | 2021-03-02 | Microsoft Technology Licensing, Llc | File synchronization pausing for individual files |
US10331885B2 (en) * | 2016-12-02 | 2019-06-25 | Microsoft Technology Licensing, Llc | Identification of entity performing operation on local file(s) and notification to reduce misuse risk |
US10554375B2 (en) * | 2017-09-11 | 2020-02-04 | Micron Technology, Inc. | Full duplex device-to-device cooperative communication |
-
2017
- 2017-10-06 US US15/726,927 patent/US11755615B2/en active Active
-
2018
- 2018-09-21 CN CN201811109884.9A patent/CN110019102B/zh active Active
- 2018-10-04 EP EP18198646.4A patent/EP3467687B1/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060224775A1 (en) * | 2003-08-01 | 2006-10-05 | Nitgen Technologies Inc. | Contents synchronization system in network enviroment and a method therefor |
US20100250507A1 (en) * | 2009-03-31 | 2010-09-30 | Microsoft Corporation | Enumeration of a concurrent data structure |
US20110196866A1 (en) * | 2010-02-09 | 2011-08-11 | Yahoo! Inc. | Small table: multitenancy for lots of small tables on a cloud database |
US9069827B1 (en) * | 2012-01-17 | 2015-06-30 | Amazon Technologies, Inc. | System and method for adjusting membership of a data replication group |
CN104885054A (zh) * | 2013-03-13 | 2015-09-02 | 华为技术有限公司 | 大规模并行处理数据库中执行事务的系统和方法 |
CN106105370A (zh) * | 2014-03-21 | 2016-11-09 | 三星电子株式会社 | 用于设备到设备同步优先级的方法和装置 |
US20160063083A1 (en) * | 2014-08-29 | 2016-03-03 | Netapp, Inc. | Synchronization cache seeding |
CN105991752A (zh) * | 2015-03-06 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 一种数据块更新方法及设备 |
CN106790565A (zh) * | 2016-12-27 | 2017-05-31 | 中国电子科技集团公司第五十二研究所 | 一种网络附属存储集群系统 |
Non-Patent Citations (2)
Title |
---|
LOUIS M. PECORA.ETC: "Cluster synchronization and isolated desynchronization in complex networks with symmetries", NATURE COMMUNICATIONS * |
崔昌栋;陆鑫;钱锋;王艳蓉;: "SophicDB:一个高性能分布式实时数据库系统", no. 10 * |
Also Published As
Publication number | Publication date |
---|---|
US20190108268A1 (en) | 2019-04-11 |
EP3467687A1 (en) | 2019-04-10 |
CN110019102B (zh) | 2023-09-19 |
US11755615B2 (en) | 2023-09-12 |
EP3467687B1 (en) | 2023-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110019102A (zh) | 分布式数据管理系统及方法 | |
US9747301B2 (en) | Distributed file system using consensus nodes | |
EP2972983B1 (en) | Dynamically managing memberships in replicated state machines within a distributed computing environment | |
US9846704B2 (en) | Distributed file system using consensus nodes | |
CN106062717B (zh) | 一种分布式存储复制系统和方法 | |
AU2015241457A1 (en) | Geographically-distributed file system using coordinated namespace replication | |
CN110392876A (zh) | 将数据集和其他受管理对象同步地复制到基于云的存储系统 | |
CN100454265C (zh) | 镜像恢复方法、存储设备及网络系统 | |
CN102880529B (zh) | 内存数据备份方法及内存数据备份系统 | |
CN107870829A (zh) | 一种分布式数据恢复方法、服务器、相关设备及系统 | |
KR102508817B1 (ko) | 메시지 전송 버스를 이용한 고가용성 배전 지능화 시스템 | |
CN108415793A (zh) | 经由日志操作修改复制组的成员资格 | |
CN106598789A (zh) | 容器服务容灾的方法、装置、生产站点和灾备站点 | |
CN109144748A (zh) | 一种服务器、分布式服务器集群及其状态驱动方法 | |
CN110661841B (zh) | 微服务架构中分布式服务发现集群的数据一致性方法 | |
CN107196988A (zh) | 一种跨地域数据传输的方法和设备 | |
CN111400065B (zh) | 一种分离全局zookeeper的pulsar消息异地多活方法及系统 | |
JP5900094B2 (ja) | データ整合システム、データ整合方法およびデータ整合プログラム | |
EP2980707B1 (en) | Method for creating a database clone of a distributed database, system for creating a database clone of a distributed database, program and computer program product | |
CN106201981A (zh) | 一种临近空间艇载计算机多cpu系统自适应重构方法 | |
JP2011002970A (ja) | 分散データ管理システム、データ管理装置、データ管理方法、およびプログラム | |
EP4104066A1 (en) | Methods, devices and systems for writer pre-selection in distributed data systems | |
CN103389930B (zh) | 数据存储装置和数据存储方法 | |
CN107590024A (zh) | 一种数据存储方法和数据存储系统 | |
Dolev et al. | On distributed algorithms in a broadcast domain |
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 |