用于提供分布式、分散式数据存储与检索的系统和方法

文档序号:6567263阅读:327来源:国知局
专利名称:用于提供分布式、分散式数据存储与检索的系统和方法
技术领域
本发明一般涉及用于提供分布式、分散式数据存储与检索的系统和方法。更
具体地,本发明涉及为激活基于对等结构的(peer-based)服务(例如,富媒体(rich media)广告、照片和视频共享与存储以及视频电子邮件)提供节省成本机制的分 布式存储和检索模型。
背景技术
多种情形都可经由基于对等结构的分布式存储系统激活。这些情形的示例包 括基于对等结构的文本与富媒体广告存储/高速缓存/复制、基于对等结构的数字照 片和视频的存储与共享、以及基于对等结构的视频电子邮件。这些情形在集中式服 务的情况下成本高的不切实际,因为在数据中心内的存储成本会变得极大。
许多网站正在朝带高度目标化广告的纯粹基于广告的模型转变,其中上述高 度目标化的广告基于先前向用户学习的知识而出现。例如,已知能够收集与人有关 的大量人口统计学数据,并且单是基于在网站单击流路径(dickstream)中收集的 数据就能够推断出相当多的信息。高度目标化的广告例如可以搜索关键词为基础。 这一情形通常需要大量存储。
以集中化的方式存储这些广告已被在先实现。然而在诸如新兴市场的某些市 场中存在着困难,这是因为需要不同的成本结构才能将这些广告有效地存储、发送 并高速缓存入本地机器。在许多情况下,集中这些广告并支付在数据中心的存储成 本会因为这些广告通常定位于各种环球市场使得成本过高而难以实现。为面向全世 界发送广告支付带宽成本通常不是一个有效或经济的方法。
照片共享的现有解决方案分属两个阵营集中式存储(例如,photos.msn.com) 或者点对点("P2P")照片共享(例如,Google "Picasa"的当前版本)。集 中式存储具有明显的局限性如果免费提供,则可用于照片存储的总空间会变 得极为有限。另一方面,典型的使用费远高于用户仅购买属于他们自己磁盘的 花费。如果他们购买属于他们自己的磁盘,则他们需要对照片备份负责并且因为大多数宽带连接限制了上传速度,所以会极大地限制能浏览这些照片的人 数。
诸如Groove或Google Picasa当前版本的P2P照片共享解决方案使得所有 机器上的整个照片副本都得以参与一对等组。虽然该方法避开了上述的存储成 本和带宽问题,但是它也引入不同的问题。例如,如果参与该组的人数不多, 则在参与者照片本地副本丢失的情况下存在这些照片不可用的公平机率(取决 于各对等结构的正常运行时间)。此外,这种强力解决方案要求全部100%的 对等结构存储全部100%的照片。这就导致整个对等组使用大量的冗余存储, 并且无法衡量。
经电子邮件递送的视频消息会遭受与以上结合照片共享所述问题相同的 许多问题,但是它们的更大(使得存储成本更高)。除非服务来自中央数据中 心,否则递送往往会不可靠。虽然现场P2P视频电话会议没有存储问题(因为 视频在发送同时就被消耗),但是在质量(受带宽所限)及通话方同步性上受 到进一步的限制。
于是,在本领域内就需要能够为激活基于对等结构的服务(例如,富媒体广 告、照片/视频共享/存储、以及视频电子邮件)提供节省成本机制的分布式存储模 型。
发明概述
本发明提供用于提供分散式、分布式数据存储与检索的系统和方法。这一系 统包括互连的节点网络。每一节点都具有在其上运行的一批一个或多个进程,这些 进程形成"本地高速缓存和传输层"、"流存储层"、"组块存储层"、以及"碎 片存储层"。 一批进程还可提供用于"块"存储。
本地高速缓存和传输层可以包括存储服务和路由选择服务。存储服务可以接 收存储请求以存储任意长度的某一比特流。路由选择服务可以将该比特流传递至任 何流存储服务。该流存储服务可以在本地永久存储设备中存储这些比特流用于随后 的检索,并且还将该比特流分成一个或多个"组块"。该流存储服务随后将这些组 块传递至各自的组块存储服务。组块存储服务可以在本地永久存储设备中存储这些 组块用于随后的检索,并且还将该组块分成一个或多个"碎片"。该组块存储服务 随后可以将这些碎片编码成检验块并将它们传递至各自的碎片存储服务。碎片存储 服务可以在本地永久存储设备中存储这些碎片用于随后的检索。这样,比特流就被分成多个检验块,并且每一检验块通常都被存储在分布在这些节点的巨大网络中的 不同网络节点上。
这一分散式、对等式、分布式存储系统可用于数字广告的本地存储和高速缓 存,即将这些数字广告存储并高速缓存在诸如位于浏览这些广告的实际国家或城市 之内的客户机PC中。对于数字照片与视频的存储和共享而言,下层的分布式存储 机制可以在无需请求大量冗余的情况下实现照片的极高可靠性和可用性。对于视频 电子邮件而言,该分布式存储模型则可建立适用于大型视频消息的可靠邮件递送系 统。
附图简述


图1是示出了在其中可以实现本发明各方面的示例性计算环境的框图。
图2描绘了一个分布式网络的示例。
图3A和3B描绘了一个示例性的分布式存储系统。
说明性实施例的详述
示例性计算环境
图1和随后的讨论旨在提供其中可实现本发明示例性实施例的合适计算环境 的简要描述。然而应该理解的是也可考虑结合本发明使用手持、便携以及其他所有 种类的计算设备。虽然下文中阐述通用计算机,但这只是一个示例。本发明还可以 在具有网络服务器互操作性和交互性的瘦客户机上使用。于是,本发明的示例性实 施例可以在其中包含很少或最少客户机资源的网络主机服务环境中实现,而该网络 主机服务环境指的是例如在其中客户机设备仅用作万维网的浏览器或界面的网络 环境。
虽然不要求,但是本发明可经由开发者或测试员使用的应用软件编程接口 (API)实现,和/或本发明可以包括在将在计算机可读指令(诸如,程序模块)的 语境中阐述的网络浏览软件内,这些软件可由一个或多个计算机执行(例如,客户 机工作站、服务器或其他设备)。程序模块通常包括可以执行特定任务或实现特定 抽象数据类型的例程、程序、对象、组件、数据结构等。通常在各实施例中,可以 按照需要结合或分配程序模块功能。此外,本领域普通技术人员将会认识到还可使 用其他的计算机系统配置来实践本发明。其他适合于本发明使用的已知的计算系统、环境和/或配置包括但不限于个人计算机(PC)、自动取款机、服务器计算机、 手持或膝上型设备、多处理器系统、基于微处理器的系统、可编程电子消费品、网 络PC、小型机、大型机等等。本发明的实施例还可在其中任务由通过通信网络或 其他数据传输介质链接的远程处理设备所执行的分布式计算环境中实践。在分布式 计算环境中,程序模块可以位于包括了存储器存储装置的本地和远程计算机存储介 质上。
这样图1就示出了在其中可实现本发明的合适计算系统环境100的实例,虽 然如上所阐明的那样,计算系统100仅作为合适计算环境的一个示例,并不意味着
对本发明的使用范围和功能作出任何限制。也不应该将计算环境ioo解释为对在示
例操作环境100中示出的组件中的任何一个或它们的组合具有任何依赖或要求。
参见图1,一个用于实现本发明的示例性系统包括计算机110形式的通用计算 设备。计算机110的组件包括但不限于处理单元120、系统存储器130、以及把 包括系统存储器在内的各种系统组件耦合至处理单元120的系统总线121。系统总 线121可以是任何类型的总线结构,包括存储器总线或存储器控制器、外围总线和 使用各种的总线体系结构的任何一种本地总线。作为示例而非限制,这样的体系结 构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、扩展的ISA (EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI) 总线(也被称为Mezzanine总线)。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是能够被计 算机IIO访问的任何可用介质,且包括易失性和非易失性介质、可移动和不可移动 介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。 计算机存储介质包括以任何方法或技术实现的用于存储诸如计算机可读指令、数据 结构、程序模块或其它数据等信息的易失性和非易失性、可移动和不可移动介质。 计算机存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、 电可擦除可编程只读存储器(EEPROM)、闪存或其它存储器技术;致密盘只读 存储器(CDROM)、数字多功能盘(DVD)或其它光盘存储;磁带盒、磁带、磁 盘存储或其它磁性存储设备;或能用于存储所需信息且可以由计算机IIO访问的任 何其它介质。通信介质通常具体化为诸如载波或其它传输机制等己调制数据信号中 的计算机可读指令、数据结构、程序模块或其它数据,且包含任何信息传递介质。 术语"已调制数据信号"指的是这样一种信号,其一个或多个特征以在信号中编码信息的方式被设定或更改。作为示例,而非限制,通信介质包括诸如有线网络或直 接线连接的有线介质,以及诸如声学、射频(RF)、红外线和其它无线介质的无 线介质。上述中任一个的组合也应包括在计算机可读介质的范围之内。
系统存储器130包括易失性或非易失性存储器形式的计算机存储介质,诸如 ROM 131和RAM 132。基本输入/输出系统133 (BIOS)包含有助于诸如启动时在 计算机110中元件之间传递信息的基本例程,它通常存储在ROM 131中。RAM 132
通常包含处理单元120可以立即访问和/或目前正在操作的数据和/或程序模块。作 为示例而非限制,图1示出了操作系统134、应用程序135、其它程序模块136和 程序数据137。 RAM 132可以含有其他数据和/或程序模块。
计算机110也可以包括其它可移动/不可移动、易失性/非易失性计算机存储介 质。仅作为示例,图l示出了从不可移动、非易失性磁介质中读取或向其写入的硬 盘驱动器141,从可移动、非易失性磁盘152中读取或向其写入的磁盘驱动器151, 以及从诸如CD ROM或其它光学介质等可移动、非易失性光盘156中读取或向其 写入的光盘驱动器155。可以在示例性操作环境下使用的其它可移动/不可移动、易 失性/非易失性计算机存储介质包括但不限于;盒式磁带、闪存卡、数字多功能盘、 数字录像带、固态RAM、固态ROM等。硬盘驱动器141通常由诸如接口 140的 不可移动存储器接口连接至系统总线121,磁盘驱动器151和光盘驱动器155通常 由诸如接口 150的可移动存储器接口连接至系统总线121。
以上描 述和在图1中示出的驱动器及其相关联的计算机存储介质为计算机 110提供了对计算机可读指令、数据结构、程序模块和其它数据的存储。例如在图 1中,硬盘驱动器141被示为存储操作系统144、应用程序145、其它程序模块146 和程序数据147。注意这些组件可以与操作系统134、应用程序135、其它程序模 块136和程序数据137相同或不同。操作系统144、应用程序145、其它程序模块 146和程序数据147在这里被标注了不同的标号是为了说明至少它们是不同的副 本。用户可以通过输入设备,诸如键盘162和定点设备161 (通常指鼠标、跟踪球 或触摸垫)向计算机110输入命令和信息。其它输入设备(未示出)可以包括麦克 风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等。这些和其它输入设备通常由耦 合至系统总线121的用户输入接口 160连接至处理单元120a-f,但也可以由其它接 口或总线结构,诸如并行端口、游戏端口或通用串行总线(USB)连接。
监视器191或其它类型的显示设备也经由接口,诸如视频接口 190连接至系 统总线121。除监视器191以外,计算机也可以包括其它外围输出设备,诸如扬声器197和打印机196,它们可以通过输出外围接口 195连接。
计算机110可在使用至一个或多个远程计算机,诸如远程计算机180的逻辑 连接的网络化环境下操作。远程计算机180可以是个人计算机、服务器、路由器、 网络PC、对等设备或其它常见网络节点,且通常包括上文相对于计算机IIO描述 的许多或所有元件,尽管在图1中只示出存储器存储设备181。图1中所示逻辑连 接包括局域网(LAN) 171和广域网(WAN) 173,但也可以包括其它网络。这样 的连网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。
当在LAN连网环境中使用时,计算机IIO通过网络接口或适配器170连接至 LAN 171。当在WAN连网环境中使用时,计算机IIO通常包括调制解调器172或 用于在诸如因特网等WAN 173上建立通信的其它装置。调制解调器172可以是内 置或外置的,它可以通过用户输入接口 160或其它合适的机制连接至系统总线121。 在网络化环境中,相对于计算机IIO描述的程序模块或其部分可以存储在远程存储 器存储设备中。作为示例而非限制,图1示出了远程应用程序185驻留在存储器设 备181上。可以理解示出的网络连接是示例性的,且可以使用在计算机之间建立通 信链路的其它手段。
本领域普通技术人员应该认识到计算机110或者其他客户机设备可被布置为 计算机网络的一部分。在此方面,本发明属于具有任何数量存储器或存储单元的任 何计算机系统,以及在任何存储单元或巻上出现的任何数量的应用程序和进程。本
发明的实施例还可应用于带有在具有远程或本地存储装置的网络环境中布置的服 务器计算机和客户机计算机的环境。本发明也可应用于具有编程语言功能、解释和 执行能力的独立计算设备。 分布式网络
图2描绘了含有多个网络节点10A-H的分布式网络的一个示例。这一节点例 如可以是个人计算机,或者包括处理和数据存储能力的任何其他网络设备,诸如服 务器、路由器、网络PC、对等设备等。节点IOA-H可以是经由诸如内联网或因特 网的局域网或广域网彼此相连的对等结构。
每个节点IOA-H可分配有一个唯一地址。可以选择该地址的长度以确保每个 节点都具有唯一地址。在一个示例中,在其中网络预期包括数千万节点的基于因特 网的系统可以使用160位地址。这一寻址方案可以在TCP顶部形成一路由覆盖图。
在各节点IOA-H之间分布的进程可以经由简单对象访问协议("SOAP")消息通过网络彼此通信。SOAP是一个周知、轻型、基于XML的分布式计算协议。 SOAP消息是包括SOAP包络的XML文档。该包络包括可任选的SOAP报头、以 及强制性的SOAP主体。SOAP消息的报头表示该消息的元数据并且提供一个扩展 SOAP的方法。SOAP消息的主体是实际的消息有效负载。分布式进程可以通过在 网络上放置SOAP分组来彼此通信。
进程可以是消息始发器(例如,如图中节点IOA上所示)、预定的消息接收 器(例如,如图中节点10G上所示)、或者是中间物(例如,如图中节点10C上 所示)。消息始发器是最初将该SOAP消息放在网络上的进程。预定的消息接收 器是该消息最终去往的进程。因此,起源于该消息始发器的SOAP消息可以包括 与预定的消息接收器相关联的地址。
然而也可能出现消息始发器不知道预定的消息接收器的情况,特别是在大型 网络中。实际上,消息始发器甚至可能不知道预定的消息接收器是否存在。因此, 为了获得向预定接收器(在10G上)发送的消息,中间节点(10C)上的进程可以 接收该消息(12C),修改和/或复制该消息,并将该消息的一个或多个副本(12D-F) 放回网络上。于是,该消息可以围绕网络"跳跃"直到消息(12G)最终跳至预定 的消息接收器(在10G上)。已经发现,对于一个具有约一千万节点的网络而言, 平均的跳跃记数约为3,而最大的跳跃记数约为5.8。
为了优化将消息从始发器送至预定消息接收器所需的跳跃数,各节点可以"闲 谈"。即,各节点不时地把有关它们的信息传送到网络上。例如, 一节点可以闲谈 它的正常运行时间或带宽以及它邻居们的状态。各节点还听取由它们邻居传送的这 类信息。因此,每个节点都知道并保有与其某些对等结构有关的信息。
这一闲谈使得消息始发器能够在不具备预定消息接收器地址的特别知识的情 况下将消息送至该预定的消息接收器。例如,如果消息始发器想要把消息送至某一 设备,则该消息始发器只需让该消息尽可能接近该设备(例如,将其寻址至可能知 道有关该预定的消息接收器某些信息,或者知道有关该预定的消息接收器某些信息 的另一节点的某些信息的另一节点等等)。因为预定的消息接收器的邻居们知道该 预定的消息接收器,所以该消息最终将会跳跃至该预定的消息接收器。于是,可以 建立一弹性网络,该网络即使在例如消息始发器不知道如何直接到达预定的消息接 收方或者因为例如防火墙之类的原因无法直接到达预定的消息接收方的情况下仍 然能够递送消息。
在每个节点10A-H上的服务还可以维护代表一个或多个相邻节点的本地路由选择表14A-H。如下将更为详细地描述该本地路由选择表。 用于分布式数据存储的系统和方法
图3A和3B描绘了用于分布式数据存储的一个示例性系统。如图所示,这一 系统可以包括互连的诸如上述节点的节点网络(例如,30A、 30B……30N)。每 个节点30A-N都具有在其上运行的任何数目的进程。例如,每个节点30A-N都具 有在其上运行的形成"本地高速缓存和传输层"20的一批一个或多个进程、形成 "流存储层"32的一批进程、形成"组块存储层"34的一批进程、以及形成"碎 片存储层"36的一批进程。还包括用于检验块存储的一批进程(未示出)。
本地高速缓存和传输层20可以包括存储服务22和路由选择服务24。存储服 务22和路由选择服务24可以驻留在相同节点或不同节点上。存储服务22可以经 由网络从相同节点或不同节点中接收存储请求(比特流)。该存储请求可以包括存 储某一比特流的请求。这一比特流通常可以具有任意长度M。路由选择服务24可 以将该比特流传递至一个或多个流存储服务32A-N中的任何服务。接收该比特流 的流存储服务可以与路由选择服务驻留在同一节点上,也可以驻留在不同节点上。
在接收节点(32A,如图所示)处的流存储服务可以接收包含该比特流的一个 或多个分组(即,该比特流可以长到需要一个以上的分组来将其传递至流存储服 务)。流存储服务32A可以在本地永久存储设备中存储比特流用于随后的检索。 流存储服务32A还可以将该比特流分成一个或多个"组块"。每个组块的长度可 以是m (<M)位。在一个示例性实施例中,每个组块的长度可以是约64K位。流 存储服务32A随后可以将这一个或多个组块中的每个组块传递至各自的组块存储 服务34A-N。接收组块的组块存储服务可以与流存储服务32A —样驻留在同一节 点上,也可以驻留在不同节点上。
在接收节点(34A,如图所示)处的组块存储服务可以接收含有该组块的一个 或多个分组并且可以在本地永久存储设备中存储该组块用于随后的检索,组块存储 服务34A还可以将该组块分成一个或多个"碎片"。每个碎片的长度可以是1 (<M) 位。在一个示例性实施例中,每个碎片的长度可以是约2K位。该组块存储服务34A 随后可以将这些碎片编码成检验块并将这一个或多个检验块中的每个检验块传递 至各自的碎片存储服务36A-N。接收碎片的碎片存储服务可以与组块存储服务34A 一样驻留在同一节点上,也可以驻留在不同节点上。
在接收节点(36A,如图所示)处的碎片存储服务可以接收含有该碎片的一个 或多个分组并且可以在本地永久存储设备中存储这些碎片用于随后的检索。接收节点处的碎片存储服务36A-N可以接收含有各自检验块的一个或多个分组,并且每 个服务都可以在本地永久存储设备中存储各自的检验块用于随后的检索。这样,M 位比特流就被分成多个k位检验块,并且每一检验块通常都被存储在分布在这些节 点的巨大网络中的不同网络节点上。
优选地,每个组块所分成的检验块个数应该多到足以确保可靠检索的程度。 可以利用任意种已知算法来确定应该被存储的检验块个数,以便有完全把握确保能 够从检验块中重建原始比特流。这些算法是本领域普通技术人员已知的,因此无需 在此详细描述。
为了确保数据检索系统(如下所述)将能够在随后找到所存储的数据,可以 使用寻址方案来确定存储该数据的位置(例如,在哪些节点上)。路由选择服务例 如可以基于该比特流本身计算该比特流将路由到的节点地址。例如,在诸如上述通 过唯一地址识别每个节点的情形中,可以基于该比特流计算散列并且参考一散列表 来确定与散列值相对应的节点地址。
比特流可以具有比特流标识符。例如,比特流可以是一文件;该文件可以具 有文件名。因此,可以考虑将该文件名作为比特流标识符。用户(即,设法存储该 比特流的人)可具有用户标识符。例如,存在与该用户相关联的公钥。在一个示例 性实施例中,可以将比特流标识符和用户标识符连在一起,并计算连接串的散列。 算出的散列值可用于确定该比特流所要送至的以供上述存储和后续存储处理的节 点的地址。类似地,可以为由该比特流分解成的每个组块、碎片和检验块计算各自 的散列值。随后将各组块、碎片和检验块送至其地址与算出的散列值相对应的节点。
在具有数百万节点的网络环境中,每个节点存储并保留包括与每个节点相关 联的各地址的散列表是不切实际的(且不想要的)。因此,在一个示例性实施例中,
在每个IOA-H上的服务可以保留代表一个或多个相邻节点(参见图2)的本地路由 选择表14A-H。优选地,每个节点都了解地址空间(即,用于唯一识别各节点的寻 址方案),但是每个节点保留仅与其少数邻居有关的路由选择表。这样,散列表就 可以在各节点之间分布。
通过使用分布式散列表,每个节点都能够了解整个地址空间的一小部分。然 而如上所述,下层结构具有消息始发器无需知晓预定接收器地址的性质。消息始发 器可以基于要存储的比特流(或组块、或碎片、或块)计算散列,并参考其局部散 列表。如果找出该地址,则该消息始发器将该消息直接送至预定接收器。要不然, 该消息始发器就把消息放在该结构上,并且该消息跳跃通过一个或多个中间物直到其找出去往预定接收器的方法。
最终,如上所述,数据(例如,检验块、碎片、组块或比特流)在目的地节 点处被留存(即,在存储设备中永久存储)。当数据被留存时,目的地节点可将一 消息放在该结构上以通知始发节点该数据已被留存。当始发节点接收该信息消息 时,它认可该数据已被留存。
例如,当在目的地节点上留存检验块时,碎片存储服务向曾请求存储检验块 的组块存储服务报告检验块已被留存。类似地,当与给定组块相关联的所有检验块 都被留存时,该组块存储服务可以向曾请求存储组块的流存储服务报告组块存储己 被留存等。最后,向在本地高速缓存和传输层处的路由选择服务报告该比特流己被 存储。
为了确认存储已适当出现,请求存储的服务可以在发出数据以供存储时起始 一定时器。例如,当组块存储服务发出其碎片以供存储时,该组块存储服务可以起 始一碎片存储确认定时器。如果组块存储服务未在定时器期满之前接收到一特定碎 片已被存储的确认,则该组块存储服务认定该碎片未被存储,并尝试在别处存储该 碎片。
然而应该理解,上述分布式系统可以具备"变更"时间的能力。也就是说, 每个节点可以具有保持该节点时间相对于绝对系统时间的时间管理器。这样,在一 特定节点上的时间相对于绝对系统时间以及其他节点的时间帧可以减慢、停止甚至 倒流。因此,因为在请求存储的节点处的时间可以被其上要存储数据的节点(或中 间节点)处的时间要跑地更快,则请求存储的节点处的定时器在该数据被留存之前 就可能到期,即使在正常的存储进程时间只不过跑的更慢的情况下。为适应该情况, 存储节点能周期性地将一消息送至请求存储的节点,以通知该请求存储的节点即使 存储尚未完成也不应该超时。
为了检索比特流(或者如下所述,比特流的一部分),本地高速缓存和传输 层20中的路由选择服务24可以将要从数据存储所在的节点检索该数据的消息放在 网络上。为检索该数据,路由选择服务24可以计算与该数据相关联的关键字。例 如如上述,路由选择服务可以计算比特流标识符和用户标识符的散列。算出的散列 值可用于确定该比特流曾被送至的以供存储和后续存储处理的节点的地址。
该路由选择服务随后可以参考路由表以确定与该散列相关联的地址(或者最 接近的邻居地址),并请求来自该地址的比特流。如果该比特流仍然存储在与流存 储服务相关联的本地髙速缓存中,则该流存储服务用一个或多个分组将该比特流返回给请求它的节点。如果该比特流没有仍然存储在与流存储服务相关联的本地高速 缓存中,则该流存储服务计算与该比特流所分解成的各组块相关联的散列值,并且 从存储进程期间这些组块送至的组块存储服务中请求这些组块。
如果组块保留在与该组块存储服务相关联的本地高速缓存内,则将该组块返 回给请求它的节点。如果不是,则组块存储服务计算与有关该组块的碎片相关联的 散列,并且从其上曾存储有这些碎片的节点中请求这些碎片。
该进程继续一一检索检验块以重构各碎片,检索各碎片以重构各组块,检索 各组块以重构该比特流,直到该比特流被重构并被返回给请求它的节点。如上所述, 下层结构的性质是向关键字的路由选择会将消息导向其上存储数据的节点。
如上所述,可以将比特流分成多个连续的检验块(碎片、组块)。因此,检 索进程无需检索整个比特流,而只需检索检验块(碎片、组块)的一个子集。 一般 而言,检索进程可以从该比特流内的任何检验块(碎片、组块)处开始,并且可以 在任何其他检验块(碎片、组块)处结束。为了只检索比特流的一部分,该检索服 务只需确定与组成比特流那一部分的各检验块(碎片、组块)相关联的地址,并且 请求从那些检验块(碎片、组块)中重构比特流的那一部分。因为散列进程通过散 列该组块的在前层和序数(即,偏移量)的标识符,即较低层中的检验块来起作用, 所以有可能找出任何片的散列值。
可以预料当数据被检索时,其上留存检验块的节点可能不再位于网络上(例 如,该数据可能己被盖写、删除或破坏;该节点在请求该数据时可能不可用;该节 点可能已从网络上永久移除等)。优选地,如上所述,每个组块所分成的检验块个 数多到足以完全确保可靠检索的程度,即使在多个检验块无法恢复的情况下。还可 以预料可以在数据存储和检索时段内将一个或多个节点添加至该网络。如果一个更 接近关键字的新节点已被引入,则由于下层结构的性质,先前存在的节点(在存储 数据时就存在的节点)将认识到这一新节点已被引入并且该新节点更接近想要检索 的数据。因此,该新节点可以将一条或多条合适消息"推给"该新节点,从而使得 把消息跳跃至其上存储数据的节点的进程得以继续。
根据本发明的一个方面, 一种分散式、对等式、分布式存储机制可用于广告 的存储和高速缓存,例如在驻留于这些广告会被浏览的现实国家或城市内的客户机 PC中本地存储并高速缓存这些广告。以此方式,就能够向指定的区域、街区或个 人存储不仅仅是文本或标题广告,还能够存储富媒体电视型广告(如带立体声的全 运动视频)。对于数字照片与视频的存储和共享而言,下层的分布式存储机制可用来在无
需请求大量冗余的情况下(诸如,Google Picasa的当前版本)实现照片的极高可靠 性和可用性。这一情形在市场上出现越来越多基于电话的照相机的情况下将变得尤 为重要。即使是本身带有大容量本地存储的基于电话的照相机,用户仍会面临照片 备份和电子共享照片的问题。这在移动电话的使用由于无线基础设施的扩建较易而 猛增的新兴市场中尤为引人关注。
对于视频电子邮件而言,该分布式存储模型则可用来建立适用于大型视频消 息的可靠邮件递送系统。在这一系统中,质量问题会因为该系统不再受到发送方或 接收方的带宽限制而得以解决。它还允许不受同时同地限制的接收。该情形对于复 杂脚本使得难以用键盘打出文本消息以及高文盲率使得难以发送任何种类的文本 消息的新兴市场而言相当重要。
这样,业已描述了在可扩展SOAP环境中用以分布式、分散式数据存储与检 索的系统和方法。应理解的是,这些系统和方法不仅分散请求用于数据存储和检索 的带宽,还分散计算要求。因此,这些系统和方法减轻了对一个节点进行所有存储 和检索处理的需要,并且不再需要单个节点发送或接收所有数据。
应该进一步理解的是,虽然已结合在各附图中描绘的某些较佳实施例对本 发明做出了描述,但是仍可以使用其他类似的实施例,并且可以在不背离本发 明的情况下对描述的实施例做出修改或添加以实践本发明。例如,可以在存储 数据时对其进行加密、签名等,从而使得该检索进程可以验证被检索的数据实 际上就是期望的数据。因此,本发明不应限于任何单个实施例,而应该根据所 附权利要求书来解释其宽度和范围。
权利要求
1. 一种用于分散式、分布式数据存储的基于网络的系统,所述系统包括本地高速缓存和传输层,用于接收存储比特流的请求,并且将含有所述比特流的流存储消息路由到所述网络上;以及流存储层,用于接收所述流存储消息,将所述比特流分成多个组块,并且将多个组块存储消息发送到所述网络上,每个所述组块存储消息分别含有所述多个组块之一;其中所述组块中的每一个组块分别被存储在第一组网络节点之一上。
2. 如权利要求l所述的系统,其特征在于,还包括组块存储层,用于接收所述组块存储消息,将每个组块分别分成多个碎片, 将所述碎片编码成检验块并且将多个碎片存储消息发送到所述网络上,每个所 述碎片存储消息分别含有所述多个碎片之一;其中所述碎片中的每一碎片分别被存储在第二组网络节点之一上。
3. 如权利要求2所述的系统,其特征在于,还包括碎片存储层,用亍接收所述碎片存储消息,并且将所述检验块中的每-个 检验块存储在第三组网络节点上。
4. 如权利要求3所述的系统,其特征在F,所述比特流被存储在与所述 流存储层相关联的网络节点上。
5. 如权利要求2所述的系统,其特征在于,所述每个碎片被编码成的检验块个数足以在预定的信任程度内确保对所述碎片的检索。
6. 如权利要求1所述的系统,其特征在于,所述本地高速缓存和传输层 基于所述比特流计算散列值,并且其中所述散列值用于确定一地址,所述地址 与所述流存储消息想要发送至的节点相关联。
7. 如权利要求1所述的系统,其特征在于,所述本地高速缓存和传输层 从所述流存储层中接收所述比特流己被存储的确认。
8. 如权利要求7所述的系统,其特征在于,所述本地高速缓存和传输层 在所述比特流被发出用于存储时起始-一定时器,并且如果所述本地高速缓存和 传输层在所述定时器期满之前没有从所述流存储层中接收到所述比特流已被 存储的确认,所述本地高速缓存和传输传输层就尝试在一个不同的节点上存储 所述比特流。
9. 如权利要求8所述的系统,其特征在于,每个节点都具有相对于绝对系 统时间保持本节点时间的时间管理器,并且其中所述流存储层报告所述本地高速缓 存和传输层不要超时,因为所述比特流仍然在正被存储的进程中。
10. 如权利要求6所述的系统,其特征在于,每个节点保有代表一个或多个相邻节点的本地路由选择表,所述本地路由选择表中的至少一个含有用来确 定与所述流存储消息预定发送到的所述节点相关联的地址的所述散列值。
11. 如权利要求l所述的系统,其特征在于,所述组块存储消息中的至少 一个通过在所述网络中经一个或多个中间网络节点的跳跃而被递送至预定的 消息接收器。
12. —种分散式、对等式、分布式存储系统,所述系统包括 第一批服务,用于接收存储数字广告的请求,并将含有与所述数字广告相关联的比特流的流存储消息路由到所述网络上;以及第二批服务,用于接收所述流存储消息,将所述比特流分成多个检验块, 并且将所述检验块分别分布至多个网络节点之一以供存储。
13. 如权利要求12所述的系统,其特征在于,所述网络节点的至少一个包括驻留在要浏览所述广告的本地地理位置范围内的存储设备中。
14. 如权利要求12所述的系统,其特征在于,所述广告是文本广告、标 题广告、以及包括全运动视频和立体声音频的富媒体广告中的至少一种。
15. 如权利要求12所述的系统,其特征在于,所述广告定位于特定的地 理区域或者面向特定的个人。
16. —种分散式、对等式、分布式存储系统,所述系统包括 第一批服务,用于接收存储数字照片和数字视频中至少一个的请求,并将含有与所述数字照片或数字视频相关联的比特流的流存储消息路由到所述网 络上;以及第二批服务,用于接收所述流存储消息,将所述比特流分成多个检验块, 并且将所述检验块分别分布至多个网络节点之一以供存储。
17. 如权利要求16所述的系统,其特征在于,所述数字照片或数字视频 来源于基于电话的照相机。
18. 如权利要求17所述的系统,其特征在于,所述基于电话的照相机是 基于无线电话的照相机。
19. 一种分散式、对等式、分布式存储系统,所述系统包括第一批服务,用于接收存储视频电子邮件消息的请求,并将含有与所述视 频电子邮件消息相关联的比特流的流存储消息路由到所述网络上;以及第二批服务,用于接收所述流存储消息,将所述比特流分成多个检验块, 并且将所述检验块分别分布至多个网络节点之一以供存储。
全文摘要
公开了在可扩展SOAP环境中用于分布式、分散式数据存储与检索的系统和方法。这些系统和方法不仅分散请求用于数据存储和检索的带宽,还分散计算环境。因此,这些系统和方法减轻了对一个节点进行所有存储和检索处理的需要,并且不再需要单个节点发送或接收所有数据。
文档编号G06F17/30GK101427246SQ200680013658
公开日2009年5月6日 申请日期2006年3月9日 优先权日2005年4月20日
发明者G·M·摩尔, I·塞尔瑞 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1