死点网络架构中的两次写数据交换的制作方法

文档序号:14420411阅读:170来源:国知局
死点网络架构中的两次写数据交换的制作方法

相关申请的交叉引用

本申请要求于2015年7月17日提交的美国临时申请号62/193,927、于2015年7月17日提交的美国临时申请号62/193,930、以及于2015年9月3日提交的美国临时申请号62/214,124的权益,其全部内容通过引用整体并入本文。本申请涉及于2016年4月22日提交的美国申请号15/136,311,其通过引用并入本文。本申请还涉及于2016年4月22日提交的美国申请号15/136,347,其通过引用并入本文。

本发明总体上涉及计算机联网和数据存储的领域,并且特别地涉及用于在分散式计算机网络上促进安全的数据交换的网络架构。



背景技术:

因特网(包括web)使得计算机的用户能够迅速地并且容易地交换数据。存在利用该能力交换数据以实现用于个体和企业的强大结果等的各种各样的应用。示例包括电子邮件、文件共享、家庭自动化、娱乐、数据管理,等等。

然而,数据在因特网上被交换的方式使得数据以及发送数据的那些易受恶意角色影响。例如,各方之间移动或者被存储在远程服务器上的数据通常包括与发送者和接收者相关联的信息。因此,数据的解析器可以将数据与各方相关联。如果数据包含敏感信息,则其可以使各方开放以标识盗窃或者其他恶意行为。因此,许多用户被阻止经由因特网共享重要信息,从而略去提供到计算机用户的许多优点。



技术实现要素:

根据本发明的实施例,描述了一种用于将数据有效负载写入到死点(deaddrop)域的方法。该方法包括向死点域发送数据有效负载以及用于将数据有效负载写入到死点域的第一请求,并且作为响应接收对应于死点域中的第一死点的第一访问信息,数据有效负载被存储在第一死点处。方法还包括生成对应于数据有效负载的第一元数据,第一元数据包括第一访问信息。方法还包括发送用于将第一元数据写入到死点域的第二请求,并且作为响应接收对应于死点域中的第二死点的第二访问信息,第一元数据被存储在第二死点处。

根据本发明的实施例,描述了一种用于在发送者与接收者之间交换数据的系统。系统包括用于执行计算机程序指令的处理器。系统还包括非暂态计算机可读存储介质,其存储由处理器可执行以执行步骤的计算机程序指令。步骤包括向死点域发送数据有效负载以及用于将数据有效负载写入到死点域的第一请求,并且作为响应接收对应于死点域中的第一死点的第一访问信息,数据有效负载被存储在第一死点处。步骤还包括生成对应于数据有效负载的第一元数据,第一元数据包括第一访问信息。步骤还包括发送用于将第一元数据写入到死点域的第二请求,并且作为响应接收对应于死点域中的第二死点的第二访问信息,第一元数据被存储在第二死点处。

根据本发明的实施例,一种非暂态计算机可读存储介质存储用于在发送者和接收者之间交换数据的计算机程序指令。计算机程序指令可执行以执行步骤。步骤包括向死点域发送数据有效负载以及用于将数据有效负载写入到死点域的第一请求,并且作为响应接收对应于死点域中的第一死点的第一访问信息,数据有效负载被存储在第一死点处。步骤还包括生成对应于数据有效负载的第一元数据,第一元数据包括第一访问信息。步骤还包括发送用于将第一元数据写入到死点域的第二请求,并且作为响应接收对应于死点域中的第二死点的第二访问信息,第一元数据被存储在第二死点处。

附图说明

图1是根据一个实施例的图示使用死点网络架构传递数据的示例的高层块图。

图2是根据一个实施例的图示图1的死点域的详细视图的高层块图。

图3是根据一个实施例的图示死点存储节点的示例的高层块图。

图4是根据一个实施例的图示用于使用死点将数据从发送者传递到接收者的步骤的流程图。

图5是根据一个实施例的图示用于使用死点网络架构传递数据的两次写协议的示例的高层块图。

图6是根据一个实施例的图示客户端模块的示例的高层块图。

图7是根据一个实施例的图示用于将有效负载数据和元数据写入到死点域的步骤的流程图。

图8是根据一个实施例的图示用于从死点域读取元数据和有效负载数据的步骤的流程图。

图9是图示被用作一个实施例中在此所描述的实体中的一个或多个实体的部分或全部的计算机的物理部件的高层块图。

具体实施方式

图(附图)和以下描述仅通过说明的方式描述某些实施例。本领域的技术人员将从以下描述容易认识到,在不脱离本文所描述的原理的情况下,可以采用本文所图示的结构和方法的备选实施例。现在将参考数个实施例,其中的示例被图示在附图中。

应注意到,无论何处可实行的相似或相同附图标记可以被使用在附图中并且可以指示相似或相同的功能。该描述偶尔使用与字母组合的附图标记指明附图中所图示的项。在本文中,在没有伴随字母的情况下使用的附图标记(例如,“150”)引用指明项的任何或全部实例,而与伴随字母一起使用的附图标记(例如,“150a”)指代利用附图中的该标签指明的特定项。

图1是根据一个实施例的图示使用死点网络架构传递数据的示例的高层块图。图1图示了接收者110经由死点(dd)域130与发送者120通信。图1描述了单个发送者120与单个接收者110之间的单向数据传递。实施例可以具有参与双向一对一以及一对多通信的多个发送者120和接收者110。

简略地,接收者110使用dd域130建立可以用于将数据传递到接收者的通信信道。接收者110向发送者120提供引用dd域130内的存储位置的死点标识符(ddid)。在另一实施例中,发送者120建立通信信道并且从dd域130接收ddid。发送者120进而使用ddid经由dd域130将数据传递(例如,发送消息)到接收者110。从发送者120到接收者110的数据传输在以下意义上是安全的:对于恶意角色或其他第三方定位、截获或者解释数据是极其困难的。因此,dd网络架构适于其中安全性和隐私性关心问题是最重要的通信。另外,dd网络架构可以用于为通用通信提供增强的安全性。

在一个实施例中,接收者110包括在由用户(例如,人)用于执行任务(诸如经由dd域130或者经由其他通信网络与其他用户通信)的计算机上执行的软件。例如,接收者110可以包括在台式电脑、笔记本电脑或者平板计算机或者具有计算机功能的另一电子设备(诸如移动电话、音乐播放器、电视机顶盒、家庭自动化部件、工业设备、连接电器或者汽车)上执行的软件。接收者110可以包括允许数据的输入的输入设备(诸如键盘或者触敏显示器)和允许数据的输出的输出设备(诸如显示器或者扬声器)。使得接收者110能够经由dd域130通信的功能可以被嵌入到接收者110的硬件中和/或被包括在由接收者110执行的软件中。

类似地,发送者120包括由用户用于执行任务(包括经由dd域130或者经由其他通信网络与其他用户通信)的计算机。发送者120可以包括与接收者110相同的部件。实际上,发送者120可以充当接收者110并且反之亦然,这取决于给定通信事务中的数据流的方向。相应地使用接收者110和发送者120通信的用户可以是不同人或者相同人员。

接收者110和发送者120经由相应的通信链路150a、150b而连接到dd域130。通信链路150可以包括使用常规计算机网络技术的网络通信链路。例如,通信链路150可以使用有线或无线网络通信技术(有线和无线形式的以太网)。同样地,通信链路150可以使用被设计为支持与本地外围设备(诸如通用串行总线(usb)、thunderbolt、蓝牙、个人局域网络(pan)、串行ata、红外线、热签名和/或声音)的通信的其他通信技术。通信链路150可以使用任何加密技术(诸如安全套接字层(ssl)、传输层安全性(tls)、http安全(https)、虚拟专用网络(vpn)、因特网协议安全性(ipsec)等)被加密。在另一实施例中,取代或者补充上文所描述的那些数据通信技术,通信使用定制的和/或专用的数据通信技术。

dd域130是一个或多个dd节点140的集合(被标记为图1中的节点140a-l)。dd节点140包括用于在dd域130中起作用的功能和用于将数据存储在域中的存储器。典型的dd域130包括许多dd节点140。每个节点140经由dd通信链路160被连接到一个或多个其他节点。dd通信链路160可以使用与由接收者110和发送者120用于连接到dd域130的通信链路150相同的通信技术。在一个实施例中,dd节点140和dd通信链路160被布置在dd域130内,使得每个节点是由每个其他节点可到达的。在另一实施例中,dd节点140逻辑地或者物理地分区,使得一些节点不能到达其他节点。连接两个dd节点140的路径可以通过一个或多个中间节点。另外,接收者150a和发送者150b通信链路相应地将接收者110和发送者120连接到dd域130内的至少一个dd节点140。接收者110和发送者120还可以使用未通过dd域130的其他通信链路(诸如通信链路170)来彼此通信。

为了使用dd域130接收数据,接收者110或者发送者120将请求发送到dd域130以代表请求者创建dd。域130内的dd节点140接收创建请求,并且服务请求或者选择另一节点来服务请求。例如,接收请求的dd节点140可以随机地选择dd域130内的另一节点并且将请求传递到所选择的节点。随机选择可以以使得接收请求的节点不知道哪个节点最终服务请求的方式而发生。

服务用于创建dd的请求的节点140建立用于dd的访问信息。访问信息包括唯一地标识所创建的dd的ddid,以及与ddid相关联的一组令牌。令牌描述令牌的所有人关于所创建的dd具有的访问权。例如,实施例包括给定令牌的所有人从由相关联的ddid标识的dd读取的权利的读令牌以及给定向由相关联的ddid标识的dd写入的权利的写令牌。服务请求的节点140将访问信息提供到请求者。

接收者110或者发送者120通常以安全方式存储访问信息。例如,接收者110或者发送者120可以将访问信息存储在接收者或者发送者处的加密数据存储库中。在一个实施例中,接收者110经由通信链路170将访问信息提供到发送者120。类似地,如果发送者120创建dd,则发送者将访问信息提供到接收者110。该通信链路170可以是安全的链路或者不安全的链路,并且可以包括因特网和/或专用通信链路上的通信。例如,接收者110可以使用加密或者解密电子邮件将访问信息发送到发送者120。备选地,接收者可以使用不同的电子通信技术(诸如短距离无线通信)或者甚至使用非电子技术交换信息(例如,笔和纸)。在一个实施例中,访问信息可以加密或者编码(例如,通过哈希函数)以形成单个代码。在该实施例中,接收者110和发送者120可以交换码而不是分离地共享ddid和令牌。码可以例如由发送者120或在dd节点140处解码以确定访问信息。

另外,接收者110和发送者120可以选择使用一个或多个对称或非对称加密技术将由发送者发送的数据进行加密。接收者110和发送者120可以选择交换加密密钥,如果必要的话,同时接收者110将ddid和写令牌提供到发送者120。备选地,接收者110和发送者120可以在不同的时间交换加密密钥、可以使用未要求密钥交换的加密技术或者可以选择不对数据进行加密。在一个实施例中,dd域130自身被用于执行促进加密通信链路所需要的密钥交换。

发送者120使用ddid和关联的写令牌将数据发送到接收者110。在一个实施例中,发送者120将写请求发送到包括ddid和写令牌的dd域130。在另一实施例中,写请求包括ddid和表示写令牌的数据。表示写令牌的数据可以被加密(例如,通过哈希、模糊等)。该请求由dd域130中的初始dd节点140接收。接收节点140确定其是否具有由ddid所标识的dd。如果不是的话,则接收节点140将包括ddid和写令牌的消息发送到dd域130内的其他节点。存储与ddid相关联的dd的节点140接收消息并且验证写令牌。如果令牌被验证,则存储dd的节点创建与接收节点的连接,其进而具有与发送者120的连接。发送者120然后将数据写入到存储与ddid相关联的dd的节点。

类似地,接收者110使用ddid和关联的读令牌来从dd读取数据。在一个实施例中,接收者110将读请求发送到包括ddid和读令牌的dd域130。在另一实施例中,读请求包括ddid和表示读令牌的数据。表示读令牌的数据可以被加密(例如,通过哈希、模糊等)。该请求由dd域130中的初始dd节点140来接收。接收节点140确定其是否具有由ddid标识的dd。如果不是的话,则接收节点140将包括ddid和读令牌的消息广播到dd域130内的其他节点。存储与ddid相关联的dd的节点140接收消息并且验证读令牌。如果令牌被验证,则存储dd的节点140创建与接收节点的连接,其进而具有与接收者的连接。接收者110然后从存储与ddid相关联的dd的节点读取数据。

因此,上文所描述的dd网络架构允许接收者110与发送者120之间的安全的和专用的通信。发送者120和/或具有ddid和写令牌的其他方可以将数据发送到接收者。然而,这样的各方不能从dd读取数据。而且,获得对dd域130中的一个或多个节点140的访问的恶意角色可能能够获得或者读取被存储在个体dd中的数据。但是恶意角色不能确定数据的预期接收者,因为不存在将ddid映射到接收者。出于相同原因,恶意角色不能确定发送者与接收者之间的路径。另外,被存储在dd中的数据可以被加密。

图2是根据一个实施例的图示图1的dd域130的详细视图的高层块图。如上文所描述的,域130通常包括由dd通信链路160连接的多个dd节点140。dd域130内的个体节点140可以由物理分离的计算机(诸如地理不同的计算机的集合)来形成。另外,节点中的一些或全部可以由虚拟计算机形成。例如,域130的节点140可以是云环境中托管的虚拟计算机的实例。

每个dd节点140具有描述节点的属性的相关联的特性集。特性可以描述节点140的位置。位置可以被指定为地理位置。另外,位置可以被指定为逻辑位置(例如,“区域”)。例如,逻辑位置可以指示节点与特定企业(例如,公司)或其他组相关联的节点。特性还可以描述节点的物理性质(诸如节点的处理能力、存储容量、正常运行时间等)。

在一个实施例中,dd域130中的dd节点140的集合可以被分成多个子域,其中每个子域包括来自dd域的dd节点集合的节点的适当子集。节点140的子域是可以基于节点的特性而被确定的构件。例如,dd域130可以包括被分布在宽地理区域(例如,国家)上的节点140,并且子域可以包括物理地被定位在较小区域(例如,在国家内的州)内的节点。类似地,dd域130可以包括与多个企业相关联的节点140,并且子域可以仅包括与企业或企业的一部分中的一个相关联的节点。

在一个实施例中,dd节点140被布置为网状网络(meshnetwork)。每个节点140经由dd通信链路160被连接到至少一个其他节点。而且,每个节点140保持标识其被连接到的节点的路由表。节点140可以通过将消息转发到其所连接到的节点而将消息发送到另一节点。接收消息的节点140进而将消息转发到其他节点,直到消息到达其被指向的节点。跟随有消息的路径由从节点140到沿着dd通信链路160的节点的跳而形成。

考虑图2的上下文中的图1中所描述的发送者120与接收者110之间的通信。如在图2中所示出的,接收者110经由通信链路150a被连接到域130的节点140a。该节点140a用作用于接收者的域130的入口点。接收者110将请求发送到域130的入口节点140a以代表接收者创建dd。该请求可以包括指定在其中dd应当创建的特定子域的域信息。例如,域信息可以指定dd应当在被定位在特定地理区域中的节点140中被创建或者由特定企业管理。

用作用于接收者110的入口点的节点140a接收创建请求并且分析域信息以标识在其中dd应当被创建的子域。在一个实施例中,节点140a通过随机地选择将托管dd的特定子域内的节点来服务请求。在一个实施例中,随机选择使用负载平衡技术被执行,其可以由节点140a或由分离的计算设备执行。在一个实施例中,节点140通过随机地选择请求将被转发的节点跳的数目并且随机地选择节点140a所连接到的特定子域内的另一节点来服务请求。入口节点140a然后将请求转发到随机地选择的节点(例如,节点140d)并且还转发用于节点跳的数目的选择值。请求被转发到的节点140d从其路由表选择子域中的另一节点(例如,节点140e),使得用于节点跳的数目的值递减,并且将请求转发到所选择的节点。重复该选择、递减和转发过程,直到用于节点跳的数目的值到达零,在该点处最后节点建立并且托管与来自接收者110的请求相关联的dd。在一个实施例中,转发创建请求的每个节点包括从入口节点150a到具有请求的转发节点的路径。创建dd的最后节点使用路径标识并且接触针对接收者110的入口节点140a。例如,节点140可以使用路径将ddid和相关联的令牌发送到入口节点140a,使得后续节点可以将该信息提供到接收者。

例如,假定入口节点140a从接收者110接收创建请求,并且还假定请求指定涵盖节点140a、140d和140e以及域130内的其他节点的子域。还假定入口节点140a随机地选择“2”作为跳数。入口节点从其路由表中的指定子域随机地选择节点(例如,节点140d),使跳数值递减,并且将请求和递减的跳数值(例如,“1”)转发到所选择的节点。该节点140d进而随机地选择另一节点(例如,节点140e),使得跳数值递减,并且将请求和递减的跳数值(例如,“0”)转发到所选择的节点。最后节点140e评估跳数值并且确定其是“0”,并且因此创建dd和相关联的令牌。最后节点140e然后经由被用于到达最后节点的路径的反向而将ddid和令牌返回到入口节点140a。

在一些实施例中,可以使用关于上文所描述的技术的变型。在一个实施例中,只要节点在指定子域内,转发请求的节点使得跳数值递减。该变型可以被使用在例如其中接收创建请求的节点不在指定子域内和/或连接到子域中的任何其他节点的情况中。在该情况中,节点可以随机地将请求转发到其他节点,直到指定子域内的节点接收到请求,在该点处子域中的节点使得跳数值递减,并且如果跳数值大于零则重新地转发请求或者如果跳数值是零则创建dd和关联的令牌。

发送者120进而经由不同的通信链路150b被连接到不同的节点140l,该节点140l被用作发送者到域130的入口点。当发送者120做出写请求时,发送者将ddid和写令牌提供到发送者的入口节点140l。该节点140l将包括ddid和写令牌的请求转发到其路由表中的其他节点,并且其他节点继续转发请求,直到其到达具有与ddid相关联的dd的节点(例如,节点140e)。该节点140e验证令牌并且使用由转发节点创建的返回路径来与发送者的入口节点140l建立连接。备选地,节点140e可以与发送者120建立直接连接。发送者120将待写入的数据提供到入口节点140l,并且该节点经由连接将数据转发到具有dd的节点140e。在一个实施例中,除了接收者从具有dd的节点140e读取数据而不是将数据写入到具有dd的节点140e之外,由接收者110做出的读请求以类似的方式被处理。

在各种实施例中,创建请求和写请求可以源自单个发送者120或者接收者110。在一个实施例中,发送者120将联合请求(tackrequest)发送到发送者的入口节点140l,联合请求包括创建请求和写请求。入口节点140l服务关于节点140a如上文所描述的创建请求。dd被创建在域130中,并且ddid和令牌被返回到入口节点140l。发送者120将待写入的数据提供到入口节点140l,其服务关于节点140l如上文所描述的写请求。

图3是根据一个实施例的图示dd节点140的示例的高层块图。节点140包括路由模块305、创建模块310、写模块315、读模块320、生存时间(ttl)模块325、数据控制模块330、删除模块335、通知模块340、地理栅栏模块345、监视模块350、动作模块355、调度模块360以及数据存储装置390。其他实施例可以包括其他实施例中的不同或者其他模块。另外,在其他实施例中,模块的行为可以不同。

数据存储装置390存储由节点140使用的数据。数据可以包括正被保持在由节点140管理的dd中的数据、ddid以及与dd相关联的令牌,以及由节点140内的模块用于执行在此所描述的任务的信息。取决于实施例,数据存储装置390可以包括一种或多种类型的非暂态计算机可读持久存储介质。例如,数据存储装置390可以包括硬盘驱动器、固态存储器设备和/或其他形式的持久存储器。

现在转到节点140内的个体模块,路由模块305路由通过节点140接收到的消息。作为该任务的一部分,路由模块305的实施例保持用于节点140的路由表。路由模块305与其所连接到的其他节点140周期性地通信以确定关于那些节点的信息。该信息可以包括例如节点的网络地址、关于节点140与其相关联的子域的信息等。路由模块305将关于连接节点的该信息存储在路由表中。另外,路由模块305对来自其他节点140的路由模块305的路由表相关通信做出反应。

由路由模块305处理的消息包括与创建请求、写请求、读请求有关的消息,以及在此所描述的其他类型的消息和请求。对于给定消息而言,路由模块305分析消息以确定是否在节点140本地处理消息或者将消息路由到路由表中的另一节点。例如,在从另一节点接收创建请求时,路由模块305检查跳数值以确定其是否大于零。如果跳数值大于零,则路由模块305使得跳数值递减,随机地选择路由表中的连接节点(受制于任何指定的子域,如果适用的话),并且将请求和递减的跳数值转发到所选择的节点。如果跳数值是零,则路由模块305将请求提供到创建模块310。

类似地,在接收到写请求时,路由模块305确定ddid是否与由节点140保持的dd相关联。如果ddid与由节点140保持的dd不关联,则路由模块305将请求转发到其路由表中的其他节点。如果另一方面ddid与由节点保持的dd相关联,则路由模块305将请求提供到写模块315。路由模块305以相同的方式处理读请求以及在此所描述的其他请求。

创建模块310响应于由节点140接收到的请求而创建dd。在从路由模块305接收创建请求时,创建模块310生成访问信息以表示用于请求的dd,包括ddid和与ddid相关联的令牌集。创建模块310将ddid和令牌提供到使用到如相对于图1和图2所描述的接收者的入口节点140a的路径请求dd的接收者110。

在一个实施例中,创建模块310生成ddid作为全局唯一标识符(guid)。ddid是使用大量的位(例如,128位值)表示的值。位的一小部分可以被固定以将值标识为ddid或者编码其他信息,而其他位由创建模块310随机地生成。大量的位使得针对多个dd生成相同的ddid变得极其不可能。因此,出于实际的目的,每个ddid是唯一的。ddid可以被表示为十六进制数字的序列。

在一个实施例中,由创建模块310生成的令牌可以包括写令牌、读令牌以及所有者令牌。写令牌和读令牌向令牌的持有人提供将数据写入到与ddid相关联的dd并且从与ddid相关联的dd读取数据的权利,如上文所描述的。所有者令牌向持有人提供对于dd的管理权利(诸如删除dd内的数据或者删除整个dd的权利)。

在一个实施例中,令牌(类似ddid)是使用大量的位而表示的值,其中的一些可以固定的并且其中的其他由创建模块310随机地生成。每个令牌中的位数可以少于ddid中的位数。与特定ddid相关联的每个令牌相对于与该ddid相关联的其他令牌是唯一的。

创建模块310针对所创建的dd分配数据存储装置390中的空间并且将该空间与ddid相关联。空间量和当空间被分配时的时间可以在不同的实施例中变化。在一个实施例中,当创建dd时,创建模块310针对dd分配固定数量的存储空间。在另一实施例中,当接收数据以在dd中存储时,创建模块310后续分配存储空间。同样地,针对dd分配的空间量可以在不同的实施例中变化。

写模块315响应于由节点140接收到的写请求而将数据写入到dd。在从路由模块305接收写请求时,写模块315初始地验证被包括在请求中的写令牌。写模块315标识被包括在请求中的ddid和写令牌,并且将写令牌与由用于ddid的创建模块310创建的所存储的写令牌相比较。如果比较的写令牌不匹配,则写模块315拒绝写请求。取决于实施例,写模块315可以通过使得好像请求未接收(即,通过响应于写请求不发送任何消息)或通过向发送者120发送指示写令牌无效的消息来拒绝请求。

如果比较的写令牌匹配,则写模块315使用写请求中的返回路径打开与用于发送者120的入口节点140l的网络连接。写模块315从写请求的发送者接收数据,并且将数据写入到针对由ddid标识的dd而分配的存储装置。在一个实施例中,写模块315将数据存储在dd中作为一系列离散消息,使得对于dd的每个写请求的数据被保存为逻辑分离的消息。针对dd的所存储的消息被组织在队列或者另一数据结构中。

读模块320响应于由节点140接收到的读请求而从dd读取数据。在从路由模块305接收读请求时,读模块320初始地验证被包括在请求中的读令牌。读模块320标识被包括在请求中的ddid和读令牌,并且将读令牌与由用于ddid的创建模块310创建的所存储的读令牌相比较。如果比较的读令牌不匹配,则读模块320拒绝读请求。与写实施例类似,读模块320可以通过使得好像请求未接收(即,通过响应于读请求不发送任何消息)或通过接收者110发送指示读令牌无效的消息来拒绝请求。

如果比较的读令牌匹配,则读模块320使用读请求中的返回路径打开与用于接收者110的入口节点140a的网络连接。读模块320从针对dd分配的存储装置读取数据,并且经由入口节点140a将数据发送到接收者110。在另一实施例中,直接连接在存储dd的节点与接收者110之间被建立,并且数据被发送到接收者而不通过入口节点140a。如果存储装置中的数据被组织在队列中,则读模块320的实施例响应于请求(例如,以先进先出次序)而发送队列中的消息,并且在其被发送之后从队列移除消息。其他实施例可以根据读请求发送多个消息和/或在消息被发送到接收者110之后将消息留在队列中。在另一实施例中,dd的内容未被读取,例如,这是因为对应于dd的读令牌的保持住不再希望与消息的发送者通信。在这种情况下,在没有由发送者造成的动作、同意或者确认的情况下,通信可以由接收者单方面地断开。

ttl模块325保持用于节点140的ttl信息。ttl信息通常描述实体保持在域130中的时间。例如,dd、ddid、令牌和写入到dd的数据可以具有描述相应的实体保持在域130内多久的相关联的ttl信息。在由ttl所描述的持续时间被到达时,ttl属于的实体终止、不再被认为是有效的,并且可以被删除。

另外,ttl模块325通过检测由ttl所描述的持续时间何时到达来实施ttl,并且验证与ttl相关联的实体。例如,如果ttl模块325检测到用于dd的ttl到达,则ttl模块删除被存储在dd内的数据,并且还删除或者以其他方式使ddid以及与dd相关联的令牌失效,使得dd不能够再被访问。类似地,如果ttl模块325检测到用于写入到dd的数据的ttl到达,则ttl模块325从dd删除数据,因此数据可能不再被读取。

ttl信息可以被指定为计数器(例如,距现在时间的持续时间)或者时间戳(例如,在其之后实体不再有效的明确时间)。此外,ttl可以被指定为特定类型的访问的若干实例(例如,一旦dd被读取3次或者写入一次dd就终止)。此外,ttl信息可以被指定为类别(例如,“默认”、“短”、“中”、“长”或者“机密”)。在后者情况中,ttl模块325基于ttl策略将类别描述转换为计数器或者时间戳。不同的实体可以具有不同的适用的ttl策略。例如,ttl策略可以指定用于dd的“默认”ttl是30天并且用于消息的“默认”ttl是7天。ttl模块325还可以支持未终止的“归档”ttl,因此使具有ttl的实体持久。

在一个实施例中,当创建用于dd的ttl时,接收者110或者发送者120指定ttl。例如,ttl信息可以被嵌入到创建请求中。同样地,发送者120可以通过将ttl嵌入在写请求中来指定用于数据的ttl。例如,接收者110可以指定dd有效的访问的特定时间量或者实例数,或者指定如上文所讨论的类别。针对dd指定的ttl被嵌入到创建请求中并且由ttl模块325接收。

数据控制模块330支持用于域130的节点140的dd的管理。时间控制模块330提供各种管理功能,其可以由做出用于特定功能的请求并且为给定dd提供令牌授权管理权限、读取特权、写入特权等的发送者120、接收者110或者其他实体来访问。

在一个实施例中,数据控制模块330提供将dd从一个节点140移动到另一节点同时保持相同ddid的运动功能。发送者120、接收者110可以发出包含ddid、所有者令牌的移动请求,并且可选地,dd应当被移动到的节点的规格。在各种实施例中,dd的运动可以由用户请求、环境因素(例如,节点140被调度以关闭、当日时间)或者策略定义(例如,dd可以仅在其被要求被移动之前针对某个时间保持在特定节点140上)来发起。可以例如通过指示dd应当被移动到的子域来指定dd应当被移动到的节点140。响应于具有有效所有者令牌的移动请求,具有由ddid标识符标识的dd的节点140的数据控制模块330标识dd将被移动到的新节点。例如,数据控制模块330可以使用上文所描述的随机选择技术来随机地选择指定子域内的新节点,并且向该节点发送标识ddid的消息和用于保持在由ddid标识的dd中的数据。新节点140中的数据控制模块330在现有的ddid下建立新dd,并且将接收到的数据存储在该dd中。一旦新dd被建立,数据控制模块330就可以可选地删除由ddid标识的dd,使得dd已经有效地被移动到新节点。

数据控制模块330还提供将dd从节点140复制到一个或多个其他节点的复制功能。除了在新dd被创建之后原始数据控制模块330不删除由ddid标识的dd之外,复制与运动功能类似。在一个实施例中,由接收者110发起复制。在另一实施例中,自动地发起复制(例如,由被存储在指定用于复制的规则的dd中的可执行指令)。当包含复制的dd的节点140实现写请求时,路由模块305将写请求转发到路由表中的其他节点,使得复制的dd的每个实例可以实现写请求并且保持数据流通。

数据控制模块330还提供将dd的归档存储在另一节点140中的归档功能。为了执行归档,存储dd的节点140的数据控制模块330接收与运动请求类似的归档请求。数据控制模块330与新节点140的数据控制模块330通信以创建与相同ddid相关联的新dd。数据控制模块330将与新dd相关联的实体的ttl设定为“持久的”,这意味着新dd充当用于原始节点中的dd的归档。在归档被创建之后,原始节点130的数据控制模块130可以可选地删除由ddid标识的dd。

删除模块335将dd从节点140删除。删除模块335从接收者110或者另一实体接收删除请求。删除请求包含ddid和关联的所有者令牌。删除模块335验证接收到的令牌授权删除特权,并且如果其完成,则从节点140删除由ddid标识的dd。在另一实施例中,删除模块335可以删除被存储在dd中的一个或多个消息而非整个dd自身。在一个实施例中,删除模块335将数据写入到dd从其被删除的存储位置。该覆盖数据可以随机地被生成或者被预定。写入覆盖数据使恢复删除数据更困难。其还通过增加存储位置中的所存储的位置的总量而使得找到dd数据更困难,其中覆盖数据的多个实例混淆dd数据。

当事件发生时,通知模块340将通知提供到节点140、其他节点140或者外部目的地的其他模块(例如,推送通知、移动设备通知、电子邮件、电话呼叫、文本消息等)。事件是节点140中的状态变化。事件的示例包括:数据被写入到dd(包括数据被写入到dd指定次数)、数据从dd被读取(包括数据从dd被读取指定次数)、数据从dd被删除、数据控制功能(移动数据、复制数据、归档数据等)、ttl功能(ttl终止、ttl改变、ttl创建、ttl删除等)、由节点所执行的动作以及时间实例(时钟读取特定时间、计时器终止等)。在一个实施例中,节点140的通知模块340从节点140、不同的节点140、接收者110或者另一实体的模块接收通知请求。通知请求指定通知将被创建的事件。对于与dd有关的事件而言,通知请求包括ddid以及与ddid相关联的令牌(例如,所有者令牌、读令牌)。通知请求还包括当事件发生时通知将被做出的通知地址。在一个实施例中,通知地址以ddid的形式以及域130中的不同的dd的写令牌来指定。通知地址可以被指定为不同形式的地址,诸如电子邮件或者另一形式的消息可以被发送到的因特网上的地址。

通知模块340确定用于通知请求中的ddid的令牌是否是正确的。如果令牌不正确,则通知模块340拒绝或者以其他方式忽视通知请求。如果令牌正确,则通知模块340检查通知请求来标识通知被请求的事件的类型。通知模块340然后创建用于事件的通知。在一个实施例中,通知模块340建立检测适当的类型的事件针对所标识的dd何时发生的触发。为此目的,通知模块340可以监视其他模块(例如,写模块315)的活动以确定这样的事件何时发生。例如,如果通知请求指定写事件,则通知模块340可以监视写模块315以检测对所指示的dd的写入。

当所请求的事件被检测时,通知模块340生成通知并且将通知发送到指定的通知地址。通知可以标识事件发生的dd(例如,通过将ddid包括在通知中)以及已发生的事件的类型(例如,对具有ddid的dd的写入)。如果通知地址用于dd,则通知模块340充当发送者120并且使用通知请求中所指定的写令牌和ddid将通知写入到dd。在该示例中,请求通知的接收者110或者其他实体可以监视单个dd以接收关于在多个不同的dd中发生的事件的通知。如果通知地址被指定为不同的形式的地址,则通知模块340使用用于地址的适当的技术来发送通知。

地理栅栏模块345接收并且分析与dd相关联的地理相关限制或由dd接收到的请求。地理栅栏模块345与dd中的其他模块通信以实施这样的限制。限制可以指定dd仅是通过由dd的创建者所指定的地理区域内的发送者和接收者可访问的。在不同的实施例中,访问可以以各种方式被限制。例如,在一个实施例中,只要请求的发起者被定位在特定地理区域内,由dd接收到的请求可以是有效的。在另一实施例中,仅当特定方(例如,所有者、接收者、发送者、第三方等)在特定地理区域内,dd或者dd的特定内容可以是可访问的。地理栅栏模块345还可以与通知模块340通信,以当事件(例如,写请求、读请求等)在指定的地理区域内发生时发送通知。

监视模块350检测事件,并且在检测时将动作消息发送到动作模块355。监视模块350可以监视在节点140内的事件或者在节点140外(诸如在不同的节点140处)的事件。为了监视在节点140外发生的事件,监视模块350可以将通知请求发送到其他节点140的一个或多个通知模块340。通知请求可以标识通知被请求所针对的事件并且包括标识做出请求的节点的通知地址。通知请求由另一节点的通知模块340接收,并且当事件发生时,通知被发送到第一节点中的监视模块350并且由第一节点中的监视模块350接收。为了监视节点140内的事件,监视模块350可以将通知请求发送到节点140的通知模块340,或者监视模块可以与节点140的其他模块直接地通信以确定事件何时发生。

如果事件被检测,则触发消息指定待监视的事件和待执行的动作。触发消息可以由用户、系统管理员、软件开发者、节点140的其他模块、其他节点140、应用等来发送。触发消息由监视模块350接收,并且监视模块监视指定事件。在一个实施例中,触发消息内容被存储在数据存储装置390中。在另一实施例中,触发消息内容被存储在对监视模块350和动作模块355可访问的dd中。

动作模块355在件被检测时执行动作。动作是响应于节点140中的状态的改变而执行的功能。动作的示例包括通知、通知请求、命令序列、写入到dd、从dd读取、从dd删除数据、删除dd、数据控制功能(移动数据、复制数据、归档数据等)、ttl功能(ttl终止、ttl改变、ttl创建、ttl删除等),以及发送消息(例如,电子邮件或另一形式的消息可以被发送到的因特网上的地址)。命令序列可以包括被发送到被连接到节点140的系统或者设备的指令。动作模块355当事件被检测时由监视模块350通知,并且执行触发消息中指定的动作。

在一个实施例中,事件和动作被连接,以在检测事件时按顺序执行多个动作。响应于第一事件执行的第一动作还可以被指定为具有对应的第二动作的第二事件。例如,第一触发消息将第一事件指定为来自第一dd的读取并且将第一动作指定为第二dd的写操作。因此,当第一dd被读取时,第二dd被写入。第二触发消息将第二事件指定为对第二dd的写操作并且将第二动作指定为到电子地址的电子邮件。

调度模块360确定动作相对于事件何时被执行。在一个实施例中,触发消息包括动作发生的指定时间。指定时间可以被表达为计数器(例如,在事件被检测到之后的持续时间)或者时间戳(例如,动作发生的明确时间)。在另一实施例中,事件是时间实例(诸如计时器终止或者时钟到达特定时间)。调度模块360与动作模块355通信以在指定时间处执行动作。例如,在检测事件时,调度模块360可以指示动作模块355等待执行动作直到指定时间或者直到从调度模块接收到进一步的指令。

图4是根据一个实施例的用于使用dd将数据从发送者120传递到接收者110的步骤的流程图。图4从域130的节点140的视角描述了步骤。其他实施例可以包括与本文所描述的那些不同和/或其他步骤,并且步骤可以以不同的次序被执行。同样地,在其他实施例中,可以通过除节点140之外的实体执行步骤中的一些或全部步骤。

节点140接收410创建请求。如上文所描述的,接收者110可以发出创建请求并且将请求发送到域130内的入口节点140a。入口节点140a随机地选择节点以服务请求。然后,假定节点140在已经随机地选择以对其进行服务之后接收410创建请求。响应于创建请求,节点140生成415ddid和用于新dd的关联的令牌集。另外,节点140可以分配存储空间以用于存储被写入到dd的数据。节点140将令牌和ddid提供到接收者110。

随后地,节点140接收420包括ddid和相关联的写令牌的写请求。写请求可以已经由从接收者110接收ddid和写令牌的发送者120发出。发送者120将写请求发送到域130中的入口节点140l,其进而将写请求转发到域中的其他节点,直到其到达创建与ddid相关联的dd的节点。节点140确定写令牌是否有效。如果令牌有效,则节点140通过与发送者的入口节点140l建立连接来对写请求做出反应。节点140经由入口节点140l从发送者120接收待写入到dd的数据并且将数据存储425在dd中。如果令牌不有效,节点140的实施例不对写请求做出反应。在另一实施例中,如果令牌不有效,则节点140发送指示请求被拒绝的消息。

节点140稍后接收430包括ddid和关联的读令牌的读请求。读请求可能已经由建立由ddid标识的dd的接收者110发出。与写请求类似,接收者110将读请求发送到域130中的入口节点140a,其将读请求转发到域中的其他节点,直到其到达创建与ddid相关联的dd的节点。在接收到读请求时,节点140确定读令牌是否是有效的。如果令牌是有效的,则节点140通过与接收者的入口节点140a建立连接来对读请求做出反应,并且向其发送来自dd的数据。例如,如果dd被保持为队列,则节点140将发送在队列中的下一个的数据。如果令牌不有效,则节点140的实施例不对读请求做出反应。在另一实施例中,如果令牌不有效,则节点140发送指示请求被拒绝的消息。

图5是根据一个实施例的图示用于使用死点网络架构传递数据的两次写协议的示例的高层块图。图5图示了经由dd域130与发送者120通信的接收者110。图5描述了单个发送者120与单个接收者110之间的单向数据传递。实施例可以具有参与双向一对一以及一对多通信的多个发送者120和接收者110。关于图1和图2上文更详细地讨论了发送者120和接收者110。

发送者120使用dd域130将有效负载数据传递到接收者110。有效负载数据可以是任何类型的数据。发送者120将有效负载数据发送到dd域130并且接收引用其中有效负载数据被存储的有效负载dd540b的访问信息。发送者120生成包括有效负载dd访问信息的元数据并且将元数据发送到dd域130。发送者120从引用其中元数据被存储的元数据dd540a的dd域130接收访问信息。发送者120经由通信链路570将元数据访问信息传送到接收者110。接收者110进而使用元数据访问信息从元数据dd540a读取元数据。接收者110然后能够使用来自元数据的有效负载访问信息读取有效负载dd540b。

在一个实施例中,多个元数据dd540针对单个有效负载dd540b被创建,以通过多个接收者110控制对有效负载的访问。每个元数据dd540b包括有效负载访问信息,但是元数据dd可以具有不同的特性(诸如ttl)。因此,发送者120可以通过将不同的元数据访问信息发送到不同的接收者110来选择性地控制对有效负载数据的访问。在另一实施例中,元数据dd540a包括有效负载dd访问信息的多个实例。这允许单个元数据dd540a参考多个有效负载dd540b,其可以被用于发送多个不同的数据项或者促进数据分块,其中,单个数据项在发送到dd域130之前被分成多个“数据块”。

使用有效负载dd和元数据dd传递有效负载数据允许通过发送者和接收者控制有效负载数据。发送者120未与接收者110直接地共享有效负载访问信息,并且可以因此通过删除对应的元数据dd540a选择性地撤回接收者对有效负载数据的访问。发送者120不必删除有效负载dd540b,因此由其他元数据dd对于有效负载dd的引用保持完整。接收者110进而可以使用来自元数据的信息(例如,标题、大小、发送者的名字)决定是否读取有效负载数据。

如在图5中所示,接收者110和发送者120各自包括客户端模块520以执行任务,包括将数据和请求发送到dd域130,生成元数据并且与其他发送者和接收者通信。客户端模块520可以是在接收者110或者发送者120上执行或者由其访问的软件。

通信链路570可以共享图1的通信链路170的相同特性。在另一实施例中,通信链路570可以是与dd540分离的、dd域130中的通信信道。通信链路570可以是允许用户在他们之间传递数据的通信信道的组合,类似相对于图1至图4所描述的那些通信链路。通信链路570可以具有多个发送者、接收者或者这两者。

图6是根据一个实施例的图示客户端模块520的示例的高层块图。客户端模块520包括请求模块605、元数据模块610、通信模块615、数据管理模块620以及客户端数据存储装置690。其他实施例可以包括其他实施例中的不同的或者其他的模块。另外,在其他实施例中,模块的行为可以不同。

客户端数据存储装置690存储由客户端模块620使用的数据。数据可以包括有效负载数据、元数据、dd访问信息、以及由客户端模块520内的模块用于执行本文所描述的任务的信息。取决于实施例,客户端数据存储装置690可以包括一种或多种类型的非暂态计算机可读持久存储介质。例如,客户端数据存储装置690可以包括硬盘驱动器、固态存储器设备和/或其他形式的持久存储器。

请求模块605与dd域130通信以促进请求。请求模块605生成请求并且将请求发送到dd域130,包括创建请求、写请求、联合请求和读请求。请求模块605可以响应于用户的输入而发起请求(例如,经由在发送者120或者接收者110上执行的软件)。此外,请求模块可以响应于由客户端模块520的模块执行的某些条件或某些动作而自动地发起请求。例如,响应于由通信模块615接收到的消息、响应于监视由数据管理模块620执行的活动、或者响应于由元数据模块610执行的元数据生成,可以在指定时间发起请求。

请求模块605将包括有效负载数据和元数据的数据发送到dd域130以促进请求。请求模块605可以从发送者120或者接收者110的其他模块接收有效负载数据,或者可以从客户端数据存储装置690取回有效负载数据。请求模块605可以从元数据模块610、客户端数据存储装置690或者另一源接收对应于有效负载数据的元数据。

一旦请求已经由dd域130服务,请求模块605就可以从dd域130接收请求响应。响应于联合请求或创建请求,请求模块605接收用于创建的dd的访问信息。响应于读请求,请求模块605从dd接收数据。

元数据模块610生成对应于有效负载数据的元数据。元数据包括多个字段。元数据字段可以包括用于一个或多个对应的有效负载dd540b的访问信息、有效负载数据的属性(例如,文件名、扩展、大小)、发送者信息、加密信息(例如,有效负载数据加密密钥)和ttl信息。在一个实施例中,用户可以指定哪些元数据字段被包括在所生成的元数据中。元数据模块610通过确定并且聚集用于元数据字段的值来生成元数据。元数据模块610可以通过分析有效负载数据来确定某些元数据字段(诸如有效负载数据属性)。元数据模块610可以从客户端模块520的其他模块接收元数据字段信息。例如,ttl信息和加密信息可以从数据管理模块620被接收。在一个实施例中,元数据模块610生成用于相同有效负载数据的元数据的多个实例。每个实例可以包含不同的字段,包括不同的ttl信息。在另一实施例中,元数据的实例包括用于超过一个有效负载dd540b的访问信息。

通信模块615经由通信链路570与其他用户通信。通信模块615将元数据dd访问信息发送到接收者110并且从发送者120接收元数据dd访问信息。通信模块615可以关于数据传递(诸如消息)从用户接收附加信息。通信模块615可以与其他用户建立通信链路570以促进通信。与通信链路570有关的信息(诸如用于通信信道、用户标识符等的dd访问信息)可以被存储在客户端数据存储装置690中。

数据管理模块620执行与由客户端模块520处理的数据(包括有效负载数据、元数据、dd和访问信息)有关的数据管理功能。在一个实施例中,数据管理模块620对有效负载数据和被发送到dd域130的元数据进行加密。类似地,数据管理模块620可以使用一个或多个对称或非对称加密技术经由通信链路570对发送到其他用户的访问信息和其他数据进行加密。在一个实施例中,数据管理模块620在发送到dd域130之前对有效负载数据进行加密,并且将加密密钥发送到元数据模块610以用于包括在对应于有效负载数据的元数据中。在各种实施例中,数据管理模块620对接收到的有效负载数据、元数据、访问信息和其他数据执行解密。

数据管理模块620生成用于元数据dd和有效负载dd的ttl信息。如相对于图3上文所讨论的,ttl信息指定dd在dd域130中保持多久。ttl信息可以由客户端设备520的用户来指定,或者可以根据ttl策略被生成。数据管理模块620可以将ttl信息发送到元数据模块610以用于包括在元数据中。此外,数据管理模块620可以将ttl信息发送到请求模块605以用于与发送到dd域130的请求一起包括。在一个实施例中,数据管理模块将ttl信息存储在客户端数据存储装置690中。在各种实施例中,数据管理模块620生成消息并且将消息发送到dd域130以促进相对于图3上文所讨论的各种dd管理活动。

图7是根据一个实施例的图示用于将有效负载数据和元数据写入到dd域130的步骤的流程图。图7从客户端模块520的视角描述步骤。其他实施例可以包括与本文所描述的那些不同的和/或其他的步骤,并且步骤可以以不同的次序被执行。同样地,在其他实施例中,可以通过除客户端模块520之外的实体执行步骤中的一些或全部步骤。

客户端模块520将联合请求和有效负载数据发送710到dd域130,以创建dd域中的有效负载dd540b。客户端模块520然后接收715用于所创建的有效负载dd540b的访问信息。客户端模块520生成720对应于有效负载数据的元数据。客户端模块520将联合请求和所生成的元数据发送725到dd域130以创建dd域中的元数据dd540a。元数据可以包括用于元数据dd540a的ttl信息。客户端设备520然后接收730用于元数据dd540a的访问信息。在一个实施例中,客户端模块520生成对应于用于在一个或多个附加的元数据dd处存储的有效负载数据的附加元数据。附加的元数据可以与先前地生成的元数据不同。例如,其可以具有不同的有效负载数据信息。附加的元数据可以具有用于附加的元数据dd的不同的ttl信息。客户端模块520可以将元数据访问信息发送到其他用户或者存储元数据访问信息以用于未来使用。

图8是根据一个实施例的图示用于从dd域130读取元数据和有效负载数据的步骤的流程图。图8从客户端模块520的视角描述步骤。其他实施例可以包括与本文所描述的那些不同的和/或其他的步骤,并且步骤可以以不同的次序被执行。同样地,在其他实施例中,可以通过除客户端模块520之外的实体执行步骤中的一些或全部步骤。

客户端设备520接收810用于元数据dd540a的访问信息。客户端模块520将包括元数据dd访问信息的读请求发送815到dd域。响应于读请求,客户端模块520从元数据dd540a接收820元数据。客户端模块520根据元数据确定825用于有效负载dd540b的访问信息。客户端模块520可以确定有效负载dd540b的其他属性,包括发送者信息和有效负载属性。在一个实施例中,客户端模块520基于所确定的属性来继续进行或者结束图8的过程。例如,客户端模块520可以将所确定的属性提供到用户,并且允许用户决定是否继续进行。在另一实施例中,客户端模块520基于指定的条件来决定是否自动地继续进行。条件可以包括从某些发送者总是读取或者绝不读取有效负载、将有效负载限于特定大小等。如果过程被允许继续进行,则客户端模块520将包括有效负载dd访问信息的读请求发送830到dd域130。响应于读请求,客户端模块520从dd域130接收835有效负载数据。

图9是图示被用作一个实施例中在此所描述的实体中的一个或多个实体的部分或全部的计算机900的物理部件的高层块图。例如,所图示的计算机900的实例可以被用作接收者110、发送者120和/或域130中的节点140。图示了耦合到芯片集904的至少一个处理器902。还耦合到芯片集904的是存储器906、存储设备908、键盘910、图形适配器912、指点设备914以及网络适配器916。显示器918被耦合到图形适配器912。在一个实施例中,芯片集904的功能由存储器控制器集线器920和i/o控制器集线器922来提供。在另一实施例中,存储器906直接地被耦合到处理器902,而不是芯片集904。在一个实施例中,一个或多个声音设备(例如,扬声器、音频驱动器等)被耦合到芯片集904。

存储设备908是任何非暂态计算机可读存储介质(诸如硬盘驱动器、光盘只读存储器(cd-rom)、dvd或固态存储器设备)。存储器906保持由处理器902使用的指令和数据。指点设备914可以是鼠标、轨迹球或其他类型的指点设备,并且与键盘910组合用于将数据输入到计算机900中。图形适配器912将图像和其他信息显示在显示器918上。网络适配器916将计算机系统900耦合到局域网或者广域网。

如本领域中已知的,计算机900可以具有与图9中所示的那些不同的和/或其他的部件。另外,计算机900可以缺少某些所图示的部件。在一个实施例中,充当节点140的计算机900可以缺少键盘910、指点设备914、图形适配器912和/或显示器918。此外,存储设备908可以本地和/或远程于计算机900(诸如被实现在存储区域网络(san)内)。

如本领域中已知的,计算机900适于执行用于提供本文所描述的功能的计算机程序模块。如本文所使用的,术语“模块”指代被用于提供指定功能的计算机程序逻辑。因此,可以以硬件、固件和/或软件来实现模块。在一个实施例中,程序模块被存储在存储设备908上、被加载到存储器906中并且由处理器902执行。

以上描述被包括以说明某些实施例的操作,并且不旨在限制本发明的范围。根据以上讨论,对于相关领域的技术人员而言,还将由本发明的精神和范围涵盖的许多变型将是明显的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1