CN107408070B - 分布式存储系统中的多事务日志 - Google Patents
分布式存储系统中的多事务日志 Download PDFInfo
- Publication number
- CN107408070B CN107408070B CN201580067452.4A CN201580067452A CN107408070B CN 107408070 B CN107408070 B CN 107408070B CN 201580067452 A CN201580067452 A CN 201580067452A CN 107408070 B CN107408070 B CN 107408070B
- Authority
- CN
- China
- Prior art keywords
- log
- request
- stream
- performance
- transaction
- 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.)
- Active
Links
- 238000005192 partition Methods 0.000 claims abstract description 119
- 238000000034 method Methods 0.000 claims abstract description 37
- 238000012545 processing Methods 0.000 claims abstract description 35
- 230000015654 memory Effects 0.000 claims description 26
- 238000002955 isolation Methods 0.000 claims description 17
- 230000002085 persistent effect Effects 0.000 claims description 14
- 238000012790 confirmation Methods 0.000 claims description 13
- 238000011084 recovery Methods 0.000 claims description 5
- 238000013507 mapping Methods 0.000 claims description 4
- 238000007789 sealing Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 230000001934 delay Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 230000003044 adaptive effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 238000013468 resource allocation Methods 0.000 description 2
- 239000000523 sample Substances 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 230000000246 remedial effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3485—Performance evaluation by tracing or monitoring for I/O devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3433—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures 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/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/87—Monitoring of transactions
Abstract
在各种实施例中,提供了用于在分布式存储系统中实现多事务日志的方法和系统。日志流部件检测多个日志流的性能度量。性能度量与来自分布式存储系统中的分区的请求相关联。事务部件接收利用日志流执行事务的请求。所述请求接收自分布式存储系统的分区。可以参考多个日志流的性能度量,其中性能度量表示所选日志流用于处理请求的性能容量。基于性能容量确定用于执行事务的日志流。所选日志流还可以将请求的请求属性作为一个因数。事务部件传送要执行的请求,从而使用日志流来执行事务。
Description
背景技术
分布式存储系统可以支持从社交网络到管理医疗记录的若干类型的应用。尤其可以通过用户文件、结构化存储、以及消息传送来实现分布式存储系统,以便支持应用的存储和工作流。特别地,分布式存储系统可以配置为接收请求来执行便于应用的存储和工作流的事务。这样,分布式存储系统处理高容量事务的能力对于分布式存储系统的整体性能可能是很关键的。
发明内容
提供该“发明内容”是为了以简化形式介绍在下文具体实施方式中进一步描述的概念的精华。该发明内容并不旨在标识所要求保护技术方案的关键特征或必要特征,也不旨在独立地用作帮助确定所要求保护技术方案的范围。
本文描述的实施例指向用于在分布式存储系统中实现多事务日志的方法、系统和计算机存储介质。日志流部件检测多个日志流的性能度量。性能度量与来自分布式存储系统中的分区的请求相关联。事务部件接收请求来利用日志流执行事务。请求接收自分布式存储系统的分区。可以参考多个日志流的性能度量,其中性能度量表示所选日志流处理请求的性能容量。基于性能容量确定用于执行事务的日志流。还可以基于请求的请求属性来确定日志流。事务部件利用日志流传送待执行的请求以执行事务。
附图说明
下文将参考附图详细描述本发明,在附图中:
图1是可以采用本文描述的实施例的示例性分布式存储系统的框图;
图2是可以采用本文描述的实施例的示例性分布式存储系统的框图;
图3是根据本文描述的实施例用于在分布式存储系统中实现多日志流的示例性操作环境;
图4是根据本文描述的实施例在分布式存储系统中用于实现多日志流的示例性操作环境;
图5是示出根据本文描述的实施例用于在分布式存储系统中实现多日志流的示例性方法的流程图;
图6是示出根据本文描述的实施例用于在分布式存储系统中实现多日志流的示例性方法的流程图;以及
图7是适于实现本文描述的实施例的示例性计算环境的框图。
具体实施方式
在此具体地描述本发明的实施例的技术方案以满足法定要求。然而,描述本身不旨在限制本专利的范围。而是,发明人已经想到所要求保护的技术方案还可以以其它方式具体体现,结合其它当前或将来的技术,包括不同的步骤或与在本文档中描述的步骤类似的步骤的组合。此外,虽然术语“步骤”和/或“框”在此可以用于意味着所采用方法的不同元素,但是术语不应该被解释为暗示在本文公开的各种步骤当中或之间的任何特定的次序,除非明确描述了个体步骤的次序。
出于本公开的目的,词语“包括”具有与词语“包含”同样广泛的含义。另外,诸如“一”和“一个”的词语,除非另有相反表示,否则包括复数和单数。因此,例如,在存在一个或多个特征的情况下满足“一特征”的要求。另外,术语“或者”包括连词、反意连词以及两者(a或b因此包括a或b以及a和b)。
出于下文详细讨论的目的,参考云计算平台支持的存储服务描述实施例,并例如进一步地,云计算平台具有前端层、分隔层和流层。然而,本文描述的方法可以在不同类型的操作环境中执行,其具有本文描述的功能部件的替代配置。这样,本文描述的实施例仅是示例性的,并可以料想到所述技术可以扩展到其它实现上下文。
分布式存储系统可以实现为云计算平台,其跨不同数据中心和地理区域运行云服务。云计算平台可以实现结构控制器部件,用于提供和管理云服务的资源分配、部署/更新、以及管理。通常,云计算系统用于以分布式方式存储数据或运行服务应用。云计算系统的服务应用部件(例如,租户基础设施或租期)可以包括被分配为运行租户的服务应用的一个或多个部分的节点(例如,计算设备、处理单元、或服务器机架中的刀片)。
当节点支持多于一个单独的服务应用时,节点可以被划分为虚拟机或物理机,虚拟机或物理机在支持特定于每个服务应用的资源和/或操作系统的个性化计算环境中同时地分别运行单独的服务应用。此外,每个服务应用可以被划分为功能部分,从而每个功能部分能够运行于单独的虚拟机中。在云计算系统中,多个服务器可以用于运行服务应用,并在集群中执行数据存储操作。特别地,服务器可以独立地执行数据操作,但是被暴露为称作群集的单个设备。在群集中的每个服务器可以被称作节点。
在云计算平台上的存储服务可以是利用结构控制器部件支持的服务。存储服务可以负责跨盘管理复制和数据布置,并通过存储群集对数据和应用业务进行负载平衡。存储服务可以负责管理对高容量存储设备的存取。存储服务可以将存储戳(storage stamp)实现为N架存储节点的群集以及管理存储戳的位置服务。具体地,位置服务可以分配位置戳,并跨存储戳管理它们以进行灾难恢复和负载平衡。
参考图1,在支持存储服务的云计算平台120中的存储戳的架构100可以包括前端(FE)层122、分区层124、以及流层126(或分布式文件系统层)。FE层122可以配置为从应用110或客户端接收输入的请求。在接收到请求时,FE 122可以认证和授权请求。FE 122可以将请求路由到分区层中的分区服务器。在实施例中,FE 122维持分区图,其跟踪分区名称范围以及哪个分区服务器服务于哪些分区名称。
分区层124负责管理和理解用户文件、结构化存储和消息传送的高级别抽象。分区层124还提供对象的可扩展索引、事务排序、以及存储一致性。分区层124可以特别地支持在流层126的顶部上存储对象数据。在实施例中,分区层在存储戳内划分数据对象。
流层126在盘上存储位,并支持跨多个服务器复制数据以保持数据在存储戳内耐用。流层126支持称作流的文件,其是被称作区(extent)的大型存储块的有序列表。流层存储并复制区。可从分区层124访问存储在流层中的数据。流层126可以提供文件系统命名空间和应用程序接口(API)用于分区层124以执行写入。写入可以是只能附加的。在流层126和分区层124之间的接口允许客户端打开、关闭、删除、重命名、附加和并置流。流可以指代区点(extent point)的有序列表,并且区是随附块的序列。区可以是密封区,从而区可以不再被附加。应用从区读取数据来存取区中的块内容。
流层126可以包括流管理器(未示出)和区节点(未示出)。流管理器负责跟踪流命名空间、在每个流中存在哪些区以及跨区节点的区分配。流管理器执行由于硬件故障或不可用而丢失的区副本的惰性再复制。每个区节点维持由流管理器分配给对应区的一组副本的存储。每个区节点包含关于其拥有的区以及对给定区对等副本在何处的视图。
对执行本文描述的实施例的分布式存储系统的适当架构的讨论还在2008年10月24日提交的、题目为“SCALABLE BLOB STORAGE INTEGRATED WITH SCALABLE STRUCTUREDSTORAGE”的美国专利No.8,620,884中以及Calder,Brad等人的“Windows Azure Storage,AHighly Available Cloud Storage Service with Strong Consistency”SOSP’11Proceedings of the Twenty-third ACM symposium on Operating SystemsPrinciples,2011:Pages 143-157.Print.中描述。
分布式存储系统可以支持从社交网络到管理医疗记录的若干不同类型的应用。尤其可以通过用户文件、结构化存储、以及消息传送来实现分布式存储系统,以便支持应用的存储和工作流。特别地,分布式存储系统可以配置为接收便于应用的存储和工作流的事务。分布式存储系统可以实现基于事务的日志系统,其中基于输入的请求执行事务。事务可以被提交到存储器中,并在将事务提交到存储器中之后,将事务提交到磁盘中。然后将成功的确认传送给客户端。传统上,磁盘上存储可以基于单个日志流系统,在将高容量事务附加到存储设备时具有延迟和吞吐量问题。单纯地多次记录执行的事务以及多次向磁盘写入事务简直是消耗分布式存储系统中的额外资源。此外,随着基于闪存的存储系统的可用性的增长,在高容量存储系统中对待执行的请求和事务的一致的延迟的期望也增长了。这样,分布式存储系统以智能方式处理高容量事务的能力对分布式存储系统的整体性能可能是关键的。
本文描述的实施例提供通过多事务日志实现分布式存储系统的简单且高效的方法和系统。在高级别,本文描述的实施例实现多事务日志来提供更高的聚合带宽。更高的聚合带宽产生增加的事务吞吐量和一致性延迟。可以通过跨不同的事务日志复用写入请求来实现增加的吞吐量。可以通过将写入请求发布到不同事务日志流并在第一成功确认返回时就提交事务来实现一致性延迟。
本文描述的实施例还基于请求属性(例如,有效负荷大小和优先级)提供性能隔离。另外,可以动态地调整日志流的数目以适应于业务需求和基本的系统负荷条件,并获得系统资源的优化使用。可以想到的是,实施例还可以支持适应性重试机构,以提供一致性延迟和容忍高延迟。延迟可以由若干不同因素引起。例如,存储设备的操作特性(例如,密封区)可能在针对存储服务的写入请求期间引起延迟和不一致性。对此,可以通过多个事务日志实现适应性重试机构。
多日志流系统可以构建在分布式存储系统架构及其操作属性的耐用层的顶部。例如,流层支持耐用节点以及故障和恢复机构。多事务日志流可以用于在失效转移期间进行故障恢复。通过例子,如果支持输入请求的分区服务器崩溃,从崩溃中恢复可以基于重放来自多个日志流的提交的事务。本文描述的实施例改善了重放速度,原因在于提交的事务是利用增加量的读取带宽并行地从多事务日志流读取的,这提供了更好的性能。
因此,在本文描述的第一实施例中,提供了在分布式存储系统中实现多日志流的系统。该系统包括流部件,其配置为:检测多个日志流的性能度量,其中性能度量基于处理来自分布式存储系统中的分区的请求;以及传送多个日志流的性能度量。系统还包括事务部件,其配置为:接收利用分布式存储系统的日志流来执行事务的请求,其中从分布式存储系统的分区处接收所述请求;确定是否利用以下中的一个或多个识别日志流:性能容量方案和请求属性方案。
利用性能容量方案识别日志流包括:访问多个日志流的性能度量,其中性能度量表示所选日志流的处理请求的性能容量;以及基于性能容量选择日志流。利用请求属性方案识别日志流包括:访问请求的请求属性,其中请求属性表示用于处理请求的性能隔离特性;以及基于所述性能隔离特性选择日志流。流部件还配置为:传送将利用基于性能容量识别出的日志流被执行的请求;以及传送将利用基于性能隔离特性识别出的日志流被执行的请求。
在本文描述的第二实施例中,提供了其上体现有计算机可执行指令的一种或多种计算机存储介质,当被一个或多个处理器执行时,所述指令使得一个或多个处理器执行在分布式存储系统中实现多日志流的方法。所述方法包括接收利用分布式存储系统的日志流执行事务的请求。从分布式存储系统的分区处接收所述请求。所述方法还包括:参考多个日志流的性能度量。性能度量表示所选日志流处理请求的性能容量。所述方法还包括:至少部分地基于性能容量确定用于处理请求的日志流。所述方法包括:利用基于性能容量识别出的日志流执行所述请求来执行事务。
在本文描述的第三实施例中,提供了用于在分布式存储系统中实现多日志流的计算机实现方法。所述方法包括:接收利用分布式存储系统的日志流执行事务的请求。从分布式存储系统的分区处接收所述请求。所述方法包括:确定两个或更多个用于处理的日志流。所述两个或更多日志流被选择用于执行多写入操作。所述方法包括:针对请求执行第一写入操作。所述方法还包括:在阈值等待时间到期时,针对请求执行第二写入。所述方法还包括:在从第一写入操作或第二写入操作接收到请求的事务执行的确认时,将确认传送到客户端。
现在参考图2,图2示出了可以采用本公开的实现方式的示例性系统。特别地,图2示出了根据本公开的实现方式的云计算系统200的高级架构。应该理解的是,这里描述的这个和其它布置都仅被阐述为例子。其它布置和元件(例如,机器、接口、功能、命令、以及功能组等)可以在图示那些之外或替代其进行使用,并且一些元件可以一起省略。此外,本文描述的许多元件是功能实体,其可以实现为分立的或分布式的部件或者与其它部件结合,以及在任何适当的组合和位置中。本文描述为由一个或多个实体执行的各种功能可以由硬件、固件和/或软件执行。例如,可以通过执行存储于存储器内的指令的处理器执行各种功能。
除了未示出的其它部件,云计算系统200包括主机202(例如,分区主机202)、服务器204、206、208和210(例如,分区服务器204、206、208和210)和客户端212(例如,分区客户端212)。每个都可以驻留在任意类型的计算设备上,其可以对应于例如参考图1描述的计算设备100。云计算系统200的部件可以通过网络彼此通信,其可以包括但不限于一个或多个局域网(LAN)和/或广域网(WAN)。虽然在图2中示出了单个主机、四个服务器和单个客户端,但是在本公开的实现方式的范围中,在云计算系统200中可以采用任意数量的主机、服务器和客户端。
在多个分区中划分可扩展存储设备200的存储数据。例如,可扩展存储设备200可以包括在多个分区当中被划分的关键空间。主机202配置为将分区分配给服务器204、206、208和210和/或未示出的云计算系统200的其它服务器。主机202还可以配置为确定何时这些分区中的分区由于故障而不被任何服务器托管以及将该分区重新分配给不同服务器。主机202还配置为控制分区在服务器204、206、208和210和/或未示出的云计算系统200的其它服务器上的负载平衡。另外,主机202配置为相对任意的分区和/或服务器204、206、208和210和/或未示出的云计算系统200的其它服务器监视资源。还构想出,主机202配置为根据本发明的实施例支持集成资源分配和负载平衡,如在下文更详细讨论的。
在云计算系统200中,服务器(例如,服务器204、206、208和210)用于存储并提供对存储系统(例如,存储系统)的访问。主机202配置为管理服务器。此外,客户端212配置为向应用(例如,应用216)提供对存储系统的访问。云计算系统200的每个服务器(例如,服务器204、206、208和210)可以负责向分配给该服务器的零个到许多个分区提供读取和写入访问。此外,可以给每个分区分配单个的服务器。在图2所示的例子中,服务器204是托管分区P1和P4,服务器206是托管分区P2和P7,服务器208是托管分区P3,以及服务器210是托管分区P5和P6。
客户端212链接到应用中,例如应用216。在一些实现方式中,客户端212配置为向由服务器204、206、208和210和/或云计算系统200的其它服务器托管的一些分区(例如,分区P1、P2、P3、P4、P5、P6和P7)发布命令。另外在一些实现方式中,客户端212可以间接地与应用通信,例如通过虚拟IP和软件负载平衡器或将通信请求引导到前端的其它单元。前端可以利用分区地图(例如,分区地图218)来确定哪个服务器托管(映射到)哪个分区,并可以发送命令到这些服务器。可以从服务器处接收回命令的结果,并可以将命令的结果传递给应用。分区地图存储分区和它们被分配到的服务器之间的映射,并通常可以由主机(例如,主机202)维护。
在描述了云计算系统200的各种方面之后,注意可以采用任意数量的部件来实现本公开范围内的期望功能。虽然为了清楚起见用线条示出了图2的各种部件,但是事实上,描绘各种部件不是如此清楚的,并且隐喻地,所述线条更准确地是灰色的或模糊的。此外,虽然图2的一些部件被描绘为单个部件,但是所述描绘在本质上以及在数量上是示例性的,并不被解释为限制本公开的所有实现方式。
现在转向图3,提供了描绘适于在实现本文描述的实施例时使用的操作环境中的多事务日志分布式存储系统300(多事务日志系统)。一般而言,多事务日志系统300至少可以用于利用基于性能容量从多个日志流智能选择的日志流来处理传送给云计算平台中的存储服务的请求。
除了未示出的其它部件,多事务日志系统300一般可以包括应用310、分区层320、以及流层330。流层330还包括流部件340、事务部件350、流管理器360和日志流370。在一些实施例中,一个或多个图示部件和/或模块可以被实现为独立的应用。在其它实施例中,一个或多个图示部件和/或模块可以经由计算设备被实现为基于互联网的服务和/或被实现为云计算平台内的模块。本领域普通技术人员可以理解的是,在图3所示的部件和模块本质上以及数量上是示例性的,且不应该被解释为是限制性的。
可以采用任意数量的部件和/或模块来实现本文描述的功能。例如,在实施例的范围内,可以在多事务日志系统100内采用任意数量的分区层和流层、以及云计算平台及其部件和网络。每个可以包括在开发环境系统100中协作的单个设备/接口或多个设备/接口。例如,在分布式环境中布置的多个设备和/或模块可以统一地提供本文描述的服务器部件。
应该理解的是,本文描述的这个和其它布置仅是作为例子进行阐述。其它布置和元件(例如,机器、接口、功能、命令和/或功能组)可以在图示那些之外或替代其进行使用,并且一些元件可以一起省略。此外,本文描述的许多元件是功能实体,其可以实现为分立的或分布式的部件或者与其它部件结合,以及在任何适当的组合和位置中。本文描述为由一个或多个实体执行的各种功能可以由硬件、固件和/或软件执行。例如,可以通过执行存储于存储器内的指令的处理器执行各种功能,包括下文相对多事务日志系统300描述的功能。
继续参考图3,在数据流期间,分区层320负责处理输入的事务。传统上,分区层320为不同类型的输入事务支持单个事务日志流。分区层320使用事务日志来留存针对给定分区的输入事务。为了确保耐用性,必须在提交事务之前将所有记录留存在磁盘中。由于事务必须在提交时清除日志,所以事务日志的带宽可能限制最大事务吞吐量。此外,延迟的一致性对可靠性能也是关键的。这样,多日志流系统的实现改善了吞吐量和一致性延迟。
流层330负责支持提供多日志流系统的功能的部件。流层是在存储器和其它持久存储设备中提交事务的分区层之下的层。持久存储设备可以包括磁盘存储设备或基于闪存的存储设备。流层有利地定位为跟踪日志流的性能度量并确定用于目标特定请求的日志流。为了清楚起见在本文将流层的功能呈现为计算部件,而并不意味着是限制性的。
流层330可以支持区的附加操作和密封。附加操作可以是原子的,就是说,整个数据块被附加或没有。区可以具有目标大小,并且当填满所述大小时,在块边界密封区,然后将新的区添加到流并继续附加到新的区。密封的区是不能变的。
在实施例中,当创建流时,流管理器360给三个区节点分配第一区的三个副本(一个主要的382和两个次要的384和386)。具体地,可以选择副本以随机地跨不同的故障域和升级域传播副本。流管理器360决定哪个副本是主要区。可以对主要EN 382执行来自应用310的针对区的写入,主要EN 382负责协调针对两个次要EN(384和386)的写入。由于附加在副本上是按序提交的,所以将最后的附加位置看作是副本的当前提交长度。
流管理器360协调EN之间的密封操作。流管理器360基于区副本的提交长度确定区的提交长度以用于密封。一旦密封完成,提交长度就不再改变。为了密封区,流管理器360可以询问所有三个EN其当前长度。在密封期间,所有的副本可以具有相同的长度,这是简单情况;或者给定的副本比另一个副本长或短,这在附加失败期间可能发生。在后一情况中,流管理器360能够采取补救措施来以最小的提交长度密封区,而不丢失数据。
流部件340负责管理与多事务日志系统相关联的多个日志流。管理流包括维持日志流的日志流索引,并基于对应日志流的性能度量为每个日志流生成性能简档。在一个实施例中,可以使用流层的元数据流来实现日志流索引。每个流对应于索引中的一个记录,该记录具有多个字段用于标识该日志流的信息以及与该日志流的性能简档相关联的信息。例如,索引可以包括标识符、流名称、操作属性、吞吐量属性以及延迟属性。通过本发明的实施例可以料想到用于日志流的其它类型的信息。
日志流索引可以表示与特定日志流相关联的一个或多个分区。通过例子,流层的元数据流(未示出)包括日志流索引,其利用存储于索引中的代码标识每个流和对应的一个或多个分区。在一个实施例中,在加载分区期间,流部件使得日志流与分区相关联,从而可以将与分区相关联的业务引导到一个或多个流。
在一个实施例中,流部件340还可以配置为管理实际日志流的数目和活跃日志流的数目。可以构思出在加载分区时将实际日志流的数目分配给分区,并保持不改变直到分区被卸载和被重新加载为止。可以在日志流索引的流记录中识别实际日志流。流部件可以动态调整分区的活跃日志流的数目。流部件可以维持与分区相关联的活跃日志流的数目的动态配置。可以调整活跃日志流的动态配置。调整与分区相对应的活跃日志流可以基于分区的负载和/或日志流的性能简档。对此,分区可以维持两个标识符-NumLogStreams和NumActiveLogStreams。NumLogStreams指定日志流的实际数目,以及NumActiveLogStreams指定可以将新事务记录写入的那些日志流的子集。
增加日志流的数目可以基于从动态配置读出的数目高于当前的日志流实际数目,NumLogStreams和NumActiveLogStreams都可以被设置为该值。可以写入新的流记录,并且在分区加载期间可以通过指定当前分区时刻(epoch)的时刻记录创建新的流。另外,在分区开始接受新业务之前,其还可以写入更新的检查点记录,其是来自先前实例的上一检查点记录的副本,但是在回放区域集合中包括新的流。因此如果分区写入一些事务到这些流并在检查点发生之前获得重新加载,则流将在下一分区加载期间进行重新播放。
减少从动态配置读取的数目低于当前的流实际数目,则将NumActiveLogStreams设置为该数目,并且将NumLogStreams设置为在流记录中指定的流的当前实际数目。在分区加载时,如果最后n个日志流(其中n在0和NumLogStreams-NumActiveLogStreams之间)完全为空,则这n个流将被删除(以及将写入更新的流记录),并且NumLogStreams将被减去n。新时刻记录将被写入到所有剩余的流(包括不活跃的流),并且所有存在于重放区域集合中的流将用于事务重放。
流部件340负责开发日志流的日志流性能简档。流部件跟踪关于日志流的操作属性、吞吐量属性和延迟属性的性能度量,从而可以智能地选择特定日志来改善吞吐量和一致性延迟。性能度量可以基于包括物理资源和抽象资源的资源,其便于日志流执行与请求相关联的事务。通过例子,物理资源可以指代CPU周期、带宽、或存储器;抽象资源可以指代对云计算系统的部件的特定API调用。
还可以在操作属性、吞吐量属性或延迟属性下分类资源使用。例如,操作属性可以基于日志流当前是否正在处理导致执行区密封操作的事务的写入请求。吞吐量属性可以基于日志流的当前负载,例如,特定请求的有效负荷大小。延迟属性可以基于在命令和响应之间的时间间隔、在观察到系统的改变之前在原因和结果之间的延迟。延迟属性可以与请求、在特定间隔期间的请求、导致特定操作(例如,密封区)的请求相关联。通过本文描述的实施例可以料想到其它变型和组合、物理资源、抽象资源、日志流属性。
性能度量可以用于生成重试窗口时间段。重试窗口可以指定将特定请求的重试推迟的时间段。可以动态实现重试窗口。动态重试窗口是基于分位数的自适应重试方案的一部分。分位数指的是以桶化为百分比的固定间隔采取的性能度量。可以在所选时间段的预先定义百分比内选择请求的重试窗口。通过例子,可以针对五分钟时段来评估日志流的性能度量,其中示例性性能度量可以是日志流的一组请求的延迟。在所选百分比(例如,95%)请求内的延迟时段可以被确定(例如,5ms)和识别为重试窗口。这样,在下一个五分钟时段期间,采用5ms执行对应事务的任何请求将被传送到另一日志流,而无需等待先前的请求。还在下一个五分钟时段期间,收集到的性能度量可以用于确定下一个五分钟的重试窗口,依此类推。
通过另一例子,分布式存储系统一秒钟可以服务来自所有种类顾客的具有非常不同工作负荷的数百万请求,对于系统而言常见的是贯穿系统不断存在小故障,例如,在分组丢弃之后的TCP重传、在一些繁忙节点上的存储器分页、由于锁定竞争暂停应用线程或突发的请求命中特定节点。系统性能总是波动的。以下描述跨所有日志流用于流附加的典型性能分位数:
延迟分位数:在1.12ms处的25%,在1.23ms处的50%,在1.47ms处的75%,在1.81ms处的90%,在2.13ms处的95%,在3.89ms处的98%,5.03ms处的99%,在6.12ms处的99.5%,以及在8.89ms处的99.9%。
通常,高达90%的性能相对一致,而较高的末端分位数趋向于大量变化。通过用于重试的预定延迟阈值,如果所选的重试阈值太低(比如在上述例子中的1ms),则几乎每个请求都需要重试并且总的有效的附加吞吐量将受损。如果所选的重试阈值太高(也就是5ms),则在实现一致的附加延迟时重试将是无效的。
并不是预先确定用于重试的延迟阈值,我们的系统基于分位数数据动态地确定延迟阈值,所述分位数数据在预定时间段(例如,几分钟)不断地更新并反映最近的客户端观察到的性能。还可以想到分位数算法可以考虑请求的大小的分布,延迟分位数数据可以基于大小类似的请求。系统将百分比(例如,95%)作为分位数阈值。在上述例子中,系统将使用2.13ms作为重试窗口阈值。这种统计方法允许系统立即对系统性能改变进行响应并且不浪费任何重试,并且避免猜测正确的重试延迟阈值。这样,通过本文描述的实施例可以料想到基于分位数的动态重试窗口间隔的其它变型。
事务部件350负责接收和传送请求以利用日志流执行。请求可以初始地接收于客户端,并经由分区层320被传送到具有事务管理部件350的流层。请求可以与请求属性相关联。请求属性可以是指特性或状态。请求属性还可以特别地指代暗指被选择执行请求的日志流的性能容量的请求的特性。事务部件可以负责跟踪请求属性。属性可以包括优先级和有效负荷大小。请求属性可以表示用于将特定日志流专用于请求的性能隔离度量(例如,优先级-低、中、高;有效负荷(>10bm)(<10mb))。通过本文描述的实施例可以料想到请求属性和性能隔离度量的其它变型和组合。
参考图4,传统上,所有的请求(例如,写入请求)将被写入到单个流;然而,通过多日志流(例如,372、374以及376),可以在不同日志流上执行请求。在操作中,当事务部件350接收到写入请求时,可以为写入请求分配日志流。与请求相关联的分区可以通过流部件340已经与至少两个日志流相关联。事务部件350可以在这些日志流中的一个上执行输入的请求。在一个实施例中,事务部件350实现流组(例如,流组378)。包括个体流的组的单个句柄(handle)暴露于分区层。这样,向组处理发布来自分区层的写入请求,从而流层利用单个句柄在流组中的一个日志流上内部地执行写入请求。组处理可以包括两个或更多个日志流。流组可以特别地用于多写入等待重试方案或多写入并行写入方案,如下文更详细描述。
事务部件350可以负责确定在日志流上如何执行请求。特别地,事务部件可以定义若干事务方案用于在日志流上执行请求。事务方案可以基于请求属性和/或从流部件参考的日志流的性能简档。通过例子,写入可以具有高于阈值量的有效负荷,从而存在专用日志流来处理请求以执行事务。写入请求也可以在所选的日志流上执行,其中选择日志流是因为在该日志流上的负载较低。可以利用日志流的性能简档确定日志流的负载;性能简档包括日志流的跟踪的性能度量。
事务部件350还负责多写入事务。多写入事务指的是发布写入到多个日志流。通过例子,具有高优先级属性的写入请求可以在多日志流上与在事务上执行的额外处理并行地执行,所述额外处理先被完成。在一个实施例中,事务部件350可以实现为基于等待和重试逻辑的多写入。事务部件350可以为写入请求执行第一写入,然后等待预先定义的时间段,如果写入尚未完成,则事务部件可以为写入请求发布第二流上的第二写入。可以料想到的是,预先定义的时段可以基于利用分位数生成的重试窗口。事务部件基于先完成的写入(第一写入或第二写入中的任意一个)而继续处理。
有利地是,事务部件实现于流层,从而事务部件可以在智能选择日志流用于执行写入请求时额外地参考日志流的性能简档。这样,多写入事务限制了日志流延迟尖峰。可以料想到,请求取消未完成的写入请求,以便节省系统资源或创建重复记录。此外,可以基于与提交给存储器和持久性存储设备的事务相关联的序列标识符和确认标识符来处理重复记录。
事务部件350可以参考日志流性能简档的性能度量来确定日志流的性能容量。参考图4,在评估一个或多个性能度量之后,日志流372、374和376每个可以对应于不同的性能容量。这样,一个特定的日志流可以相对于另一日志流被选择用于执行请求。性能容量可以指的是日志流执行与请求相关联的事务的潜在能力。性能容量可以基于操作属性、吞吐量属性、基于日志流的资源确定的延迟属性。通过例子,日志流的操作属性是日志流是否在执行区密封操作。这样,可以量化与区密封操作相关联的资源,并且这样,执行区密封操作的日志流将具有比不执行区密封操作的日志流低的性能容量。
吞吐量属性可以指的是处理请求的速率。每个日志流的吞吐量可以被量化为性能度量。通过例子,日志流362可以具有每10s1个请求的量化速率,并且日志流364可以具有每2s1个请求的速率。通过当前的请求队列,日志流362将可用于在20s内处理另一请求,而日志流364可以用于在6s内处理另一请求。这样,通过事务部件350在传送请求用于在日志流上执行之前基于性能度量评估性能容量,可以智能地选择具有更好的性能容量的日志流(日志流364)用于处理请求。
此外,与分布式存储系统的功能相关联的若干不同类型的性能延迟(例如,附加延迟、区密封延迟、或网络延迟)可能影响日志系统的性能。这样,确定性能容量可以进一步基于量化与特定类型的性能延迟相关联的资源以用于评估执行特定请求的日志流。用于附加到流的常见的拖延是流层对上一区执行密封并向流添加新区,密封区操作。该步骤涉及流管理器并通常花费几十到超过100ms或者偶尔更长。系统中的多方可以触发区密封操作。
在多日志流实现方式中,可以通过进行实际附加的流层前摄地触发区密封操作。这样,流层知道在区密封操作期间流是不“能附加的”,并因此在其经历区密封操作时排除针对该流的输入请求。另外,在流层已经从目标流移除了所有的附加请求之后,流部件可以排他地触发区密封操作。
另外,在区被添加到流之后,针对新的区的初始附加可能用时更长,这是因为在托管新区实例的存储节点之间的TCP连接可能需要按要求被建立,或者存储节点需要打开一些磁盘上的文件。并不是立即发送新的用户附加请求到新创建的区,流层首先发送内部探测附加请求到新创建的区,确保沿着其附加路径的所有事物都处于良好状态。在该探测请求成功完成之后,流客户端库考虑新区是可附加的并开始发送用户业务。
通过另一例子,网络堆栈可以引起网络延迟,原因在于网络链路丢弃需要向其它日志流重试请求的分组。网络延迟对日志流的影响可以被量化并作为性能容量的因素,其用于选择特定的日志流。可以料想到,一个或多个性能度量可以用于选择日志流。还可以料想到,性能度量单独或与本文描述的其它日志流选择方案组合可以用于选择日志流。
本文描述的实施例还可以检测和避免热点。典型的流层并发地向多个日志流进行写入,并且每个流写入到3个存储节点,如本文所讨论的。所有这些写入请求返回它们的、托管节点和目标设备的负载度量。这些度量通过流层聚合。如果流层发现一个设备或存储节点与其在系统中的对等点相比具有更多的负载,则流层可以决定密封区,因此减少热点。
事务部件350还可以负责重放提交到日志流的事务记录。可以基于分区移动(例如,分区负载平衡)在分区加载期间执行重放事务。可以在系统故障或服务器崩溃时在恢复操作期间执行分区加载。还可以通过例程分区或模式负载平衡活动执行分区加载。这样,可以重放提交给日志流的事务记录以恢复数据到分区。检查点记录可以用于确定来自每个日志流的哪些区域要重放。重放部件维持跨日志流的事务提交次序。重放部件使用序列标识符和确认标识符。跨所有的日志流,序列号是唯一的。当已经在持久性存储设备中提交了事务时,确认标识符对应于事务。
序列标识符可以用于对从日志流读取的事务记录进行排序。当将记录写入到日志流时为了维持高性能,写入并没有被序列化,而是可以将序列标识符与每个事务记录一起写入。在重放操作期间,以其原始次序重放事务,并且通过以其序列号的次序而不是其物理流次序重放日志记录来实现该次序。当写入日志记录时,也将确认标识符与每个记录一起写入。确认标识符表示具有低于其的序列标识符的所有记录已经被写入到持久性存储设备(例如,磁盘或闪速存储设备),并因此在序列标识符小于确认标识符的当前记录之后不再存在任何记录。这在序列标识符空间中存在孔时允许重放向前移动。
在多日志流的情况下,来自不同日志流的事务记录还需要以原始事务序列化次序被重放。为了实现此,跨所有流共享单个序列/确认标识符空间。这样,跨不同流的记录还可以利用它们的序列号被排序。可以存在用于每个日志的单独的日志阅读器。日志阅读器可以以日志记录在日志内的序列号的次序返回事务记录。可以将来自所有日志阅读器的输出馈送到单个优先级队列,其随后正确地跨所有日志对记录进行排序。还应注意,前面提到的确认标识符属性(在其之后将观察不到任何具有更低序列标识符的记录)适用于单个日志流,但是在查看从不同日志流读取出的记录时可能未必是这种情况。
通过例子,考虑具有后续记录的两个日志流。下文的[x,y]表示具有序列x和确认y的记录
日志1:[4,0][1,1]
日志2:[3,0][2,4]
来自日志阅读器的输出将是:
日志阅读器1:[1,1][4,0]
日志阅读器2:[2,4][3,0]
从优先级队列输出的将是:[1,1][2,4][3,0][4,0],其是这些记录将被重放的次序。
可以读取和重放来自每个日志流的事务记录。优先级队列可以被实现为以日志序列号的次序提供记录,因此在重放期间维持正确的次序。可以预料到,分区可以同时继续从多个日志流接收新的请求,同时重放提交的日志事务。如上所讨论的,事务部件负责维持序列标识符和确认标识符。序列标识符表示用于待利用日志流执行的事务的传送的请求次序。确认标识符表示与请求相关联的事务已经被提交给持久性存储设备。序列标识符和确认标识符可以组合支持重放事务。例如,想象2个日志流,第一日志流和第二日志流。第一日志流可以比第二日志流块。将第一组请求传送给第一日志流(较快的日志流);以及将第二组请求传送给第二日志流(较慢的日志流)。第一日志流将比第二日志流更快地处理请求。然而,第二日志流仍负责处理第二组请求,即使以较慢的速率。
为所有流跟踪确认标识符。确认标识符可以指定高水印,其表示已经到达所有日志流的最高序列标识符。因为利用序列标识符跟踪的请求次序可能在特定实现方式中包括缝隙,所以确认标识符替代用于排序请求而没有缝隙。可以在重放期间使用确认标识符,从而以排序序列执行重放操作。特别地,当在重放操作从日志流进行读取期间从所有的重放流缺少一个序列标识符时,重放操作可以在所有流中保持向前读取以查找该序列标识符。然而,当在读取了所有日志流之后识别出具有高于该序列号的号的确认标识符时,这表示缺乏的序列标识符不可能在任何日志流中。这样,跳过该序列标识符,并且重放下一最高序列标识符。
参考图5,提供了示出用于在分布式存储系统中实现多日志流的示例性方法500的流程图。在框510处,接收利用分布式存储系统的日志流执行事务的请求。该请求接收自分布式存储系统的分区。在框520处,参考或接收多个日志流的性能度量。所述性能度量表示所选日志流处理该请求的性能容量。在框530处,至少部分基于性能容量确定用于处理该请求的日志流。在框540处,利用基于性能容量识别出的日志流执行该请求,以执行事务。
参考图6,提供了示出用于在分布式存储系统中实现多日志流的示例性方法600的流程图。初始在框610处,接收利用分布式存储系统的日志流执行事务的请求。该请求接收自分布式存储系统的分区。在框620处,确定用于处理该请求的两个或更多个日志流。所述两个或更多个日志流被选择用于执行多写入操作。在框630处,执行针对该请求的第一写入操作。在框640处,在阈值等待时间到期时,执行针对该请求的第二写入。在框650处,在从第一写入操作或第二写入操作接收到请求的事务的执行的确认时,将确认传送到客户端。
在简述了本发明的实施例的概述之后,在下文描述可以实现本发明的实施例的示例性操作环境以便提供本发明的各方面的一般上下文。初始特别参考图6,示出了用于实现本发明的实施例的示例性操作环境,并一般表示为计算设备600。计算设备600只是适当的计算环境的一个例子,并不旨在暗示对本发明的使用或功能的范围的限制。计算设备600也不应被解释为具有与图示的部件的任一个或组合有关的任何依赖性或要求。
可以在计算机代码或机器可用指令的一般上下文中描述本发明,包括诸如程序模块的计算机可执行指令,由计算机或其它机器(例如,个人数据助理或其它手持设备)执行。一般而言,包括例程、程序、对象、部件、数据结构等的程序模块指的是执行特定任务或实现特定抽象数据类型的代码。本发明可以用多种系统配置来实现,包括手持设备、消费电子产品、通用计算机、更专业的计算设备等。本发明还可在分布式计算环境中实现,其中通过经由通信网络链接的远程处理设备执行任务。
参考图7,计算设备700包括总线710,其直接或间接耦合后续设备:存储器712、一个或多个处理器714、一个或多个呈现部件716、输入/输出端口718、输入/输出部件720、以及图示电源722。总线710表示一个或多个总线(例如,地址总线、数据总线或其组合)。虽然为了清晰的原因用线条示出了图7的各种框,但是事实上,描绘各种部件不是这么清晰的,从喻义上来说,线条更准确地应该是灰色且模糊的。例如,人们可能将呈现部件(例如,显示设备)认为是I/O部件。另外,处理器具有存储器。我们认识到这是本领域的本质,并且重申图7的图仅是说明可以结合本发明的一个或多个实施例使用的示例性计算设备。并不区分例如“工作站”、“服务器”、“膝上型计算机”、“手持设备”等的种类,所有这些在图1的范围内都能被想到并且是指“计算设备”。
计算设备700一般包括多个计算机可读介质。计算机可读介质可以是计算设备700可访问的任意可用的介质,并包括易失性和非易失性介质、可移除和不可移除介质。通过例子而非限制,计算机可读介质可以包括计算机存储介质和通信介质。
计算机存储介质包括易失性和非易失性、可移除和不可移除介质,其实现于用于存储信息(例如,计算机可读指令、数据结构、程序模块或其它数据)的任何方法或技术中。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字通用盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁存储设备、或者能够用于存储期望信息并能够由计算设备700访问的任何其它介质。计算机存储介质不包括信号本身。
通信介质通常具体体现计算机可读指令、数据结构、程序模块、或在已调数据信号(例如,载波或其它传输机构)中的其它数据,并包括任何信息输送介质。术语“已调数据信号”表示具有以编码信号中的信息的方式设置或改变的一个或多个特性的信号。通过例子而非限制,通信介质包括有线介质,例如有线网络或直连线连接;以及无线介质,例如声、RF、红外以及其它无线介质。上述任意组合还应该包含于计算机可读介质的范围内。
存储器712包括易失性和/或非易失性存储器形式的计算机存储介质。存储器可以是可移除的、不可移除的或其组合。示例性硬件设备包括固态存储器、硬驱动、光盘驱动等。计算设备700包括一个或多个处理器,其从各种实体(例如,存储器712或I/O部件720)处读取数据。呈现部件716向用户或其它设备呈现数据表示。示例性呈现部件包括显示设备、扬声器、打印部件、振动部件等。
I/O端口718允许计算设备700逻辑地耦合到其它设备(包括I/O部件720),其中的一些可以是内置的。说明性的部件包括麦克风、操纵杆、游戏垫、卫星盘、扫描仪、打印机、无线设备等。
已经涉及特定实施例描述了本文呈现的实施例,其在所有方面是说明性的而不是限制性的。替代的实施例对本发明所属领域的普通技术人员而言是显而易见的,而不背离其范围。
根据以上,可以看出,本发明非常适应于实现上述所有的目标和目的,以及显然的且对结构固有的其它优点。
可以理解的是,特定特征和子组合具有实用性,并可以在不参考其它特征和子组合的情况下采用。这在权利要求的范围内构思出且落入所述范围内。
Claims (20)
1.一种用于在分布式存储系统中实现多日志流的系统,所述系统包括:
一个或多个硬件处理器以及存储器,所述存储器存储实施在其上的计算机可执行指令和部件,所述计算机可执行指令和部件在被所述一个或多个硬件处理器执行时,使所述硬件处理器执行:
流部件,被配置用于:
检测多个日志流的性能度量,其中所述性能度量基于处理来自分区层的请求,所述分区层支持分布式存储系统中的分区和对应的分区服务器,其中分区地图存储分区与对应的分区服务器之间的映射;以及
传送所述多个日志流的性能度量;
事务部件,被配置用于:
接收对利用所述分布式存储系统的所选择的日志流执行事务的请求,其中所述请求从所述分布式存储系统的分区被接收,其中所述分区层与包括所述多个日志流的流层一起操作,其中在所述多个日志流中的与对应分区相关联的持久性事务的提交之前,所述分区层支持所述持久性事务,并且其中所述流层提供文件系统命名空间以用于处理请求;
基于所述请求确定是否利用与性能度量相关联的性能容量方案和与性能隔离特性相关联的请求属性方案中的一个或多个来从所述多个日志流中识别用于执行所述请求的日志流;
利用所述性能容量方案识别所述日志流,其中利用所述性能容量方案识别所述日志流包括:访问所述多个日志流的所述性能度量,其中所述性能度量指示所述多个日志流中的每个日志流用于处理所述请求的性能容量;以及基于所述性能容量选择所述日志流;
利用所述请求属性方案识别所述日志流,其中利用所述请求属性方案识别所述日志流包括:访问所述请求的请求属性,其中所述请求属性指示用于处理所述请求的性能隔离特性;以及基于所述性能隔离特性选择所述日志流;
传送将利用基于所述性能容量识别的所述日志流来被执行的所述请求;以及
传送将利用基于所述性能隔离特性识别的所述日志流来被执行的所述请求。
2.根据权利要求1所述的系统,其中,所述流部件还被配置用于:
生成用于所述多个日志流的日志流索引;以及
生成用于所述多个日志流的性能简档,其中所述性能简档包括以下至少一项:所述多个日志流的操作属性、吞吐量属性和延迟属性。
3.根据权利要求1所述的系统,其中,所述事务在所述日志流中被提交并且在持久性存储部件中被提交。
4.根据权利要求1所述的系统,其中,所述流部件还被配置用于:
追踪实际日志流数目和活跃日志流数目;以及
基于动态配置来动态地调整所述实际日志流数目和所述活跃日志流数目,其中所述日志流的所述动态配置基于对应的分区。
5.根据权利要求1所述的系统,其中,所述事务部件还被配置用于:
将要被执行的所述请求作为单写入操作或多写入事务来传送,
其中执行多写入操作包括:
确定用于处理的两个日志流;
执行针对所述请求的第一写入操作;
在阈值等待时间到期时,执行针对所述请求的第二写入操作;以及
在从所述第一写入操作或所述第二写入操作接收到所述请求的所述事务的执行的确认时,向客户端传送确认。
6.根据权利要求1所述的系统,还包括所述事务部件,被配置用于:
利用日志流的性能简档确定所述日志流的性能容量,其中所述性能容量基于与操作属性、吞吐量属性或延迟属性中的至少一个相关联的多个资源。
7.根据权利要求1所述的系统,其中,所述请求属性包括优先级和有效负荷大小中的至少一个,并且其中所述多个日志流中的至少一个基于所述优先级或所述有效负荷大小而操作为针对具有性能隔离特性的请求的专用日志流。
8.根据权利要求1所述的系统,其中,所述事务部件还被配置用于重放所提交的事务日志,其中重放所提交的事务日志包括:
接收分区负荷的指示;
参考检查点记录,其中所述检查点记录指示如下区域,重放操作能够从所述区域起被执行;以及
参考序列标识符和确认标识符中的至少一个来在分区上重放所提交的事务日志,其中所提交的所述事务日志的重放维持所提交的事务的有序序列。
9.根据权利要求8所述的系统,其中所述分区负荷基于分区移动操作和故障恢复操作中的一个。
10.一个或多个其上实现有计算机可执行指令的计算机存储硬件存储器,所述计算机可执行指令当被一个或多个处理器执行时,使得所述一个或多个处理器执行一种用于在分布式存储系统中实现多日志流的方法,所述方法包括:
接收对利用分布式存储系统的多个日志流中的所选择的日志流执行事务的请求,其中所述请求从分区层被接收,所述分区层支持所述分布式存储系统的分区和对应的分区服务器,其中分区地图存储分区与对应的分区服务器之间的映射,其中分区层与包括所述多个日志流的流层一起操作,其中在所述多个日志流中的与对应分区相关联的持久性事务的提交之前,所述分区层支持所述持久性事务,其中所述流层提供文件系统命名空间以用于处理请求;
参考所述多个日志流的性能度量以及所述请求的一个或多个请求属性两者,其中所述性能度量指示所选择的所述日志流用于处理所述请求的性能容量,并且所述一个或多个请求属性指示用于处理所述请求的性能隔离特性;
至少部分地基于所述性能容量和所述性能隔离特性确定用于处理所述请求的日志流;以及
利用基于性能容量和所述性能隔离特性识别的所述日志流执行所述请求。
11.根据权利要求10所述的存储器,其中,所述请求对应于具有序列标识符和确认标识符的所述事务,其中所述确认标识符指示所述事务成功执行了针对持久性存储设备的附加操作。
12.根据权利要求10所述的存储器,其中所述多个日志流中的至少一个基于优先级或有效负荷大小而操作为针对具有性能隔离特性的请求的专用日志流。
13.根据权利要求10所述的存储器,其中确定所述性能容量至少部分地基于对与所识别的性能推迟相关联的资源进行量化,其中性能推迟包括附加推迟、区密封推迟或网络推迟中的一个。
14.根据权利要求10所述的存储器,其中所述性能度量基于利用来自所述多个日志流的日志流处理来自分区的请求。
15.根据权利要求10所述的存储器,还包括:
检测重试窗口的到期,其中所述重试窗口指示用于重新执行所述请求的推迟时间段;以及
在不同的日志流上重新执行所述请求。
16.根据权利要求15所述的存储器,其中所述重试窗口是利用性能度量的基于分位数的确定,其中所述重试窗口根据所选择的时间段的预先定义的百分比而被定义。
17.一种计算机实现的用于在分布式存储系统中实现多日志流的方法,所述方法包括:
从分布式存储系统的分区层接收对利用所述分布式存储系统的多个日志流中的两个或更多个日志流执行事务的请求,其中所述事务利用所述分布式存储系统的所选择的两个或更多个日志流而被执行,其中所述分区层支持所述分布式存储系统的分区和对应的分区服务器,其中分区地图存储分区与对应的分区服务器之间的映射,其中所述分区层与包括所述多个日志流的流层一起操作,其中在所述多个日志流中的与对应分区相关联的持久性事务的提交之前,所述分区层支持所述持久性事务,并且其中所述流层提供文件系统命名空间以用于处理请求;
确定用于处理的所述两个或更多个日志流,其中所述两个或更多个日志流被选择用于执行多写入操作,其中所述两个或更多个日志流基于对所述多个日志流的性能度量以及所述请求的一个或多个请求属性两者的参考而被确定,其中所述性能度量指示所选择的日志流用于处理所述请求的性能容量,并且所述请求属性指示用于处理所述请求的性能隔离特性;
执行针对所述请求的第一写入操作;
在阈值等待时间到期时,执行针对所述请求的第二写入操作;以及
在从所述第一写入操作或所述第二写入操作接收到所述请求的所述事务的执行的确认时,向客户端传送确认。
18.根据权利要求17所述的方法,其中确定所选择的用于处理所述请求的所述两个或更多个日志流基于对所述多个日志流的所述性能度量进行访问,其中所述性能度量指示所选择的日志流的用于处理所述请求的性能容量,其中所述性能度量基于利用来自所述多个日志流的日志流处理来自分区的请求。
19.根据权利要求17所述的方法,其中所述两个或更多个日志流利用流组来被实现,其中所述流组包括被暴露作为针对分区的单个句柄的至少两个日志流。
20.根据权利要求17所述的方法,还包括:在接收到所述事务的所述执行的所述确认时,传送对取消所述第一写入操作或所述第二写入操作的请求,其中所述第一写入操作或所述第二写入操作不对应于所述事务的执行的所述确认。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/569,582 | 2014-12-12 | ||
US14/569,582 US9736243B2 (en) | 2014-12-12 | 2014-12-12 | Multiple transaction logs in a distributed storage system |
PCT/US2015/065222 WO2016094785A2 (en) | 2014-12-12 | 2015-12-11 | Multiple transaction logs in a distributed storage system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107408070A CN107408070A (zh) | 2017-11-28 |
CN107408070B true CN107408070B (zh) | 2021-03-09 |
Family
ID=55077624
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580067452.4A Active CN107408070B (zh) | 2014-12-12 | 2015-12-11 | 分布式存储系统中的多事务日志 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9736243B2 (zh) |
EP (1) | EP3230868B1 (zh) |
CN (1) | CN107408070B (zh) |
WO (1) | WO2016094785A2 (zh) |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10601881B1 (en) | 2015-10-05 | 2020-03-24 | Amazon Technologies, Inc. | Idempotent processing of data streams |
US20170206148A1 (en) * | 2016-01-20 | 2017-07-20 | Facebook, Inc. | Cross-region failover of application services |
US10509778B2 (en) * | 2016-05-25 | 2019-12-17 | Google Llc | Real-time transactionally consistent change notifications |
US11188513B2 (en) * | 2016-07-06 | 2021-11-30 | Red Hat, Inc. | Logfile collection and consolidation |
US10866945B2 (en) | 2016-10-10 | 2020-12-15 | AlphaPoint | User account management via a distributed ledger |
US10031776B2 (en) * | 2016-11-21 | 2018-07-24 | Ca, Inc. | Workflow job distribution in a data processing system with agent time window constraints |
CN108287854B (zh) * | 2017-01-10 | 2021-06-22 | 网宿科技股份有限公司 | 一种流计算中数据持久化的方法和系统 |
US10664306B2 (en) * | 2017-01-13 | 2020-05-26 | Arm Limited | Memory partitioning |
US10609174B2 (en) | 2017-04-11 | 2020-03-31 | Microsoft Technology Licensing, Llc | Parallel prefetching log/meta stream sub-portions to recreate partition states in a distributed computing system |
US10547672B2 (en) | 2017-04-27 | 2020-01-28 | Microsoft Technology Licensing, Llc | Anti-flapping system for autoscaling resources in cloud networks |
US10659225B2 (en) * | 2017-06-30 | 2020-05-19 | Microsoft Technology Licensing, Llc | Encrypting existing live unencrypted data using age-based garbage collection |
US10764045B2 (en) * | 2017-06-30 | 2020-09-01 | Microsoft Technology Licensing, Llc | Encrypting object index in a distributed storage environment |
US10387673B2 (en) | 2017-06-30 | 2019-08-20 | Microsoft Technology Licensing, Llc | Fully managed account level blob data encryption in a distributed storage environment |
CN110019112B (zh) * | 2017-08-25 | 2023-10-31 | 阿里巴巴集团控股有限公司 | 数据事务处理方法、装置以及电子设备 |
EP3496358A1 (en) * | 2017-12-08 | 2019-06-12 | Thomson Licensing | Devices and methods for data propagation in a distributed network |
US10970395B1 (en) | 2018-01-18 | 2021-04-06 | Pure Storage, Inc | Security threat monitoring for a storage system |
US11010233B1 (en) | 2018-01-18 | 2021-05-18 | Pure Storage, Inc | Hardware-based system monitoring |
US10430100B2 (en) | 2018-02-28 | 2019-10-01 | International Business Machines Corporation | Transactional operations in multi-master distributed data management systems |
US11120046B2 (en) | 2018-05-04 | 2021-09-14 | Microsoft Technology Licensing Llc | Data replication in a distributed storage system |
US10817197B2 (en) | 2018-05-04 | 2020-10-27 | Microsoft Technology Licensing, Llc | Data partitioning in a distributed storage system |
US10901648B2 (en) | 2018-05-07 | 2021-01-26 | Microsoft Technology Licensing, Llc | Distributed data storage system with automatic snapshots, user snapshots and soft delete |
US11042522B2 (en) | 2018-06-11 | 2021-06-22 | International Business Machines Corporation | Resolving versions in an append-only large-scale data store in distributed data management systems |
US10545677B2 (en) | 2018-06-18 | 2020-01-28 | Microsoft Technology Licensing, Llc | Volatile account identification and isolation and resource management in distributed data storage systems |
US11657025B2 (en) * | 2019-06-24 | 2023-05-23 | Western Digital Technologies, Inc. | Parallel processing of filtered transaction logs |
CN110392100B (zh) * | 2019-07-12 | 2022-03-11 | 辽宁途隆科技有限公司 | 高并发事件的处理方法及装置、存储介质、计算机设备 |
US11720714B2 (en) | 2019-11-22 | 2023-08-08 | Pure Storage, Inc. | Inter-I/O relationship based detection of a security threat to a storage system |
US11941116B2 (en) | 2019-11-22 | 2024-03-26 | Pure Storage, Inc. | Ransomware-based data protection parameter modification |
US11341236B2 (en) | 2019-11-22 | 2022-05-24 | Pure Storage, Inc. | Traffic-based detection of a security threat to a storage system |
US11625481B2 (en) | 2019-11-22 | 2023-04-11 | Pure Storage, Inc. | Selective throttling of operations potentially related to a security threat to a storage system |
US11657155B2 (en) | 2019-11-22 | 2023-05-23 | Pure Storage, Inc | Snapshot delta metric based determination of a possible ransomware attack against data maintained by a storage system |
US11645162B2 (en) | 2019-11-22 | 2023-05-09 | Pure Storage, Inc. | Recovery point determination for data restoration in a storage system |
US11500788B2 (en) | 2019-11-22 | 2022-11-15 | Pure Storage, Inc. | Logical address based authorization of operations with respect to a storage system |
US11720692B2 (en) | 2019-11-22 | 2023-08-08 | Pure Storage, Inc. | Hardware token based management of recovery datasets for a storage system |
US11651075B2 (en) | 2019-11-22 | 2023-05-16 | Pure Storage, Inc. | Extensible attack monitoring by a storage system |
US11520907B1 (en) | 2019-11-22 | 2022-12-06 | Pure Storage, Inc. | Storage system snapshot retention based on encrypted data |
US11615185B2 (en) | 2019-11-22 | 2023-03-28 | Pure Storage, Inc. | Multi-layer security threat detection for a storage system |
US11675898B2 (en) | 2019-11-22 | 2023-06-13 | Pure Storage, Inc. | Recovery dataset management for security threat monitoring |
US11687418B2 (en) | 2019-11-22 | 2023-06-27 | Pure Storage, Inc. | Automatic generation of recovery plans specific to individual storage elements |
US11755751B2 (en) | 2019-11-22 | 2023-09-12 | Pure Storage, Inc. | Modify access restrictions in response to a possible attack against data stored by a storage system |
US11704284B2 (en) * | 2020-04-13 | 2023-07-18 | Vmware, Inc. | Supporting storage using a multi-writer log-structured file system |
CN111563017B (zh) * | 2020-04-28 | 2023-05-16 | 北京字节跳动网络技术有限公司 | 数据处理方法及装置 |
CN112905548B (zh) * | 2021-03-25 | 2023-12-08 | 昆仑数智科技有限责任公司 | 一种安全审计系统及方法 |
CN113268483A (zh) * | 2021-05-24 | 2021-08-17 | 北京金山云网络技术有限公司 | 请求处理方法和装置、电子设备和存储介质 |
WO2023134839A1 (en) * | 2022-01-11 | 2023-07-20 | Huawei Cloud Computing Technologies Co., Ltd. | Near memory processing module for distribution of allocation units |
US11934665B2 (en) * | 2022-05-24 | 2024-03-19 | Tessell, Inc. | Systems and methods for ephemeral storage snapshotting |
CN115185787B (zh) * | 2022-09-06 | 2022-12-30 | 北京奥星贝斯科技有限公司 | 处理事务日志的方法及装置 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7725428B1 (en) | 2002-03-14 | 2010-05-25 | Novell, Inc. | System and method for restoring a database in a distributed database system |
CN1495634A (zh) * | 2002-06-27 | 2004-05-12 | 上海汉唐科技有限公司 | 服务器集群负载均衡方法及系统 |
US7076508B2 (en) | 2002-08-12 | 2006-07-11 | International Business Machines Corporation | Method, system, and program for merging log entries from multiple recovery log files |
US8090691B2 (en) | 2004-08-13 | 2012-01-03 | Computer Associates Think, Inc. | System and method for variable block logging with log-ahead buffers |
US8190588B1 (en) | 2005-09-19 | 2012-05-29 | Amazon Technologies, Inc. | Providing a distributed transaction information storage service |
CA2652111C (en) | 2006-05-12 | 2018-09-11 | Goldengate Software, Inc. | Apparatus and method for forming a homogenous transaction data store from heterogeneous sources |
US8074014B2 (en) | 2008-03-31 | 2011-12-06 | Microsoft Corporation | Storage systems using write off-loading |
US8495036B2 (en) * | 2008-10-24 | 2013-07-23 | Microsoft Corporation | Blob manipulation in an integrated structured storage system |
US8620884B2 (en) | 2008-10-24 | 2013-12-31 | Microsoft Corporation | Scalable blob storage integrated with scalable structured storage |
US8453163B2 (en) * | 2009-06-29 | 2013-05-28 | Software Ag Usa, Inc. | Systems and/or methods for policy-based JMS broker clustering |
GB2472620B (en) | 2009-08-12 | 2016-05-18 | Cloudtran Inc | Distributed transaction processing |
US10430298B2 (en) * | 2010-10-28 | 2019-10-01 | Microsoft Technology Licensing, Llc | Versatile in-memory database recovery using logical log records |
CN102073546B (zh) * | 2010-12-13 | 2013-07-10 | 北京航空航天大学 | 一种云计算环境中分布式计算模式下的任务动态调度方法 |
US20120221373A1 (en) * | 2011-02-28 | 2012-08-30 | Manish Marwah | Estimating Business Service Responsiveness |
US8909996B2 (en) | 2011-08-12 | 2014-12-09 | Oracle International Corporation | Utilizing multiple storage devices to reduce write latency for database logging |
US8769350B1 (en) | 2011-09-20 | 2014-07-01 | Advent Software, Inc. | Multi-writer in-memory non-copying database (MIND) system and method |
US9684455B2 (en) * | 2013-03-04 | 2017-06-20 | Seagate Technology Llc | Method and apparatus for sequential stream I/O processing |
US9904689B2 (en) | 2012-07-13 | 2018-02-27 | Facebook, Inc. | Processing a file system operation in a distributed file system |
US9647900B2 (en) * | 2012-12-13 | 2017-05-09 | Level 3 Communications, Llc | Devices and methods supporting content delivery with delivery services |
US10706009B2 (en) | 2013-03-14 | 2020-07-07 | Oracle International Corporation | Techniques to parallelize CPU and IO work of log writes |
CN103414657A (zh) * | 2013-08-22 | 2013-11-27 | 浪潮(北京)电子信息产业有限公司 | 一种跨数据中心的资源调度方法、超级调度中心和系统 |
US10133741B2 (en) * | 2014-02-13 | 2018-11-20 | Amazon Technologies, Inc. | Log data service in a virtual environment |
US9495192B2 (en) * | 2014-09-30 | 2016-11-15 | Vmware, Inc. | NUMA I/O aware network queue assignments |
-
2014
- 2014-12-12 US US14/569,582 patent/US9736243B2/en active Active
-
2015
- 2015-12-11 CN CN201580067452.4A patent/CN107408070B/zh active Active
- 2015-12-11 EP EP15821192.0A patent/EP3230868B1/en active Active
- 2015-12-11 WO PCT/US2015/065222 patent/WO2016094785A2/en active Application Filing
Non-Patent Citations (1)
Title |
---|
Windows Azure Storage: A Highly Available Cloud Storage Service with Strong Consistency;布拉德•考德;《ACM第23届操作系统原则研讨会论文集》;20111031;143-157页 * |
Also Published As
Publication number | Publication date |
---|---|
US9736243B2 (en) | 2017-08-15 |
US20160173599A1 (en) | 2016-06-16 |
WO2016094785A2 (en) | 2016-06-16 |
WO2016094785A3 (en) | 2016-08-25 |
EP3230868B1 (en) | 2018-10-17 |
EP3230868A2 (en) | 2017-10-18 |
CN107408070A (zh) | 2017-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107408070B (zh) | 分布式存储系统中的多事务日志 | |
US11153380B2 (en) | Continuous backup of data in a distributed data store | |
US20230315758A1 (en) | Synchronous replication in a distributed storage environment | |
US11120152B2 (en) | Dynamic quorum membership changes | |
US11755415B2 (en) | Variable data replication for storage implementing data backup | |
US10198356B2 (en) | Distributed cache nodes to send redo log records and receive acknowledgments to satisfy a write quorum requirement | |
US10229011B2 (en) | Log-structured distributed storage using a single log sequence number space | |
KR101914019B1 (ko) | 분산 데이터베이스 시스템들을 위한 고속 장애 복구 | |
KR101771246B1 (ko) | 분산 데이터 시스템들을 위한 전 시스템에 미치는 체크포인트 회피 | |
KR101923334B1 (ko) | 데이터베이스 엔진 및 개별 분산 저장 서비스를 갖는 데이터베이스 시스템 | |
US9424140B1 (en) | Providing data volume recovery access in a distributed data store to multiple recovery agents | |
US20140208012A1 (en) | Virtual disk replication using log files | |
US20100023564A1 (en) | Synchronous replication for fault tolerance | |
US10885023B1 (en) | Asynchronous processing for synchronous requests in a database | |
US10803012B1 (en) | Variable data replication for storage systems implementing quorum-based durability schemes | |
US10223184B1 (en) | Individual write quorums for a log-structured distributed storage system | |
US20230034463A1 (en) | Selectively using summary bitmaps for data synchronization |
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 |