CN116243959A - 大规模对象版本控制和一致性的实现方式 - Google Patents
大规模对象版本控制和一致性的实现方式 Download PDFInfo
- Publication number
- CN116243959A CN116243959A CN202211374610.9A CN202211374610A CN116243959A CN 116243959 A CN116243959 A CN 116243959A CN 202211374610 A CN202211374610 A CN 202211374610A CN 116243959 A CN116243959 A CN 116243959A
- Authority
- CN
- China
- Prior art keywords
- data object
- storage
- hash value
- version
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
描述了大规模对象版本控制和一致性的实现方式。计算机可读存储介质的示例包括指令,该指令用于:从对象管理机构接收在存储装置处存储数据对象的版本的存储请求;生成数据对象的散列值;将数据对象存储在暂存器存储中;将对数据对象的散列值的验证请求传送至对象版本控制机构;以及,在接收到对散列值的肯定验证后,将数据对象从暂存器存储移动至介质存储,并将确收传送至对象管理机构。
Description
技术领域
本公开总体上涉及计算设备领域,并且更具体地,涉及大规模对象版本控制和一致性的实现方式。
背景技术
版本控制是用于处置对分布式软件的更新的常见手段。版本控制方法背后的关键概念是保持锁定的好处,同时实现更多的并发性,这是通过提供“一致的”多个数据版本来实现的。在此类技术中,当数据被写入时,创建一个数据的新版本,同时数据接收适当的时间戳,使得在发生写入的同时读取可以继续进行。使用当前一致版本继续读取。以此种方式,读取和写入操作不会相互阻碍。
附图说明
本文所描述的各实施例作为示例而非限制在所附附图的各图中示出,在附图中,同样的附图标记指代类似的要素。
图1图示出根据一些实施例的包括多个版本并发性控制的分布式数据库;
图2是根据一些实施例的计算环境中的单独物理位置中的节点的示例;
图3A和图3B图示出系统中的一致性选择的示例;
图4图示出根据一些实施例的用于提供对象版本控制和一致性的存储体系结构;
图5图示出根据一些实施例的用于提供对象版本控制和一致性的存储体系结构;
图6A是图示根据一些实施例的用于维持对象版本控制和一致性的过程的流程图;
图6B是图示根据一些实施例的用于更新数据对象以维持对象版本控制和一致性的过程的流程图;
图7图示出根据一些实施例的用于包括对象版本控制和一致性的操作的计算体系结构的示例;
图8是根据一些实施例的被构造成用于执行机器可读指令或操作的示例处理器平台的框图;
图9是处理器电路系统的示例实现方式的框图;以及
图10是图示示例软件分发平台的框图。
具体实施方式
本文描述的实施例涉及大规模对象版本控制和一致性的实现方式。
在现代计算操作中,不同的用户可以在许多物理位置利用表和其他数据元素。但是,数据元素通常将随时间而被更新。版本控制可用于处置对多个计算系统的更新,其中版本控制是指建立数据元素的不同版本。例如,特定表可具有多个版本,这些版本已经生成并呈现在不同的位置,并且表的特定实例的版本通知系统该实例的新近程度。
然而,随着计算环境向上扩展,版本控制变得越来越困难,诸如在其中存在大量节点的云环境(该云环境可包括特定环境中的数百个或更多节点)以及可能遍布全球的环境中。云环境是用于提供云计算的环境,在这种环境中,计算服务通过网络连接(或“云”)按需提供。具体而言,云计算可包括提供计算机系统资源,诸如数据存储和计算,而无需用户直接主动管理。此类计算环境的性质对数据并发性和数据一致性有重大影响。数据并发性是指多个用户同时(即,并发地)访问数据的能力,而数据一致性是指多个用户中的每个用户查看数据的一致视图。如本文进一步所述,不同的实现方式可能会对数据并发性和数据一致性有不同的要求。
在计算环境中可以使用几种不同的版本控制实现方式,包括多版本并发性控制(其中,时间戳和增量事务ID用于实现事务并发性)、二进制大型对象化(blobbing)(基于二进制大型对象(blob)的存储管理系统,该系统已由主要CSP(Cloud Solution Provider,云解决方案提供方)实现)等。这些方法中的关键概念是,在获得更多数据并发性的同时,保持锁定的好处(锁定是指在特定事务期间提供对表的排他控制),这是通过提供在特定实现方式中被处理或定义为“一致”的数据的多个版本(该多个版本将包括数据值中的差异)来实现的。当表或其他数据元素被写入时,创建数据的新版本,且该表接收适当的时间戳。以此种方式,读取可以在发生写入的同时继续,且读取将以当前的“一致”版本继续。换言之,读取和写入可以一起执行(至少部分重叠),而不会相互阻碍。
在一些示例中,装置、系统或过程用于通过硬件的应用来实现大规模对象版本控制和一致性,以确保所存储的对象与所存储的对象表示的原始对象一致。示例用于提供在分布式系统中扩展对象一致性和版本控制的机制,从而实现对硬件加速的存储装置的总拥有成本的降低。
图1图示出根据一些实施例的包括多个版本并发性控制的分布式数据库.如图所示,存储装置100提供了表(或其他数据)的主副本的存储,且随着时间时期的推移,存在这些表的多个版本。在该简化的图示中存在三个表,表A、表B和表C,以及每个表随时间推移的一定数量的版本。在该特定示例中,表A包括版本A1、A2和A3;表B包括版本B1、B2、B3和B4;并且表C包括版本C1、C2、C3和C4。对象版本控制机构110操作以生成并维护表的版本。
如进一步所示,对象版本控制机构与主服务器120耦合,主服务器120包括控制器122、应用服务器124和调度器126。在示例中,主服务器可以进一步包括密钥值存储128,该密钥值存储128存储用于各种目的的密钥和值。该特定示例图示出Kubernetes容器编排系统,该Kubernetes容器编排系统提供对计算机应用程序部署、扩展和管理的自动化。在该系统中,Kubernetes集群包括运行容器化应用的一组工作机,称为节点。工作节点托管舱,这些舱是应用工作负载的组件。在所示示例中存在一组单独的节点,图示为节点0到节点6,其中每个节点包括Kubelet组件(在节点上运行的代理,该代理确保容器在舱中运行)和Kube代理组件(在每个节点上运行以实现Kubernetes服务操作的一部分的网络代理)。然而,应注意,实施例不限于此技术,并且可以包括其他类型的节点操作。
在图1所示的示例中,单独的节点(图示为节点0到节点6)在其本地存储器中包括表的副本,其中存储装置经由MVCC(Multi Version Concurrency Control,多版本并发性控制)跟踪和维护版本控制信息。图1图示出在一个特定时间点存在于存储器中的、可能会在稍后时间改变的表。表的对象版本控制连同时间时期一起被跟踪。数据的最新版本并不总是在任何时候出现在所有节点中,并且这对于其中数据库具有松弛/最终一致性要求的许多情况是可以接受的。如图1中具体图示的,表A、表B和表C的不同版本可存在于每个节点,诸如节点0包括表版本A1、A2和A3,而节点1包括表版本A2、B2和C4。
应注意,节点可以物理地分离,这可能会影响每个节点中哪个版本可用。图2是根据一些实施例的计算环境中的单独物理位置中的节点的示例。如图所示,节点0、1、2和6可以在不同的大陆中分隔,其中所有这些节点与表的主副本100有一定距离。在该示例中,在特定时间点,节点6已存储A3(该示例中表A的最新版本),而节点1已存储A2,并且节点0和2已存储A1。
在一个示例中,在“添加到购物车”购物阶段期间,电子商务购物车结账可能没有强一致性要求(使得例如用户可以潜在地看到N个物品X可购,并将所有N个物品添加到购物中,即使其他用户可能正访问相同的物品进行购买),但是当购物车已结账(此时,如果例如,另一用户在中间对购物车中的N个物品的某个子集结账,则用户将被通知物品可购性)时,一致性要求被完全执行(强一致性)。
图3A和图3B图示出系统中的一致性选择的示例。节点集群中的数据一致性可根据每个节点的特定需求和情况而变化。可能的一致性方案可具有不同类型的实现方式和要求,这可包括基于时间-时期的要求(例如,提供不超过X秒时间长度的数据)、基于条件或规则的(例如,购物期间的松弛一致性,和购物车中结账时的强一致性)或基于读取-写入顺序的。
如图3A和图3B中所示,一致性方案可包括但不限于:强一致性,其中所有节点都看到数据的相同版本(使用有序事件列表提供可线性化);有界陈旧一致性,其中数据版本需要有特定界限(提供一致前缀,其中读取可以仅以特定k个前缀(指版本号)或特定t个时间间隔滞后于写入);会话一致性(提供具有单调读取、单调写入、读取您的写入以及写入跟随读取的一致前缀);一致前缀一致性(提供所返回的更新是所有更新的某个前缀,且没有间隙);以及最终一致性(允许乱序读取)。
随着各种各样的数据库的向外扩展成为常态,存在对获得能够跨数据中心扩展的解决方案的巨大关注。现代的云上出生(born-in-the-cloud)数据库(诸如Snowflake)可以试图通过在关于软件管理、传播和具有用户指定条件的灵活性的各种实现来解决这个可扩展性问题。然而,由于所需的密集处理,软件解决方案在扩展到更大计算环境的能力方面受到限制。
在一些示例中,分布式对象版本控制和可扩展性是利用聚焦于硬件的方法解决的。诸如版本散列计算(散列计算用于例如确定来自不同节点的表的不同版本不同)、认证流等之类的可应用操作的性能可以通过硬件钩的实现而大大增强。将一些原语卸载到存储装置中的硬件实现更大的可扩展性。此外,扩展版本控制过程实现细粒度的写入日志功能,这进而可以提高云中的分布式对象的可扩展性。
在一些示例中,扩展了池化存储体系结构(例如,结构(Fabrics)NVMe-oF上的NVMe(Non-Volatile Memory express,非易失性存储器快速)),并进一步结合了硬件方案,该硬件方案负责确保存储在硬件装置中的数据对象(以及对象的可能的多个版本)与它们存储的原始对象一致。在一些示例中,存储体系结构包括以下元素:
(1)提供外部受信任实体(诸如服务器),本文中称为对象版本控制机构,以验证具有特定散列的特定对象对应于具有特定ID和版本ID的对象。
(2)当实体创建对象和该对象的后续版本时,该实体负责用对象版本和对应于每个对象版本的散列来更新外部受信任实体。
(3)由特定实体创建的对象可以随时间复制到不同的数据中心或边缘装置中。例如,存储在中央存储库中的云原生服务可能会随着时间的推移由其他实体(例如用户或软件栈)跨不同的数据中心传播。
(4)群集中的数据中心包括新的池化版本存储装置,该装置负责验证经由(3)存储在介质中的对象与(2)对象版本一致。当对象存储在本地存储装置中时,存储装置负责使用(1)进行验证,以确定对象有效。未通过(1)验证的对象不会被存储在本地存储中。
(5)数据中心中运行的任何用户或软件栈都可以访问存储在池化存储中的对象,这些对象之前已被验证。因此,此类访问不需要散列计算或验证。
图4图示出根据一些实施例的用于提供对象版本控制和一致性的存储体系结构。系统体系结构400包括与存储装置430耦合的对象管理机构425和对象版本控制机构。如图4中所示,存储装置430包括:
(a)对象版本控制缓存432,其中对象版本控制缓存432存储被存储在存储装置430中的所有对象及它们相对应的版本信息。对象版本控制缓存432的内容可以如图5中进一步所示。
(b)对象介质438,该对象介质438是用于物理地存储已被存储在存储装置430中的对象的介质。对象介质434可以是例如SSD(Solid State Device,固态设备)、NVM(Non-Volatile Memory,非易失性存储器)、HDD(Hard Disk Drive,硬盘驱动器)或任何其他类型的存储设备中的一者或多者。
(c)用于在存储和验证操作期间提供对数据对象的临时存储的暂存器介质436。暂存器介质436可以是例如单独的SSD或存储设备内的少量存储。
(d)包括电路系统的版本控制组件434,版本控制组件434负责在存储或更新对象时实现一致性检查流。在一些实现方式中,当存在存储具有特定ID和特定版本的特定对象的请求时,版本控制组件用于:(i)执行对象的散列计算,诸如当对象由请求存储对象的实体(诸如对象管理机构425)提供时,执行内联散列计算;(ii)将对象临时存储在暂存器介质中;(iii)散列计算完成后,联系外部受信任实体(诸如对象版本控制机构415)以验证所计算的散列对应于具有UUID和该版本的对象。在肯定的情况下,对象从暂存器介质436被移动至对象介质438,并且确收(acknowledgement,ACK)被传送回对象管理机构425。在否定的情况下,否定确收(negative acknowledgement,NACK)被传送回目标管理机构425。
存储设备经由经认证通道420与对象版本控制机构415耦合。对象版本控制机构415是受信任实体(诸如服务器),该受信任实体可操作用于验证具有特定散列的特定对象对应于具有特定ID和版本ID的对象。
对象版本控制机构415负责提供应用编程接口(application programminginterface,API),以管理一个或多个对象的生命周期管理。对象版本控制机构415提供以下主要接口:
(1)注册新对象:任何受信任实体或管理对象版本控制的实体可以认证的实体都可以注册新对象,诸如图4中所示示例中的对象A。注册新对象可需要以下参数:(a)对象ID的UUID(Universally Unique Identifier,通用唯一标识符);(b)对象的版本;(c)要注册的对象;以及(d)对象的元数据,该元数据可包括可更新对象的实体、对象的优先级等。
(2)更新新对象:受信任实体随后可以更新特定对象,提供(a)对象ID的UUID;(b)对象的版本;以及(c)经更新的对象。
在图4中所示的示例中,当实体(诸如图示出的对象A机构所有者410)创建对象A和对象A的后续版本时,对象A机构所有者410负责用对应于每个对象版本的散列来更新对象版本控制机构415。如图4中所示,对象A机构所有者410向对象版本控制机构415提供ACCESS(REG OBJ=A,V=1,HASH)(访问(注册对象=A,V=1,散列)),指示提供对象A的版本1和该版本的散列。接着,对象所有者410的责任是,当这些新版本被创建时,使中央对象版本控制机构415与对象(在该实例中为对象A)的新版本和散列保持最新。
由特定实体创建的对象可以随时间的推移而被复制到不同的数据中心或边缘装置中。例如,存储在中央存储库中的云原生服务可能会随着时间的推移由其他实体(例如用户或软件栈)跨不同的数据中心传播。在一些示例中,存储装置430是池化版本存储装置,该池化版本存储装置负责验证存储在介质(对象介质438)中的对象一致。当对象被存储在本地装置中时,存储装置430负责验证对象有效。如上所述,未由存储装置430验证的对象不存储在本地存储中。在数据中心中运行的、具有对存储在该池化存储(存储装置430)中的对象的访问的任何用户或软件栈都知道这些对象之前已经过验证,并且因此不需要散列计算或验证。
在示例中,在云原生操作的上下文中,存储装置430可以托管在数据中心中,并且可以存储从中央存储库(例如,docker hub)缓存的不同容器和微服务。服务所有者可以将对象(诸如对象A)的新版本存储到docker hub中。在某个时间点,来自数据中心的一方可能希望将新版本存储到存储装置430中。如图所示,对象管理机构425请求将对象A的版本1存储在存储装置430中——WRITE(REG OBJ=A,VER=1)(写入(注册对象=A,版本=1))。存储装置430使用对象A的版本ID和对象ID与对象版本控制机构415通信,以验证为对象A生成的对象散列对应于根据对象版本控制机构415的正确的对象和版本。在肯定的情况下,对象的新版本将被存储在存储装置430中(在对象介质438中)。否则,对象被拒绝。
在特定示例中,存储装置430进一步与特定平台系统440耦合。该平台系统可包括一个或多个处理器,该一个或多个处理器包括中央处理单元(central processing unit,CPU)444、存储器445、用于提供与存储装置430的连接的接口(例如IPU/NIC(Infrastructure Processing Unit/Network Interface Controller,基础设施处理单元/网络接口控制器))446,以及存储448。平台440包括服务442。在该示例中,服务442请求访问对象A的版本1——ACCESS(REG OBJ=A,VER=1)(访问(注册对象=A,版本=1))。如果所请求的对象A的版本不存在于存储448中,则平台440用于经由接口446从存储装置430请求对象。然后,存储装置430用于返回对象A,该对象A已先前经由对象版本控制机构415被存储装置430认证。
在一些实施例中,系统或过程支持存储中更松弛的一致性(例如,其中并非所有更新都生成验证),并允许混合模型,其中取决于服务或系统的特定要求,某些对象可能不需要验证。
图5图示出根据一些实施例的用于提供对象版本控制和一致性的存储体系结构。系统体系结构400包括与存储装置430耦合的对象管理机构425和对象版本控制机构,如图4中所示。如关于图4所述,存储装置430包括对象版本控制缓存432,该对象版本控制缓存432存储在存储装置430中存储的所有对象的数据。
在一些实施例中,对象版本控制缓存432包括列表500,该列表500包括:
(i)对象ID,该对象ID用相对应的UUID标识每个对象;
(ii)对象版本ID,该对象版本ID标识每个对象的版本;以及
(iii)散列,该散列对应于特定对象。
图6A是图示根据一些实施例的用于维持对象版本控制和一致性的过程的流程图。在方法600中,可从对象管理机构接收请求以将数据对象(诸如表)的特定版本存储在存储装置中602,该请求包括数据对象、数据对象的标识和数据对象的版本。在一些实施例中,数据对象的版本可以是要存储在存储装置中的数据对象的多个版本中的一个版本。存储装置用于生成对象的散列(604),并将数据对象存储在存储装置的暂存器介质中(606),其中该暂存器介质可包括例如单独的SSD或存储设备内的少量存储。
然后,存储装置用于将对数据对象的验证请求传送至对象版本控制机构(608),其中验证请求可以经由经认证通道发送,并且其中验证请求至少包括数据对象的标识、数据对象的版本号和所生成的散列值。
在接收到指示散列与数据对象的版本对应的肯定验证(610)后,数据对象从暂存器移动至对象介质以供存储(612);用数据对象的标识、数据对象的版本和散列值更新对象版本控制缓存(614);以及将确收(ACK)传送至对象管理机构(616)。在接收到指示散列与数据对象的版本不对应的否定验证(610)后,从暂存器移除数据对象而不存储(620),并且否定确收(NACK)被发送至对象管理机构(622)。
图6B是图示根据一些实施例的用于更新数据对象以维持对象版本控制和一致性的过程的流程图。在方法630中,可从对象管理机构接收存储对先前已被存储在存储装置中的数据对象的版本的更新的请求(632),该请求包括对数据对象的更新、数据对象的标识和数据对象的版本。
在一些实施例中,存储装置用于将更新存储在存储装置的暂存器介质中(634);从存储介质拷贝数据对象的版本并存储在暂存器介质中(636);将更新应用于暂存器介质中的数据对象(638);以及生成经更新的数据对象的散列(640)。
然后,存储装置用于将对经更新的数据对象的验证请求传送至对象版本控制机构642,其中验证请求可以经由经认证通道发送,并且其中验证请求至少包括数据对象的标识、数据对象的版本号和经更新的数据对象的所生成的散列值。
在接收到指示经更新的数据对象的散列与数据对象版本相对应的肯定验证650后,经更新的数据对象从暂存器移动至对象介质以供存储652;用数据对象的标识、数据对象的版本和经更新的数据对象的散列值来更新对象版本控制缓存654;以及将ACK传送至对象管理机构656。在接收到指示散列与数据对象的版本不对应的否定验证650后,从暂存器移除经更新的数据对象而不存储660,并且NACK被发送至对象管理机构662。
图6A和图6B中所示的流程图可包括用于由处理器电路系统执行的程序的机器可读指令。该程序可以具体化为存储在一个或多个非瞬态计算机可读存储介质上的软件,该一个或多个非瞬态计算机可读存储介质诸如:CD(Compact Disk,致密盘)或DVD(DigitalVideo Disk,数字视频盘)、硬盘驱动器(hard disk drive,HDD)、固态驱动器(solid statedrive,SSD)、易失性存储器(例如,任何类型的随机存取存储器(Random Access Memory,RAM)等),或与位于一个或多个硬件设备中的处理器电路系统相关联的非易失性存储器(例如,闪存存储器、HDD等)。程序或其部分可替代地由除处理器电路系统之外的一个或多个硬件设备执行和/或具体化为固件或专用硬件。机器可读指令可跨多个硬件设备分发和/或由两个或更多个硬件设备(例如,服务器和客户端硬件设备)执行。例如,客户端硬件设备可以由端点客户端硬件设备(例如,与用户相关联的硬件设备)或中间客户端硬件设备(例如,可促进服务器与端点客户端硬件设备之间通信的无线电接入网络(radio access network,RAN)网关)来实现。类似地,非瞬态计算机可读存储介质可包括位于一个或多个硬件设备中的一个或多个介质。尽管参考图6A和图6B中所示的流程图描述了示例程序,但也可以替代地使用许多其它实现方法。例如,可以改变框的执行次序,和/或可改变、消除或组合所描述的框中的一些框。附加地或替代地,框中的任何框或所有框可以由被构造成用于在不执行软件或固件的情况下执行相应的操作的一个或多个硬件电路(例如,处理器电路系统、分立的和/或集成的模拟和/或数字电路系统、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、ASIC(Application-Specific Integrated Circuit,专用集成电路)、比较器、运算放大器(operational-amplifier,op-amp)、逻辑电路等)来实现。处理器电路系统可以分布在不同的网络位置和/或在一个或多个硬件设备(例如,单核心处理器(例如,单核心中央处理单元(central processing unit,CPU))、单个机器中的多核心处理器(例如,多核心CPU等)、跨服务器机架的多个服务器分布的多个处理器、跨一个或多个服务器机架分布的多个处理器、位于同一封装中(例如,位于同一集成电路(integrated circuit,IC)封装中或位于两个或更多个分开的壳体中等)的CPU和/或FPGA)本地。
本文中描述的机器可读指令可以以压缩格式、加密格式、分段格式、编译格式、可执行格式、封装格式等中的一种或多种来存储。如本文描述的机器可读指令可以作为可用于创建、制造和/或产生机器可行指令的数据或数据结构(例如,指令的部分、代码、代码表示等)来存储。例如,机器可读指令可以被分段并被存储在位于网络或网络集合(例如,在云中、在边缘设备中等)中的相同或不同位置处的一个或多个存储设备和/或计算设备(例如,服务器)上。机器可读指令可能需要安装、修改、适配、更新、组合、补充、配置、解密、解压缩、拆包、分发、重新指派、编译等中的一项或多项,以使得它们由计算设备和/或其他机器直接可读取、可解释、和/或可执行。例如,机器可读指令可以存储在多个部分中,这些部分被单独压缩、加密和/或存储在单独的计算设备上,其中,这些部分在被解密、解压缩和/或组合时形成实现可以一起形成诸如本文中描述的程序之类的程序的一个或多个操作的一组可执行指令。
在另一示例中,机器可读指令可以以它们可被处理器电路系统读取的状态存储,但是需要添加库(例如,动态链接库(dynamic link library,DLL))、软件开发工具包(software development kit,SDK)、应用编程接口(application programminginterface,API)等,以便在特定的计算设备或其他设备上执行机器可读指令。在另一示例中,在可整体或部分地执行机器可读指令和/或对应的(一个或多个)程序之前,可能需要配置机器可读指令(例如,存储的设置、输入的数据、记录的网络地址等)。因此,如本文中所使用,机器可读介质可包括机器可读指令和/或(一个或多个)程序,而不管机器可读指令和/或(一个或多个)程序在被存储时或以其他方式处于静态或在途中时的特定格式或状态如何。
图7图示出根据一些实施例的用于包括对象版本控制和一致性的操作的计算体系结构的示例。在如上所述的各实施例中,计算体系结构700可包括电子设备或可被实现为电子设备的部分。
在一些实施例中,计算体系结构700可表示例如实现如上所述的操作环境的一个或多个组件的计算机系统。计算体系结构700可用于提供对象版本控制和一致性操作,诸如图1-图6B中所描述的。
如本申请中所使用,术语“系统”、“组件”和“模块”旨在指代计算机相关实体(无论是硬件、硬件和软件的组合、软件、还是执行中的软件),其示例通过示例性计算体系结构700来提供。例如,组件可以是但不限于是:处理器上运行的进程、处理器、硬盘驱动器或固态驱动器(SSD)、(光和/或磁存储介质的)多个存储驱动器、对象、可执行件、执行线程、程序、和/或计算机。作为说明,在服务器上运行的应用和该服务器两者都可以是组件。一个或多个组件可以驻留在进程和/或执行线程内,并且组件可以局部化在一个计算机上和/或分布在两个或更多个计算机之间。进一步地,组件可通过各种类型的通信介质彼此通信地耦合以协调操作。该协调可涉及单向或双向的信息交换。例如,组件能以通过通信介质传输的信号的形式来传输信息。该信息可被实现为分配给各信号线的信号。在此类分配中,每一条消息都是信号。然而,进一步的实施例可替代地采用数据消息。此类数据消息可跨各种连接被发送。示例性连接包括并行接口、串行接口和总线接口。
计算体系结构700包括各种常见计算元件,诸如,一个或多个处理器、多核心处理器、协处理器、存储器单元、芯片组、控制器、外围设备、接口、振荡器、定时设备、视频卡、音频卡、多媒体输入/输出(input/output,I/O)组件、电源,等等。然而,实施例不限于由计算体系结构700来实现。
如图7中所示,计算体系结构700包括一个或多个处理器702以及一个或多个图形处理器708,并且可以是单处理器桌面型系统、多处理器工作站系统或具有大量处理器702或处理器核心707的服务器系统。在一个实施例中,系统700是被并入到在移动设备、手持式设备或嵌入式设备中使用的片上系统(system-on-a-chip,SoC或SOC)集成电路内的处理平台。
系统700的实施例可以包括以下各项或可被并入在以下各项内:基于服务器的游戏平台、游戏控制台(包括游戏和媒体控制台)、移动游戏控制台、手持式游戏控制台或在线游戏控制台。在一些实施例中,系统700是移动电话、智能电话、平板计算设备或移动互联网设备。数据处理系统700还可以包括可穿戴设备、与可穿戴设备耦合、或被集成在可穿戴设备内,该可穿戴设备诸如智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备。在一些实施例中,数据处理系统700是电视机或机顶盒设备,该电视机或机顶盒设备具有一个或多个处理器702以及由一个或多个图形处理器708生成的图形界面。
在一些实施例中,一个或多个处理器702各自包括一个或多个处理器核心707,该一个或多个处理器核心707用于处理指令,这些指令当被执行时,执行用于系统和用户软件的操作。在一些实施例中,一个或多个处理器核心707中的每一个都被配置成用于处理特定的指令集709。在一些实施例中,指令集709可促进复杂指令集计算(Complex InstructionSet Computing,CISC)、精简指令集计算(Reduced Instruction Set Computing,RISC)或经由超长指令字(Very Long Instruction Word,VLIW)的计算。多个处理器核心707各自可以处理不同的指令集709,不同的指令集709可包括用于促进对其他指令集的仿真的指令。处理器核心707还可包括其他处理设备,诸如,数字信号处理器(Digital SignalProcessor,DSP)。
在一些实施例中,处理器702包括缓存存储器704。取决于体系结构,处理器702可具有单个内部缓存或多级的内部缓存。在一些实施例中,缓存存储器704在处理器702的各种部件之间被共享。在一些实施例中,处理器702也使用外部缓存(例如,第三级(Level-3,L3)缓存或末级缓存(Last Level Cache,LLC))(未示出),可使用已知的缓存一致性技术在处理器核心707之间共享该外部缓存。寄存器堆706附加地被包括在处理器702中,寄存器堆706可包括用于存储不同类型数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器以及指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以特定于处理器702的设计。
在一些实施例中,一个或多个处理器702与一个或多个接口总线710耦合,以在处理器702与系统中的其他组件之间传输通信信号,诸如,地址、数据、或控制信号。在一个实施例中,接口总线710可以是处理器总线,诸如,直接媒体接口(Direct Media Interface,DMI)总线的某个版本。然而,处理器总线不限于DMI总线,并且可以包括一个或多个外围组件互连总线(例如,PCI、PCI Express)、存储器总线、或其他类型的接口总线。在一个实施例中,(一个或多个)处理器702包括集成存储器控制器716和平台控制器中枢730。存储器控制器716促进存储器设备与系统700的其他部件之间的通信,而平台控制器中枢(platformcontroller hub,PCH)730提供经由本地I/O总线至I/O设备的连接。
存储器设备720可以是动态随机存取存储器(dynamic random-access memory,DRAM)设备、静态随机存取存储器(static random-access memory,SRAM)设备、诸如闪存存储器设备或相变存储器设备之类的非易失性存储器设备、或具有合适的性能以充当进程存储器的某个其他存储器设备。存储器设备720可以进一步包括用于固件的存储的非易失性存储器元件。在一个实施例中,存储器设备720可以作为用于系统700的系统存储器来操作,以存储数据722和指令721,用于在一个或多个处理器702执行应用或进程时使用。存储器控制器中枢716也与任选的外部图形处理器712耦合,该任选的外部图形处理器712可与处理器702中的一个或多个图形处理器708通信以执行图形和媒体操作。在一些实施例中,显示设备711能够连接至(一个或多个)处理器702。显示设备711可以是以下各项中的一项或多项:内部显示设备,如在移动电子设备或膝上型设备中;或经由显示接口(例如,显示端口等)附接的外部显示设备。在一个实施例中,显示设备711可以是头戴式显示器(headmounted display,HMD),诸如,用于在虚拟现实(virtual reality,VR)应用或增强现实(augmented reality,AR)应用中使用的立体显示设备。
在一些实施例中,平台控制器中枢730使外围设备能够经由高速I/O总线而连接至存储器设备720和处理器702。I/O外围设备包括但不限于音频控制器746、网络控制器734、固件接口728、无线收发器726、触摸传感器725、数据存储设备724(例如,硬盘驱动器、闪存存储器等)。数据存储设备724可以经由存储接口(例如,SATA)或经由外围总线(诸如外围组件互连总线(例如,PCI、PCI Express))连接。触摸传感器725可以包括触摸屏传感器、压力传感器、或指纹传感器。无线收发器726可以是Wi-Fi收发器、蓝牙收发器、或移动网络收发器,该移动网络收发器诸如3G、4G或长期演进(Long Term Evolution,LTE)或5G收发器。固件接口728启用与系统固件的通信,并且可以例如是统一可扩展固件接口(unifiedextensible firmware interface,UEFI)。网络控制器734可启用至有线网络的网络连接。在一些实施例中,高性能网络控制器(未示出)与接口总线710耦合。在一个实施例中,音频控制器746是多声道高清音频控制器。在一个实施例中,系统700包括用于将传统(例如,个人系统2(Personal System 2,PS/2))设备耦合至系统的任选的传统I/O控制器740。平台控制器中枢730还能够连接到一个或多个通用串行总线(Universal Serial Bus,USB)控制器742连接输入设备,诸如,键盘和鼠标743组合、相机744、或其他USB输入设备。
图8是根据一些实施例的被构造成用于执行机器可读指令或操作的示例处理器平台的框图。如图所示,处理器平台800可以是例如,服务器、个人计算机、工作站、自学习机(例如,神经网络)、移动设备(例如,手机、智能电话或平板)、互联网设备、DVD播放器、CD播放器、数字视频记录仪、蓝光播放器、游戏控制台、个人视频记录仪、机顶盒、头戴式设备(例如,增强现实(AR)头戴式设备、虚拟现实(VR)头戴式设备等)或其他可穿戴设备、或任何其他类型的计算设备。
所图示示例的处理器平台800包括处理器电路系统812。所图示示例的处理器电路系统812是硬件。例如,处理器电路系统812可以由来自任何所期望的系列或制造商的一个或多个集成电路、逻辑电路、FPGA、微处理器、CPU、GPU、DSP和/或微控制器实现。处理器电路系统812可由一个或多个基于半导体的(例如,基于硅的)器件来实现。
所图示示例的处理器电路系统812包括本地存储器813(例如,缓存、寄存器等)。所图示示例的处理器电路系统812经由总线818与包括易失性存储器814和非易失性存储器816的主存储器进行通信。易失性存储器814可以由同步动态随机存取存储器(SynchronousDynamic Random Access Memory,SDRAM)、动态随机存取存储器(Dynamic Random AccessMemory,DRAM)、和/或任何其他类型的RAM设备实现。非易失性存储器816可以由闪存存储器和/或任何其他所期望类型的存储器设备实现。由存储器控制器817控制对所图示示例的主存储器814、816的访问。
所图示示例的处理器平台800还包括接口电路系统820。接口电路系统820可以由根据任何类型的接口标准的硬件实现,诸如以太网接口、通用串行总线(universal serialbus,USB)接口、接口、近场通信(near field communication,NFC)接口、PCI接口和/或PCIe接口。
在所图示的示例中,一个或多个输入设备822被连接至接口电路系统820。(一个或多个)输入设备822准许用户将数据和/或命令输入到处理器电路系统812中。(一个或多个)输入设备822可以由例如音频传感器、麦克风、相机(静态或视频)、键盘、按钮、鼠标、触摸屏、轨迹板、轨迹球、等点鼠标设备和/或语音识别系统实现。
一个或多个输出设备824也被连接至所图示示例的接口电路系统820。输出设备824可以例如由显示设备(例如,发光二极管(light emitting diode,LED)、有机发光二极管(organic light emitting diode,OLED)、液晶显示器(liquid crystal display,LCD)、阴极射线管(cathode ray tube,CRT)显示器、面内切换(in-place switching,IPS)显示器、触摸屏等)、触觉输出设备、打印机和/或扬声器实现。因此,所图示示例的接口电路系统820通常包括图形驱动器卡、图形驱动器芯片和/或诸如GPU之类的图形处理器电路系统。
所图示示例的接口电路系统820还包括诸如发射器、接收器、收发器、调制解调器、住宅网关、无线接入点、和/或网络接口之类的通信设备,以促进通过网络835与外部机器(例如,任何种类的计算设备)交换数据。通信可以通过例如以太网连接、数字订户线路(digital subscriber line,DSL)连接、电话线连接、同轴电缆系统、卫星系统、直线对传式无线系统、蜂窝电话系统、光连接等。
所图示示例的处理器平台800还包括用于存储软件和/或数据的一个或多个大容量存储设备828。此类大容量存储设备828的示例包括磁存储设备、光存储设备、软盘驱动器、HDD、CD、蓝光盘驱动器、独立磁盘冗余阵列(redundant array of independent disks,RAID)系统、固态存储设备(诸如闪存设备)和DVD驱动器。
可以由图7的机器可读指令来实现的机器可执行指令830可以被存储在大容量存储设备828中,存储在易失性存储器814中,存储在非易失性存储器816中,和/或存储在诸如CD或DVD之类的可移除非瞬态计算机可读存储介质上。
图9是处理器电路系统的示例实现方式的框图.在该示例中,处理器电路系统由微处理器900实现。例如,微处理器900可以实现多核心硬件电路系统,诸如CPU、DSP、GPU、XPU等。尽管它可以包括任意数量的示例核心902(例如,1个核心),但本示例的微处理器900是包括N个核心的多核心半导体器件。微处理器900的核心902可以独立操作,或者可以协作以执行机器可读指令。例如,与固件程序、嵌入式软件程序或软件程序相对应的机器代码可以由核心902中的一个核心来执行,或者可以由核心902中的多个核心在相同或不同的时间执行。在一些示例中,与固件程序、嵌入式软件程序或软件程序相对应的机器代码被分割成线程,并由核心902中两个或更多个核心并行地执行。软件程序可以与由图6A和图6B的流程图表示的机器可读指令和/或操作的部分或全部相对应。
核心902可通过示例总线904进行通信。在一些示例中,总线904可实现通信总线,以用于实行与核心902中的(一个或多个)核心相关联的通信。例如,总线904可以实现集成电路间(Inter-Integrated Circuit,I2C)总线、串行外围接口(Serial PeripheralInterface,SPI)总线、PCI总线或PCIe总线中的至少一个。附加地或替代地,总线904可以实现任何其他类型的计算或电气总线。核心902可以通过示例接口电路系统906从一个或多个外部设备获得数据、指令和/或信号。核心902可以通过接口电路系统906向一个或多个外部设备输出数据、指令和/或信号。尽管该示例的核心902包括示例本地存储器920(例如,第一级(L1)缓存,其可被拆分为L1数据缓存和L1指令缓存),但微处理器900还包括可由核心共享的示例共享存储器910(例如,第二级(L2)缓存),以用于对数据和/或指令的高速访问。数据和/或指令可以通过向共享存储器910写入和/或从共享存储器910读取来传输(例如,共享)。核心902中的每个核心902的本地存储器920、以及共享存储器910可以是包括多级缓存存储器和主存储器的存储设备的层次体系的部分。典型地,相比于较低级别的存储器,层次体系中的较高级别的存储器表现出更低的访问时间并具有更小的存储容量。缓存层次体系的各级别的改变由缓存一致性策略管理(例如,协调)。
每个核心902可以被称为CPU、DSP、GPU等,或任何其他类型的硬件电路系统。每个核心902包括控制单元电路系统914、算术和逻辑(arithmetic and logic,AL)电路系统(有时称为ALU)916、多个寄存器918、L1缓存920和示例总线922。可以存在其他结构。例如,每个核心902可以包括向量单元电路系统、单指令多数据(single instruction multipledata,SIMD)单元电路系统、加载/存储单元(load/store unit,LSU)电路系统、分支/跳转单元电路系统、浮点单元(floating-point unit,FPU)电路系统等。控制单元电路系统914包括基于半导体的电路,其被构造成用于控制(例如,协调)相对应的核心902内的数据移动。AL电路系统916包括被构造成用于在相对应的核心902内对数据执行一个或多个数学和/或逻辑操作的基于半导体的电路。一些示例的AL电路系统916执行基于整数的操作。在其他示例中,AL电路系统916还执行浮点操作。在另外的其他示例中,AL电路系统916可包括执行基于整数的操作的第一AL电路系统和执行浮点操作的第二AL电路系统。在一些示例中,AL电路系统916可以被称为算术逻辑单元(Arithmetic Logic Unit,ALU)。寄存器918是用于存储数据和/或指令(诸如,由对应核心902的AL电路系统916执行的操作中的一个或多个操作的结果)的基于半导体的结构。例如,寄存器918可以包括(一个或多个)向量寄存器、(一个或多个)SIMD寄存器、(一个或多个)通用寄存器、(一个或多个)标志寄存器、(一个或多个)段寄存器、(一个或多个)机器特定寄存器、(一个或多个)指令指针寄存器、(一个或多个)控制寄存器、(一个或多个)调试寄存器、(一个或多个)存储器管理寄存器、(一个或多个)机器检查寄存器等。寄存器918可按如图9所示的区块来布置。替代地,寄存器918可以按任何其他布置、格式或结构来组织,包括贯穿核心902分布以缩短访问时间。总线904可以实现I2C总线、SPI总线、PCI总线或PCIe总线中的至少一个。
每个核心902(和/或更一般地,微处理器900)可以包括上文示出和描述的那些结构的附加和/或替代结构。例如,可以存在一个或多个时钟电路、一个或多个电源、一个或多个功率门、一个或多个缓存归属地代理(cache home agents,CHA)、一个或多个聚合/公共网格站点(converged/common mesh stop,CMS)、一个或多个移位器(例如,(一个或多个)桶形移位器)和/或其他电路系统。微处理器900是被制造成包括许多经互连接的晶体管以在被包含在一个或多个封装中的一个或多个集成电路(IC)中实现上文所描述的结构的半导体器件。处理器电路系统可包括一个或多个加速器,和/或与一个或多个加速器协作。在一些示例中,加速器由逻辑电路系统来实现,从而相比于由通用处理器完成可以更快和/或更高效地执行某些任务。加速器的示例包括ASIC和FPGA,诸如,本文中所讨论的那些。GPU或其他可编程器件也可以是加速器。加速器可以板载于处理器电路系统上,与处理器电路系统在同一芯片封装中,和/或在与处理器电路系统分开的一个或多个单独的封装中。
图10是图示示例软件分发平台的框图。示例软件分发平台1005可以由能够存储软件并将软件传送到其他计算设备的任何计算机服务器、数据设施、云服务等来实现。第三方可以是拥有和/或操作软件分发平台1005的实体的客户。例如,拥有和/或操作软件分发平台1005的实体可以是软件的开发者、销售者和/或许可方。第三方可以是购买和/或许可软件以用于使用和/或转售和/或分许可的消费者、用户、零售商、OEM等。在所图示的示例中,软件分发平台1005包括一个或多个服务器和一个或多个存储设备。存储设备存储机器可读指令1030。
示例软件分发平台1005的一个或多个服务器与网络1010通信,该网络1010可以与因特网或期望网络中的任何一者或多者相对应。在一些示例中,作为商业事务的一部分,一个或多个服务器对将软件传送到请求方的请求的进行响应。可以由软件分发平台的一个或多个服务器和/或由第三方支付实体来处置针对软件的交付、销售、和/或许可的支付。服务器使购买方和/或许可方能够从软件分发平台1005将机器可读指令1030下载至处理器平台1020。在一些示例中,软件分发平台1005的一个或多个服务器周期性地提供、传送和/或强制进行软件更新以确保改善、补丁、更新等被分发并应用于终端用户设备处的软件。
以下示例关于某些实施例:
在示例1中,一种计算机可读存储介质,包括指令,该指令在被处理器执行时使处理器用于:从对象管理机构接收在存储装置处存储数据对象的版本的存储请求;生成数据对象的散列值;将数据对象存储在暂存器存储中;将对数据对象的散列值的验证请求传送至对象版本控制机构;以及,在接收到对散列值的肯定验证后,将数据对象从暂存器存储移动至介质存储,并将确收传送至对象管理机构。
在示例2中,存储请求包括数据对象、对象标识和数据对象的版本号。
在示例3中,存储介质进一步包括指令,该指令在被处理器执行时,使处理器用于:在接收到对散列值的肯定验证后,进一步使用对象标识、数据对象的版本号和散列值来更新对象版本控制缓存。
在示例4中,数据对象版本是数据对象的多个版本中的一个版本。
在示例5中,验证请求经由经认证通道被传送。
在示例6中,验证请求包括数据对象的标识、数据对象的版本号和所生成的散列值。
在示例7中,存储介质进一步包括指令,该指令在被处理器执行时,使处理器用于:在接收到对散列值的否定验证后,从暂存器存储中移除数据对象而不存储该数据对象。
在示例8中,存储介质进一步包括指令,该指令在被处理器执行时,使处理器用于:从对象管理机构接收在存储装置处存储对第二数据对象的版本的更新的存储请求;将更新存储在暂存器存储中;从存储介质拷贝第二数据对象并将第二数据对象的副本存储在暂存器存储中;对第二数据对象应用更新以生成经更新的数据对象;生成经更新的数据对象的散列值;将对经更新的数据对象的散列值的验证请求传送至对象版本控制机构;以及,在接收到对散列值的肯定验证后,将经更新的数据对象从暂存器存储移动至介质存储,并将确收传送至对象管理机构。
在示例9中,装置包括:版本控制组件,该版本控制组件用于验证一个或多个数据对象的版本;暂存器介质,该暂存器介质用于临时存储;以及对象介质,该对象介质用于存储一个或多个数据对象,其中该装置用于:从对象管理机构接收在该装置处存储数据对象的版本的存储请求;生成数据对象的散列值;将数据对象存储在暂存器存储中;将对数据对象的散列值的验证请求传送至对象版本控制机构;以及,在接收到对散列值的肯定验证后,将数据对象从暂存器存储移动至介质存储,并将确收传送至对象管理机构。
在示例10中,存储请求包括数据对象、对象标识和数据对象的版本号。
在示例11中,该装置进一步包括对象版本控制缓存,其中该装置进一步用于:在接收到对散列值的肯定验证后,进一步使用对象标识、数据对象的版本号和散列值来更新对象版本控制缓存。
在示例12中,数据对象版本是数据对象的多个版本中的一个版本。
在示例13中,验证请求经由经认证通道被传送。
在示例14中,验证请求包括数据对象的标识、数据对象的版本号和所生成的散列值。
在示例15中,该装置进一步用于,在接收到对散列值的否定验证后,从暂存器存储移除数据对象而不存储该数据对象。
在示例16中,该装置进一步用于:从对象管理机构接收在该装置处存储对第二数据对象的版本的更新的存储请求;将更新存储在暂存器存储中;从存储介质拷贝第二数据对象并将第二数据对象的副本存储在暂存器存储中;对第二数据对象应用更新以生成经更新的数据对象;生成经更新的数据对象的散列值;将对经更新的数据对象的散列值的验证请求传送至对象版本控制机构;以及,在接收到对散列值的肯定验证后,将经更新的数据对象从暂存器存储移动至介质存储,并将确收传送至对象管理机构。
在示例17中,该方法进一步包括:从对象管理机构接收在存储装置处存储数据对象的版本的存储请求;生成数据对象的散列值;将数据对象存储在暂存器存储中;将对数据对象的散列值的验证请求传送至对象版本控制机构,该验证请求包括数据对象的标识、数据对象的版本号和所生成的散列值;在接收到散列值的肯定验证后,将数据对象从暂存器存储移动至介质存储,并将确收传送至对象管理机构;并且,在接收到对散列值的否定验证后,从暂存器存储移除数据对象而不存储该数据对象。
在示例18中,存储请求包括数据对象、对象标识和数据对象的版本号。
在示例19中,该方法进一步包括,在接收到对散列值的肯定验证后,进一步使用对象标识、数据对象的版本号和散列值来更新对象版本控制缓存。
在示例20中,验证请求经由经认证通道被传送。
在示例21中,该方法进一步包括:从对象管理机构接收在存储装置处存储对第二数据对象的版本的更新的存储请求;将更新存储在暂存器存储中;从存储介质拷贝第二数据对象并将第二数据对象的副本存储在暂存器存储中;对第二数据对象应用更新以生成经更新的数据对象;生成经更新的数据对象的散列值;将对经更新的数据对象的散列值的验证请求传送至对象版本控制机构;以及,在接收到对散列值的肯定验证后,将经更新的数据对象从暂存器存储移动至介质存储,并将确收传送至对象管理机构。
在示例22中,一种设备包括:用于从对象管理机构接收在存储装置处存储数据对象的版本的存储请求的装置;用于生成数据对象的散列值的装置;用于将数据对象存储在暂存器存储中的装置;用于将对数据对象的散列值的验证请求传送至对象版本控制机构的装置;以及用于在接收到对散列值的肯定验证后,将数据对象从暂存器存储移动至介质存储,并将确收传送至对象管理机构的装置。
在示例23中,存储请求包括数据对象、对象标识和数据对象的版本号。
在示例24中,该设备进一步包括用于在接收到对散列值的肯定验证后,使用对象标识、数据对象的版本号和散列值来更新对象版本控制缓存的装置。
在示例25中,数据对象版本是数据对象的多个版本中的一个版本。
在示例26中,验证请求经由经认证通道被传送。
在示例27中,验证请求包括数据对象的标识、数据对象的版本号和所生成的散列值。
在示例28中,该设备进一步包括在接收到对散列值的否定验证后,从暂存器存储移除数据对象而不存储该数据对象的装置。
在示例29中,该设备进一步包括:用于从对象管理机构接收在存储装置处存储对第二数据对象的版本的更新的存储请求的装置;用于将更新存储在暂存器存储中的装置;用于从存储介质拷贝第二数据对象并将第二数据对象的副本存储在暂存器存储中的装置;用于对第二数据对象应用更新以生成经更新的数据对象的装置;用于生成经更新的数据对象的散列值的装置;用于将对经更新的数据对象的散列值的验证请求传送至对象版本控制机构的装置;以及用于在接收到对散列值的肯定验证后,将经更新的数据对象从暂存器存储移动至介质存储,并将确收传送至对象管理机构的装置。
在上面的描述中,出于解释的目的,阐述了众多具体细节以提供对所描述实施例的全面理解。然而,对本领域技术人员将显而易见的是,可以在没有这些具体细节中的一些细节的情况下实施实施例。在其他情况下,以框图形式示出了公知的结构和设备。在所示出的部件之间可存在中间结构。此处所描述的或所图示的部件可以具有未图示或描述的附加的输入或输出。
各实施例可包括各种过程。这些过程可由硬件部件来执行,或者可被具体化为计算机程序或机器可执行指令,该指令可用于使利用该指令编程的通用或专用处理器或逻辑电路执行这些过程。或者,这些过程也可由硬件和软件的组合来执行。
各实施例的多个部分可以作为计算机程序产品来提供,该计算机程序产品可以包括其上存储有计算机程序指令的计算机可读介质,该指令可用于对计算机(或其他电子设备)进行编程以便由一个或多个处理器执行以执行根据某些实施例的过程。计算机可读介质可包括但不限于磁盘、光盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、可擦除可编程只读存储器(erasable programmable read-only memory,EPROM)、电可擦除可编程只读存储器(electrically-erasableprogrammable read-only memory,EEPROM)、磁卡或光卡、闪存存储器、或适于存储电子指令的其他类型的计算机可读介质。此外,实施例还可以作为计算机程序产品下载,其中,程序可以从远程计算机传递到请求计算机。
方法中的许多方法是以它们的最基本形式描述的,但是可将过程添加到方法中的任一方法中或从方法中的任一方法删除过程,并且可以向所描述的消息中的任何一个添加信息或从所描述的消息中的任何一个减去信息,而不背离当前实施例的基本范围。对本领域的技术人员而言将显而易见的是,可以作出许多进一步的修改和改编。特定实施例不是被提供用于限制概念而是用于说明概念。实施例的范围不是由以上所提供的具体示例来确定,而仅由所附权利要求确定。
如果说要素“A”耦合至或耦合于要素“B”,则要素A可直接耦合至要素B或例如通过要素C间接耦合。当说明书或权利要求书陈述部件、特征、结构、过程或特性A“致使”部件、特征、结构、过程或特性B时,这意味着“A”是“B”的至少部分成因,但也可以有辅助致使“B”的至少一个其他部件、特征、结构、过程或特性。如果说明书指示“可”、“可以”或“可能”包括部件、特征、结构、过程或特性,则不要求包括该特定部件、特征、结构、过程或特性。如果说明书或权利要求书提到“一”或“一个”要素,则这不意味着仅存在一个所描述要素。
实施例是实现方式或示例。说明书中对“实施例”、“一个实施例”、“一些实施例”、或“其他实施例”的引用意味着结合实施例所描述的特定特征、结构或特性被包括在至少一些实施例中,但不一定被包括在所有实施例中。“实施例”、“一个实施例”、或“一些实施例”的各种出现并不一定都指代相同的实施例。应该理解,在对示例性实施例的以上描述中,出于使本公开变得流畅并辅助理解各新颖方面中的一个或多个方面的目的,各个特征有时被一起编组在单个实施例、附图、或其描述中。然而,这种公开方法不应被解释成反映所要求保护的实施例要求比每项权利要求中所明确记载的更多特征的意图。相反,如所附权利要求所反映,新颖性方面存在于比单个前述公开的实施例的所有特征更少的特征中。因此,权利要求由此被明确纳入该说明书中,其中每一项权利要求独自作为单独的实施例。
前述说明书和附图应以说明性意义而非限制性意义来看待。本领域技术人员将理解,可对本文中描述的实施例作出各种修改和改变,而不背离如所附权利要求所述的特征的更宽泛的精神和范围。
Claims (21)
1.一种计算机可读存储介质,包括指令,所述指令在被处理器执行时使所述处理器用于:
从对象管理机构接收在存储装置处存储数据对象的版本的存储请求;
生成所述数据对象的散列值;
将所述数据对象存储在暂存器存储中;
将对所述数据对象的所述散列值的验证请求传送至对象版本控制机构;以及
在接收到对所述散列值的肯定验证后,将所述数据对象从所述暂存器存储移动至介质存储,并将确收传送至所述对象管理机构。
2.如权利要求1所述的计算机可读存储介质,其特征在于,所述存储请求包括所述数据对象、对象标识和所述数据对象的版本号。
3.如权利要求2所述的计算机可读存储介质,进一步包括指令,所述指令在被所述处理器执行时使所述处理器用于:
在接收到对所述散列值的所述肯定验证后,进一步使用所述对象标识、所述数据对象的所述版本号和所述散列值来更新对象版本控制缓存。
4.如权利要求2所述的计算机可读存储介质,其特征在于,所述数据对象的所述版本是所述数据对象的多个版本中的一个版本。
5.如权利要求1所述的计算机可读存储介质,其特征在于,所述验证请求经由经认证通道被传送。
6.如权利要求1所述的计算机可读存储介质,其特征在于,所述验证请求包括所述数据对象的标识、所述数据对象的版本号和所生成的散列值。
7.如权利要求1所述的计算机可读存储介质,进一步包括指令,所述指令在被所述处理器执行时使所述处理器用于:
在接收到对所述散列值的否定验证后,从所述暂存器存储移除所述数据对象而不存储所述数据对象。
8.如权利要求1所述的计算机可读存储介质,进一步包括指令,所述指令在被所述处理器执行时使所述处理器用于:
从所述对象管理机构接收在所述存储装置处存储对第二数据对象的版本的更新的存储请求;
将所述更新存储在所述暂存器存储中;
从所述存储介质拷贝所述第二数据对象并将所述第二数据对象的副本存储在所述暂存器存储中;
对所述第二数据对象应用所述更新以生成经更新的数据对象;
生成所述经更新的数据对象的散列值;
将对所述经更新的数据对象的所述散列值的验证请求传送至所述对象版本控制机构;以及
在接收到对所述散列值的肯定验证后,将所述经更新的数据对象从所述暂存器存储移动至介质存储,并将确收传送至所述对象管理机构。
9.一种装置,包括:
版本控制组件,所述版本控制组件用于验证一个或多个数据对象的版本;
暂存器介质,所述暂存器介质用于临时存储;以及
对象介质,所述对象介质用于存储一个或多个数据对象,其中所述装置用于:
从对象管理机构接收在所述装置处存储数据对象的版本的存储请求;
生成所述数据对象的散列值;
将所述数据对象存储在所述暂存器存储中;
将对所述数据对象的所述散列值的验证请求传送至对象版本控制机构;以及
在接收到对所述散列值的肯定验证后,将所述数据对象从所述暂存器存储移动至所述介质存储,并将确收传送至所述对象管理机构。
10.如权利要求9所述的装置,其特征在于,所述存储请求包括所述数据对象、对象标识和所述数据对象的版本号。
11.如权利要求10所述的装置,进一步包括对象版本控制缓存,其中所述装置进一步用于:
在接收到对所述散列值的所述肯定验证后,进一步使用所述对象标识、所述数据对象的所述版本号和所述散列值来更新所述对象版本控制缓存。
12.如权利要求10所述的装置,其特征在于,所述数据对象的所述版本是所述数据对象的多个版本中的一个版本。
13.如权利要求9所述的装置,其特征在于,所述验证请求经由经认证通道被传送。
14.如权利要求9所述的装置,其特征在于,所述验证请求包括所述数据对象的标识、所述数据对象的版本号和所生成的散列值。
15.如权利要求9所述的装置,其中,所述装置进一步用于:
在接收到所述散列值的否定验证后,从所述暂存器存储移除所述数据对象而不存储所述数据对象。
16.如权利要求9所述的装置,其中,所述装置进一步用于:
从所述对象管理机构接收在所述装置处存储对第二数据对象的版本的更新的存储请求;
将所述更新存储在所述暂存器存储中;
从所述存储介质拷贝所述第二数据对象并将所述第二数据对象的副本存储在所述暂存器存储中;
对所述第二数据对象应用所述更新以生成经更新的数据对象;
生成所述经更新的数据对象的散列值;
将对所述经更新的数据对象的所述散列值的验证请求传送至所述对象版本控制机构;以及
在接收到对所述散列值的肯定验证后,将所述经更新的数据对象从所述暂存器存储移动至介质存储,并将确收传送至所述对象管理机构。
17.一种方法,包括:
从对象管理机构接收在存储装置处存储数据对象的版本的存储请求;
生成所述数据对象的散列值;
将所述数据对象存储在暂存器存储中;
将对所述数据对象的所述散列值的验证请求传送至对象版本控制机构,所述验证请求包括所述数据对象的标识、所述数据对象的版本号和所生成的散列值;
在接收到所述散列值的肯定验证后,将所述数据对象从所述暂存器存储移动至介质存储,并将确收传送至所述对象管理机构;以及
在接收到对所述散列值的否定验证后,从所述暂存器存储移除所述数据对象而不存储所述数据对象。
18.如权利要求17所述的方法,其特征在于,所述存储请求包括所述数据对象、对象标识和所述数据对象的版本号。
19.如权利要求18所述的方法,进一步包括:
在接收到对所述散列值的所述肯定验证后,进一步使用所述对象标识、所述数据对象的所述版本号和所述散列值来更新对象版本控制缓存。
20.如权利要求19所述的方法,其特征在于,所述验证请求经由经认证通道被传送。
21.如权利要求17所述的方法,进一步包括:
从所述对象管理机构接收在所述存储装置处存储对第二数据对象的版本的更新的存储请求;
将所述更新存储在所述暂存器存储中;
从所述存储介质拷贝所述第二数据对象并将所述第二数据对象的副本存储在所述暂存器存储中;
对所述第二数据对象应用所述更新以生成经更新的数据对象;
生成所述经更新的数据对象的散列值;
将对所述经更新的数据对象的所述散列值的验证请求传送至所述对象版本控制机构;以及
在接收到对所述散列值的肯定验证后,将所述经更新的数据对象从所述暂存器存储移动至介质存储,并将确收传送至所述对象管理机构。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/546,033 US20220100498A1 (en) | 2021-12-08 | 2021-12-08 | Implementation of object versioning and consistency at scale |
US17/546,033 | 2021-12-08 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116243959A true CN116243959A (zh) | 2023-06-09 |
Family
ID=80822535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211374610.9A Pending CN116243959A (zh) | 2021-12-08 | 2022-11-02 | 大规模对象版本控制和一致性的实现方式 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220100498A1 (zh) |
CN (1) | CN116243959A (zh) |
DE (1) | DE102022129468A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11593015B2 (en) * | 2021-04-06 | 2023-02-28 | EMC IP Holding Company LLC | Method to enhance the data invulnerability architecture of deduplication systems by optimally doing read-verify and fix of data moved to cloud tier |
US20230229435A1 (en) * | 2022-01-20 | 2023-07-20 | Salesforce.Com, Inc. | Code management cross-support and synchronization |
CN115145942B (zh) * | 2022-09-05 | 2023-01-17 | 北京奥星贝斯科技有限公司 | 一种分布式数据库系统及其单调读的实现方法、装置 |
-
2021
- 2021-12-08 US US17/546,033 patent/US20220100498A1/en active Pending
-
2022
- 2022-11-02 CN CN202211374610.9A patent/CN116243959A/zh active Pending
- 2022-11-08 DE DE102022129468.4A patent/DE102022129468A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220100498A1 (en) | 2022-03-31 |
DE102022129468A1 (de) | 2023-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10210170B2 (en) | Chunk storage deduplication using graph structures | |
CN105431827B (zh) | 针对异构多处理器系统中的共享存储区域的动态地址协商 | |
CN109791471B (zh) | 虚拟化外围装置处的非易失性存储装置 | |
US20220100498A1 (en) | Implementation of object versioning and consistency at scale | |
US8572614B2 (en) | Processing workloads using a processor hierarchy system | |
CN110874739A (zh) | 实现高完整性、高带宽、低延迟、安全处理的分布式计算和存储网络 | |
CN103582879B (zh) | 管理耦合设施中的操作员消息缓冲器 | |
US20220044316A1 (en) | Blockchain implemented transfer of multi-asset digital wallets | |
US11637868B2 (en) | Attestation support for elastic cloud computing environments | |
US11163625B2 (en) | Optimizing logging of decision outcomes in distributed transactions | |
US20220156725A1 (en) | Cross-chain settlement mechanism | |
US11768941B2 (en) | Non-ROM based IP firmware verification downloaded by host software | |
EP4109275A1 (en) | Methods and apparatus to transmit central processing unit performance information to an operating system | |
US10621163B2 (en) | Tracking and reusing function results | |
US20220113978A1 (en) | Methods and apparatus to conditionally activate a big core in a computing system | |
CN116318648A (zh) | 用于导出和验证虚拟物理不可克隆密钥的方法和装置 | |
US20220311595A1 (en) | Reducing transaction aborts in execute-order-validate blockchain models | |
Li | Modernization of databases in the cloud era: Building databases that run like Legos | |
US20240106900A1 (en) | Methods and apparatus to add a non-native node to a cluster | |
US12007981B2 (en) | Blockchain selective world state database | |
US20240168787A1 (en) | Secure live migration of trusted execution environment virtual machines using smart contracts | |
US20240169094A1 (en) | Mitigating private data leakage in a federated learning system | |
US20220171763A1 (en) | Blockchain selective world state database | |
US20230100051A1 (en) | Methods and apparatus to service workloads locally at a computing device | |
US20230393881A1 (en) | Autonomous clusters in a virtualization computing environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |