混合同步和异步数据流.pdf

上传人:zhu****_FC 文档编号:1518672 上传时间:2018-06-20 格式:PDF 页数:26 大小:1.46MB
返回 下载 相关 举报
摘要
申请专利号:

CN201710150318.1

申请日:

2011.12.01

公开号:

CN106911790A

公开日:

2017.06.30

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效 IPC(主分类):H04L 29/08申请日:20111201|||公开

IPC分类号:

H04L29/08

主分类号:

H04L29/08

申请人:

微软技术许可有限责任公司

发明人:

D·范 费尔岑; J·范 格格; H·J·M·梅杰; A·萨凯蒂; S·R·拉武拉

地址:

美国华盛顿州

优先权:

2010.12.02 US 12/958,481

专利代理机构:

上海专利商标事务所有限公司 31100

代理人:

蔡悦;胡利鸣

PDF下载: PDF下载
内容摘要

本文描述了混合同步和异步数据流。队列可存储基于接收到的数据请求和后续对于一个或多个数据源/服务器的订阅从服务器异步获取的数据流。例如,可管理队列以用于后续接收的数据流的同步或异步释放。

权利要求书

1.一种便于数据供应的方法,包括:异步地获取多个数据元素中的至少一个的数据;将所述数据存储在数据结构中;以及基于所述数据结构中的数据量来管理从所述数据结构的异步数据输出,其中只有所述输出被进行网络传送。2.如权利要求1所述的方法,其特征在于,所述数据包括存储包括独立值的至少一个具体值以及至少一个异步计算所得的值。3.如权利要求2所述的方法,其特征在于,还包括:组合具体值;输出所述组合的具体值;组合接收到的异步计算所得的值;以及输出经组合的异步计算所得的值。4.如权利要求3所述的方法,其特征在于,管理从所述数据结构的异步数据输出进一步包括交错组合的具体值与组合的接收到的异步计算所得的值。5.如权利要求1所述的方法,其特征在于,还包括基于传入数据请求、数据结构的大小、输出的数据元素的量中的至少一个来扼制所述输出动作。6.如权利要求1所述的方法,其特征在于,还包括基于所述数据结构的大小、流订阅的数量、数据元素的数量、要传递给源的数据元素的数量、传入数据请求的数量、出入数据元素的数量、服务器特征、客户端/源特征、或网络利用率中的至少一个来管理所述数据结构。7.如权利要求1所述的方法,其特征在于,还包括将所输出的数据元素从所述数据结构传送给web浏览器。8.如权利要求1所述的方法,其特征在于,还包括以最大化网络分组填充的方式来管理数据的异步输出。9.如权利要求1所述的方法,其特征在于,还包括基于对包括完整数据元素的数据的获取来管理数据的异步输出。 -->10.如权利要求1所述的方法,其特征在于,还包括在输出之前组合所述数据结构中的两个或更多个数据值。11.如权利要求1所述的方法,其特征在于,还包括以预定的有序序列来管理从所述数据结构的异步数据输出。12.一种便于数据供应的系统,包括:耦合到存储器的处理器,所述处理器被配置成执行存储在所述存储器中的以下计算机可执行组件:第一组件,所述第一组件被配置成当异步地从至少一个数据源获取数据时存储所述数据;以及第二组件,所述第二组件被配置成基于对完整数据元素的异步获取来控制数据的异步释放,其中只有被释放的数据被进行网络传送。13.如权利要求12所述的系统,其特征在于,所述第一组件被配置成响应于与第一数据元素有关的第一请求和与第二数据元素有关的第二请求来存储捕获的数据。14.如权利要求13所述的系统,其特征在于,所述第一数据元素是包括独立值的具体值,并且所述第二数据元素是异步计算所得的值。15.如权利要求13所述的系统,其特征在于,还包括第三组件,所述第三组件被配置成用数据源辨识信息来为数据加标签。16.如权利要求13所述的系统,其特征在于,所述第二组件被配置成交错具体值和异步计算所得的值的释放。17.如权利要求13所述的系统,其特征在于,还包括第三组件,所述第三组件被配置成基于传入数据请求的量、释放的数据的量、或存储结构的大小中的至少一个来扼制数据的存储,其中所述扼制包括增加释放或减少释放中的至少一者。18.如权利要求13所述的系统,其特征在于,还包括第三组件,所述第三组件被配置成组合具体值和异步计算所得的值。19.一种数据供应的方法,包括:响应于针对多个数据元素的请求订阅一个或多个和数据源;当异步获取来自所述一个或多个数据源时收集数据元素的各部分;以及当接收到完整的数据元素之际异步地控制所述数据元素的输出,其中只有所述输出被进行分包以及网络传送。20.如权利要求19所述的方法,其特征在于,还包括将所述数据元素传送给web浏览器。 -->

说明书

混合同步和异步数据流

本发明专利申请是申请日为2011年12月1日、申请号为201110415371.2、名称为
“混合同步和异步数据流”的发明专利申请的分案申请。

技术领域

本发明涉及混合同步和异步数据流。

背景技术

Web服务器通过使用浏览器来向客户机传递网页内容。常见的web服务器主存网页
数据和其他包含的内容,诸如图片、样式表等。此外,web服务器基于接收到的请求使用超文
本传输协议(HTTP)通过万维网(WWW)传递web内容。网页可包括来自多个web服务器的web内
容。换言之,多个web服务器可为一特定的网页主存数据,该特定的网页使浏览器和目标web
服务器之间的请求/响应传递变得复杂。此外,web服务器可进一步与诸如打印机、路由器、
摄像头等服务本地网络的设备相关联。

在典型示例中,浏览器可接收统一资源定位符(URL),其中URL可指向web网址和关
联的web内容。URL可被利用并翻译为对特定web服务器的请求以接收对应于其的适当的web
内容。浏览器可使用例如HTTP来将该请求传递至目标web服务器,web服务器可使用所请求
的信息(例如,web内容、图片等)对其进行响应。浏览器可基于请求接收web内容。如果该请
求无法处理,那么浏览器就显示出错消息。在从web服务器接收到web内容时,浏览器呈现与
URL相关联的web内容。

一般而言,常规的web服务器每次处理一个请求。例如,对网页的请求可包括第一
元素和第二元素。Web服务器基于该请求传递第一元素,并且只有当第一元素完成时才继续
第二元素。作为示例,网页可包括三个部分,即页眉(header)、正文(body)和页脚(footer)。
为了加载网页,与一个或多个web服务器的交互如下:首先,请求页眉,且返回的结果被传递
至客户机以加载该页眉。接着,发出对正文的请求,且结果返回至客户机以加载正文部分。
最后,在页眉和页脚都被加载之后,请求并加载页脚。换言之,网页是同步加载的。

发明内容

下面呈现了简化的发明内容,以提供对所公开主题的某些方面的基本理解。本发
明内容不是广泛性的概观。它并不旨在标识关键/重要元素,也不旨在划定所要求保护主题
的范围。其唯一目的是以简化形式呈现一些概念,作为稍后呈现的更具体实施例的序言。

简言之,本发明一般涉及数据供应。可实现对来自服务器的数据流的订阅,以基于
接收到的数据请求异步地获取并传递数据元素。通过利用订阅,可收集数据元素,而与数据
元素的结果是具体值还是来自异步计算的值无关。此外,这样的数据元素可同步或异步地
从队列中释放(例如,传递、发送、排出)。作为示例而非限制,可基于接收到的数据请求执行
订阅服务器,在其中对应于该数据请求的连续的字节流(例如,数据元素)可被收集并存储
在队列中。而且,可管理存储来自服务器的流送的数据的队列,以最优地将完成的数据元素
(例如,从流接收到字节总数的数据元素)释放(例如,排出)至传递该数据请求的目标。

为实现上述及相关目的,在此结合以下描述和附图描述了所要求保护主题的某些
说明性方面。这些方面指示可实践本主题的各种方式,它们均落在所要求保护主题的范围
之内。当结合附图阅读以下详细描述时,本发明的其他优点和新颖特征将变得显而易见。

附图说明

图1是数据供应系统的框图。

图2是异步数据供应系统的框图。

图3是包括队列管理的数据供应系统的框图。

图4是向服务器订阅异步数据接收的数据供应系统的框图。

图5是便于利用异步获取的数据元素的系统的框图。

图6是从服务器异步收集数据元素的方法的流程图。

图7是管理从服务器异步获取数据元素的队列的方法的流程图。

图8是呈现从web服务器异步接收的数据元素的方法的流程图。

图9描绘了数据请求的时间线。

图10是示出用于本发明的各方面的合适操作环境的示意性框图。

具体实施方式

下面的细节大体针对数据供应。例如,可经由建立的数据流从服务器异步地收集
和传递数据元素。数据请求可与由服务器主存的特定数据元素有关。此外,数据元素通常包
括可以是具体值或异步计算所得的值的字节。

如在此使用的,具体值与独立的而且并不依赖任何其他值来构造的值有关。例如,
如果“X”是构成“X”的唯一值,那么值“X”就可以是具体的。此外,如此处使用的,异步计算所
得的值与包括彼此依赖的多个值的值有关。例如,如果“Z”是从值“A”、“B”和“C”构造的,那
么值“Z”就可是异步计算所得的值,其中“A”、“B”和“C”是异步接收和计算的。

常规上,服务器同步发送数据,并且在与数据请求相关联的每一数据元素完成时
该请求被履行。然而,与服务器的通信可以扩展至实现异步数据收集和释放。具体地,可基
于接收的数据请求执行对服务器主存的数据源的订阅,在其中可对多个数据元素异步地收
集数据流,例如具有具体值的数据元素和具有异步计算值的数据元素。此外,来自服务器的
连续的数据流可被存储在队列中,其中存储在该队列中的数据元素可被同步或异步地释放
(例如,被传递、传送、排出等)。

现在参考附图更详细地描述本公开的各个方面,在全部附图中相似的标记指示相
似或相应的元素。然而应该理解,附图及其相关详细描述不旨在将所要求保护的主题限于
所公开的具体形式。相反,其意图是覆盖落在所要求保护主题的精神和范围之内的所有修
改、等价物和替换的方案。

首先参考图1,示出了数据供应系统100。数据供应系统100基于对数据流的订阅实
现从服务器的异步数据收集。这样的通过使用数据流订阅的异步数据收集减少了服务器负
载并以减少的延迟递送对数据请求的响应。一般而言,数据供应系统100经由来自服务器的
数据流为数据元素聚合字节,而不同于从服务器每次接收一个数据元素的常规系统。此外,
与常规系统相比,数据供应系统100异步地并且以最优方式分发数据元素。

数据供应系统100可包括接收数据请求的异步组件102。数据请求可涉及包括字节
的数据元素,其中数据元素由服务器主存。可以理解的是,数据请求可由任何合适的组件、
模块、机器、服务器、设备、浏览器等接收。作为示例而非限制,每一数据元素可由对应的服
务器存储。然而,在另一示例中,与数据元素相关联的字节可由不止一个服务器主存。此外,
数据请求可包括是具体值的结果或是来自异步计算的值的结果。

异步组件102还包括订阅组件104,其订阅主存与接收到的数据请求相关联的数据
元素的数据源。数据源可对应于主存一个或多个数据源的服务器。换言之,数据源可由一个
或多个服务器提供。可以理解的是,此处对服务器的订阅是指订阅数据源,而且一般而言,
此处数据源被称为服务器。换言之,基于数据请求,订阅组件104为服务器(例如,存储与数
据请求相关联的数据元素的服务器)标识对数据元素的任何合适数据的传入数据流的订
阅。可以理解,该订阅是基于接收到的数据请求和/或传递的订阅中的至少一个来针对来自
至少一个服务器的至少一个数据流。除了订阅数据源,订阅组件104可为数据流加标签来标
识哪些流与特定的数据元素匹配(例如,其中单个流被维持来包括来自多个流的数据元
素)。作为示例而非限制,数据流的标签和对应的数据元素可基于数据元素类型、数据、数据
元素唯一标识(ID)、数据元素参考名、流订阅时间戳等。

数据供应系统100通过利用对来自服务器的数据流的订阅来从服务器异步地收集
数据。具体地,异步组件102还包括经由来自服务器的数据流收集数据字节的聚合组件106。
聚合组件106基于订阅和数据请求接收数据流,其中两个或更多数据元素是从服务器异步
收集的。此外,聚合组件106可从所订阅的流收集数据,而与值是具体值还是来自异步计算
的值无关。

数据供应系统100可通过利用所建立的基于可用性推送数据至请求客户机的数据
流异步地处理与数据元素相关联的多个数据请求。此外,系统100通过使用流以及在接收之
际管理对从这样的流收集的数据的异步释放(例如,排出)实现数据收集,来以减少的延迟
高效地满足数据请求(在下文更详细地讨论)。

在一具体示例中,网页可包括页眉、正文和页脚。可接收对这样的数据的数据请求
并可实现对主存数据的数据源(例如,web服务器)的订阅。使用订阅,可为页眉、正文和页脚
异步地接收数据流。与请求与页眉相关联的数据并等待直到全部页眉数据被获取然后请求
与正文相关联的数据等不同,可在任意时间请求和返回页眉、正文和页脚数据。以此方式,
可基于可用性为页眉、正文和/或页脚获取数据。具体地,页眉、正文和页脚的数据可交错。
此外,注意,至网页的数据输出可以是同步或异步的。

图2示出了异步数据供应系统200。异步数据供应系统200包括被配置为接收对数
据元素的数据请求的异步组件102。基于数据请求,订阅组件104可打开来自源的数据流并
对其加标签,聚合组件106从该数据流收集数据。为了履行接收到的数据请求,数据元素的
字节和该数据元素可被存储和传递,如以下所述的。

异步数据收集系统200还包括队列组件202和排出组件204。队列组件202可存储数
据流(例如,与所请求的数据元素相关联的字节)。可以理解的是,队列组件202可存储来自
与多个数据元素相关的多个数据流的字节。如所讨论的,订阅组件104所使用的标签实现处
理数据元素的多个数据流。在另一示例中,系统200可包括多个队列组件。例如,队列组件可
与每一数据流相关联以为数据元素处理多个数据流。一般而言,订阅服务器后,队列组件
202可存储从服务器流出的数据(例如,连续的字节订阅源)。从流接收的数据可包括是具体
结果的值或是异步计算所得的值。由此,队列组件202连续地存储数据元素的具体值和数据
元素的异步计算所得的值。

排出组件204便于异步地传递数据元素以满足数据请求。排出组件204通过以最优
方式交错(例如,交错具体值与异步计算所得的值)来自队列组件202的数据元素来从队列
组件202释放(例如,排出、传递、传送、输出)数据元素。收集构造数据元素的多个字节后,数
据元素可被传递(例如,写入)至传递数据请求的源,并且这样的传递可以同步或异步地执
行。数据元素传递后,排出组件204从队列组件202移除(例如,删除)该数据元素(例如,包括
相应的字节)。换言之,队列组件202连续地存储数据元素的字节直至数据元素被构建(例
如,接收到数据元素的全部字节),且排出组件204管理构建的数据元素的同步或异步释放。

排出组件204可使用多种技术以异步地释放构建的数据元素。作为示例而非限制,
排出组件204可基于队列大小(例如,所存储的字节数限制)、流订阅数量、数据元素的数量、
传递至源的数据元素的数量、传入数据请求的数量、传入数据元素的数量、服务器特征(例
如,服务器存储器、服务器CPU、服务器处理器速度、服务器线程计数等)、客户机/源特征(例
如,客户机吞吐量、客户机感知的页面构建性能等)、网络利用率(例如,最大化网络包填充)
等来管理队列组件202。此外,排出组件204可使用扼制(throtting)技术以管理队列组件
202,以下描述了该技术。

图3示出了包括队列管理的示例性数据供应系统300。数据供应系统300包括基于
接收到的数据请求和由订阅组件104执行的订阅在队列组件202中存储数据流的异步组件
102。如所讨论的,聚合组件106从源获取数据流,其中这样的流与用于区别数据流的标签
(由订阅组件104提供)一起被存储在队列组件202中。

异步组件102可部分地向下流送数据以改进客户机侧的性能。此外,使用异步组件
102是简单化的而不需要许多抽象层,以消除大量的调用栈。异步组件102还允许同步逻辑
和异步逻辑的混合和匹配。

如所讨论的,异步组件102可允许具体值和作为异步计算结果的值的流送(例如,
从服务器)。异步组件102可维持具有具体和异步值的队列(例如,下文更详细讨论的队列组
件202)。异步组件102可包括排出组件204(也在下文更详细地讨论),用于通过以最优方式
交错结果来向底层流释放队列。

作为示例而非限制,异步组件102可利用以下类来创建超集。



通过在最少的“Write(char)”方法处重新实现来维持命令性写入的现有功能。附
加的过载可基于性能要求需求来重新实现。

为了允许同步和异步写入以有序的方式混合,队列组件202维持写入队列。为了能
够存储两种写入(例如,具体值写入和异步计算所得的值的写入),可采用类型IObservable
(例如,来自.NET4.0和反应式扩展)。因此实现变为如下:


接着,添加用于在异步值中通过的能力。再次,这个的基本形式将是具有附加的更
多最优负载的“IObservable<char>”。例如,可利用以下伪代码:


排出组件204——与异步组件102包括在一起——管理数据元素从队列组件202的
释放。一般而言,全部构建后(例如,从数据流接收组成数据元素的全部字节),数据元素可
被从队列组件202释放,其中释放可包括从队列组件删除和发送至客户机(例如,数据请求
的请求者、传递该数据请求的目标……)。

此外,排出组件204可至少基于传出的释放数据元素和传入的流送的数据元素的
字节来管理队列组件202。一般而言,排出组件204可对传入数据(例如,流送的数据元素的
字节)和传出数据(例如,构建的数据元素)进行扼制以优化数据供应性能。例如,传入数据
请求的数量、对服务器的订阅的数量可增大或减小。在另一示例中,与释放数据元素相关的
延迟可增大或减小。

异步组件102还可包括策略302。排出组件204可利用策略302来从队列组件202释
放数据元素。例如,策略302可以是预定义的或基于实时的传入流和/或传出数据元素动态
更新的。作为示例而非限制,策略302可定义限制/规则,诸如队列大小(例如,所存储的字节
数限制)、流订阅的数量、数据元素的数量、传递至源的数据元素的数量、传入数据请求的数
量、传入数据元素的数量、服务器特征(例如,服务器存储器、服务器CPU、服务器处理器速
度、服务器线程计数等)、客户机/源特征(例如,客户机吞吐量、客户机感知的页面构建性能
等)、网络利用率(例如,最大化网络包填充)等。

为了消除任何潜在的存储器空穴(hole),队列组件202(例如,累积的数据)被排
出。为了确保队列以最优方式被排出,异步组件102内部地使用异步模式。在一个实现中,释
放可发生在每次写入之后。在另一实现中,排出组件204可利用框架的异步IO应用程序编程
接口(API)。

只要队列组件202中有条目,排出组件204就可运行,如果队列是空的,那么排出组
件204可以停止,并且新的写入一进入,异步组件102就可开始新的排出器组件204。可以理
解的是,在一个示例中,在任何时刻正在运行的排出器不超过一个。

这里是这样的排出组件204的示例性版本。为了清楚起见,并没有包括锁定代码:



以下示例性代码片段示出了为确保排出组件204被启动而对“Write(写入)”的修
改。


数据供应系统300还包括转储清除(flush)组件304。转储清除组件302被配置为转
储清除数据,或者换言之,输出或去队列(de-queue)累积的数据。具体地,如在web场景中,
使用指定的转储清除策略频繁地转储清除数据通常很重要。转储清除组件304可包括转储
清除策略,该转储清除策略包括但不限于手动提示(例如,公共转储清除方法)、基于将被传
递/发送的块的大小转存清除、自上次转存清除起的时间、服务器上的存储器使用、写入种
类(例如,同步/异步写入模式)等。

当排出组件204在运行时,后台线程可分析队列组件202并执行优化,比如将多个
后续的同步写入折叠至单个同步写入、获得其值可用的多个异步结果并将它们合并至个同
步写入等。作为示例而非限制,数据元素可包括两个具体值和异步计算所得的一个值。排出
组件204可利用后台线程将这两个具体值折叠至来自队列组件的同步写入/传递,并且可用
值(来自异步计算)可被组合至来自队列的同步写入/传递。

由于异步组件102潜在地包括异步计算,因此它本身变成了异步计算。一旦异步组
件102知道没有更多的“Writes”(例如,同步的和异步的两者)将被接收,该计算就可完成。
由此,转储清除组件304可利用返回“IObservable<Unit>”的“Close”方法,如下:

public IObservable<Unit>Close();

“IObservable<Unit>”可发信号指示完成。可在如下时间做到这点:a)调用关闭
后,排出组件204不是活动的,其可立刻发信号指示完成并且不再允许对“Write”的进一步
调用;以及b)如果排出组件204正在运行,其可禁止对Write的任何进一步调用,而且排出组
件204完成后(例如,当队列组件202为空),其将基于返回的“IObservable<Unit>”发信号指
示完成。

图4示出了订阅服务器以用于异步数据接收的数据供应系统400。数据供应系统
400包括异步组件102,其接收与由至少一个服务器402主存的数据元素相关的数据请求。订
阅组件104基于该数据请求订阅至少一个服务器402,以使聚合组件106获取所请求的数据
元素的连续的字节流。应该理解,可以有任何合适数量的服务器402,诸如服务器1到服务器
N,其中N是正整数。此外,作为示例而非限制,服务器402可以是任何合适的服务器。在与对
web内容的数据请求相关的特定示例中,服务器402可以是web服务器。

除了订阅数据流,订阅组件104可对来自服务器的数据流加标签以标识哪一数据
流对应于特定的数据元素。通过实现这样的加标签,以有组织的方式来管理数据流。例如,
系统400可包括任何合适数量的数据流,诸如数据流1至数据流M,其中“M”是正整数。

系统400启用对服务器的订阅以异步地收集数据元素。此外,系统400使用队列组
件202来存储各数据元素或其各部分的聚合的字节。排出组件204管理队列组件204来异步
地释放聚合的数据元素。队列组件204的管理可包括释放数据元素、组合数据元素(例如,具
体值、异步计算所得的值)来释放、扼制传入流、扼制传出数据元素、维持队列组件202的大
小范围等。

图5示出了便于利用异步获取的数据元素的系统500。系统500可包括异步组件
102,其利用订阅组件104基于接收到的数据请求订阅由服务器402提供的数据源。数据请求
可由数据处理器组件502来传递。例如,数据处理器组件502可以是浏览器、机器、计算机、客
户机、服务器、计算机程序等。订阅组件104对来自至少一个服务器402的数据流加标签,聚
合组件106在服务器402中异步地获取数据流。此外,数据流被存储于队列组件202中以使排
出组件204能够最优地向数据处理器组件502释放(例如,排出、写入、传递、发送)数据元素
或字节。

例如,数据元素可包括具体值和异步计算所得的值。由于数据流被接收和存储在
队列中,因此排出组件204可释放这样的值至数据处理器组件502。在另一示例中,可通过将
具体值组合在一起并释放该组合来使用释放。在又一示例中,释放可通过将来自异步计算
可用的(例如,计算的)值组合在一起并释放该组合来实现。一般而言,排出组件204可交错
数据元素以释放至数据处理器组件502,而与数据元素是具体值还是异步计算所得的值无
关。

参考若干组件之间的交互已经描述了上述系统、体系结构、环境等。应该理解,这
样的系统和组件可以包括这些组件或其中指定的子组件,某些指定的组件或子组件,和/或
附加的组件。子组件也可以被实现为在通信上被耦合到其他组件而不是被包括在父组件中
的组件。此外,一个或多个组件和/或子组件可以结合成提供聚集功能的单个组件。各组件
也可以与一个或多个其他组件进行交互,出于简要考虑在此未具体描述该组件,但本领域
的技术人员均已知。

此外,应该明白,以上公开系统以及以下方法的各个部分可包括或包含人工智能、
机器学习或知识或基于规则的组件、子组件、进程、装置、方法或机制(例如,支持向量机、神
经网络、专家系统、贝叶斯信任网络、模糊逻辑、数据融合引擎、分类器……)。这样的组件和
其它组件可以自动化执行某些机制或进程,由此使得系统和方法的各部分更为自适应、高
效及智能。作为示例而非限制,异步组件102或其一个或多个子组件可使用这些机制来有效
地确定或以其他方式推断服务器订阅、队列管理和/或来自服务器的标签流。

考虑到以上描述的示例性系统,参考图6-8的流程图将可以更好地理解依照所公
开的主题实现的方法。尽管为了说明简洁起见,作为一系列框示出和描述了方法,但是,应
该理解,所要求保护的主题不仅限于所描述框的顺序,一些框可以按与此处所描绘和描述
的不同的顺序进行和/或与其它框并发地进行。此外,并非全部所示出的框都是实现下面所
描述的方法所必需的。

参考图6,示出了从服务器600异步地收集数据元素的方法。在附图标记602处,接
收数据请求。作为示例而非限制,可接收与数据元素和所述数据元素的相应字节相关的两
个或更多数据请求。例如,可接收对具有第一字节数量的第一数据元素的第一数据请求,且
可接收对具有第二字节数量的第二数据元素的第二数据请求。例如,数据请求可由浏览器、
计算机、机器等传递。

在附图标记604处,可基于数据请求订阅至少一个数据源(例如,由服务器提供的
数据源)。一般而言,数据元素和相应的字节可由至少一个数据源(此处也简称为服务器)来
主存。可以理解,服务器可提供多个数据源。由此,基于数据请求和与该数据请求相关的数
据元素,实现对主存服务器的订阅。在附图标记606处,从至少一个服务器异步地获取流送
的的数据元素。作为示例而非限制,基于对此类服务器的订阅,从服务器连续地流送的相关
联数据元素的字节。此外,可以理解,与数据请求相关联的数据元素可以是具体值和/或基
于异步计算的值。换言之,可从相应的服务器并发地接收和处理多个数据请求和数据元素,
而与服务器响应时间、请求接收、数据元素特征(例如,字节大小、服务器位置、服务器速
度……)等无关。

图7描绘了管理从服务器700异步地获取并发送数据元素的队列的方法。在附图标
记702处,接收与数据元素相关的多个数据请求。例如,可接收与由至少一个数据源(例如,
服务器)主存的数据元素相关联的一个或多个数据请求。此外,这样的数据元素可包括多个
字节(例如,数据元素是通过构建对应数量的字节来构造的)。在标记704处,使用对主存每
一数据元素的每一服务器的订阅。订阅是基于所接收的多个数据请求而就每一服务器来执
行的,其中每一服务器对应于包括在数据请求中的数据元素。一般而言,对服务器的订阅使
数据流能连续并异步收集数据元素和相关联的字节。

在附图标记706处,从每一服务器异步地获取流送的数据元素的字节。与数据元素
相关的字节可以是具体值和/或来自异步计算的值。然而,与这样的特征(例如,具体值、从
异步计算生成的值等)无关,就其进行订阅的每一服务器流送每一数据元素的字节。在附图
标记708处,从每一服务器取得后,将每一数据元素的字节存储在队列中。如上所述,流送的
数据元素的数据是并发地收集的,与具体值和/或来自异步计算的值无关。队列从订阅的启
用异步数据元素聚合的每一服务器接收流送的字节和数据元素。

在附图标记710处,接收数据元素的字节总数后,释放来自队列的数据元素。换言
之,一旦字节总数经由与服务器相关联的订阅的流被收集,数据元素就可被发送——其允
许从队列异步释放数据元素。例如,数据元素可被发送至浏览器、机器、计算机等以供进一
步处理或实现。可以理解,可基于任何合适的策略优化数据元素的释放,并且基于接收数据
元素的全部字节而释放仅出于示例性目的。例如,可基于与这样的数据元素的请求者相关
联的预定义准则释放构建的数据元素(例如,包括字节总数的数据元素)。一般而言,通过交
错数据元素(例如,交错具体结果和异步计算的结果)和启用异步数据元素传递,数据元素
的释放可以是高效的。

在附图标记712处,基于释放的数据元素和流送的数据元素的字节管理队列的大
小。一般而言,例如,可管理队列以基于存储器容量来维持队列的大小。由此,可对传入数据
(例如,流送的数据元素的字节)和传出数据(例如,构建的数据元素)进行扼制以优化数据
供应性能。例如,可增加或减少传入数据请求的数量、对服务器的订阅的数量。在另一示例
中,与释放数据元素相关的延迟可增大或减小。

图8是呈现从web服务器800异步接收的数据元素的方法的流程图。在附图标记802
处,接收来自浏览器的对至少一个数据元素的数据请求,其中每一数据元素包括多个字节。
此外,数据元素可以是具体值或来自异步计算的值。在附图标记804处,执行对主存数据元
素的字节的每一服务器的订阅以接收字节流。作为示例而非限制,服务器可以是web服务
器。

在附图标记806处,对每一字节流加标签以和数据元素相关联。换言之,标签被用
于每一传入字节流以将每个流与相应的数据元素进行对应。作为示例而非限制,标签可基
于诸如数据元素类型、数据元素唯一标识(ID)、数据元素参考名、流订阅时间戳等准则,但
并不限于此。可以理解,将来自服务器的流与对应的数据元素进行匹配的任何合适的技术
都可与本发明一起使用。

在附图标记808处,将字节流从每一服务器异步地存储在队列中。队列可从多个服
务器并发地收集字节流以满足对这样的数据元素的数据请求。换言之,与数据元素具有具
体值或来自异步计算的值无关,队列可对于多个数据元素并进而对于多个数据请求从服务
器聚合字节流。

在附图标记810处,基于策略向浏览器释放数据元素。策略可优化队列以及向浏览
器发送数据元素。例如,策略可包括向浏览器的交错的数据元素传输,而与数据元素是具体
值还是异步计算所得的值无关。在另一示例中,策略可在完成后(例如,接收到数据元素的
字节总数)向浏览器释放构建的数据元素。在又一示例中,可基于请求者——这里是浏览
器——来对构建的数据元素排定优先级。

在附图标记812处,与浏览器一起使用数据元素(例如,包括经由来自web服务器的
流接收的字节总数的构建的数据元素)。在一具体示例中,数据元素可由浏览器呈现来显
示。

图9示出了第一时间线900和第二时间线924。第一时间线900指示现有技术。在附
图标记902处,服务器接收请求。在附图标记904处,服务器开始RESULTS1(结果1)。在附图标
记906处,服务器开始RESULTS2(结果2)。在附图标记908处,RESULTS1完成。在附图标记910
处,RESULTS2完成。在附图标记912处,开始向客户机的传输。在附图标记914处,RESULTS1被
传递至客户机。在附图标记916处,MIDDLE(中间)被传递至客户机。在附图标记918处,
RESULTS2被传递至客户机。在附图标记920处,向客户机的传输结束。在附图标记922处,请
求完成。

第一时间线900示出了数据请求的同步处理。一般而言,同步处理阻碍了
RESULTS1、MIDDLE和RESULTS2向客户机的传输。尽管完成了,但是RESULTS1的传输直至
RESULTS2完成才被传递至客户机。按照现有技术,请求的服务器负载和客户机等待时间被
增大。第一时间线900可以如下表示:


转到第二时间线924,描绘了结果的异步聚合。具体地,第二时间线924使具体值和
来自异步计算的值被交错来递送至客户机。

在附图标记926处,服务器接收请求。在附图标记928处,服务器开始RESULTS1。在
附图标记930处,服务器开始RESULTS2。在RESULTS1和RESULTS2开始期间,开始向客户机进
行传输。在附图标记932处,RESULTS1完成。在附图标记934处,RESULTS1被传递至客户机。在
附图标记936处,MIDDLE被传递至客户机。在附图标记938处,RESULTS2完成。在附图标记940
处,RESULTS2被传递至客户机。在附图标记942处,向客户机的传输结束。在附图标记944处,
请求完成。

如第二时间线924中所示,异步处理能更有效地履行请求以及向客户机递送结果。
具体地,传递的持续时间减小了。此外,与同步处理相比,客户机更早地接收满足初始请求
的数据。同样,使用第二时间线924,服务器负载减小了。第二时间线924可如下表示:

Writer.Write(start);

Writer.Write(AsyncCall1);

Writer.Write(middle);

Writer.Write(AsyncCall2);

Writer.Write(end);

此处使用的术语“组件”和“系统”及其各种形式旨在表示与计算机相关的实体,其
可以是硬件、硬件和软件的组合、软件、或执行中的软件。例如,组件可以是但不限于是,在
处理器上运行的进程、处理器、对象、实例、可执行程序、执行的线程、程序和/或计算机。作
为说明,在计算机上运行的应用和计算机都可以是组件。一个或多个组件可驻留在进程和/
或执行的线程内,并且组件可位于一个计算机上和/或分布在两个或更多的计算机之间。

本文使用的词语“示例性”或其各种形式意味着用作示例、实例或说明。在此被描
述为“示例性”的任何方面或设计并不一定要被解释为相比其它方面或设计更优选或有利。
此外,各示例只是出于清楚和理解的目的来提供的并且并不意味着以任何方式限制或约束
所要求保护主题或本发明的相关部分。可以理解,本来可呈现不同范围的多个附加或替换
示例,但出于简明的目的已被省略。

如此处所使用,术语“推论”或“推断”通常指的是从经由事件和/或数据捕捉的一
组观察结果来推理或推断系统、环境、和/或用户的状态的过程。可以使用推断来标识特定
上下文或动作,也可以生成例如状态上的概率分布。推断可以是概率性的,即,基于对数据
和事件的考虑,计算在感兴趣状态上的概率分布。推断也可以是指用于从一组事件和/或数
据构成较高级别的事件的技术。这样的推断导致从一组观察到的事件和/或存储的事件数
据构建新的事件或动作,不管事件在时间上是否紧密相关,以及事件和数据是来自一个还
是多个事件和数据源。可采用各种分类方案和/或系统(例如,支持向量机、神经网络、专家
系统、贝叶斯信任网络、模糊逻辑、数据融合引擎……)来执行关于所要求保护主题的自动
化和/或推断的动作。

而且,对于在具体实施方式或权利要求书中使用术语“包括”、“包含”、“具有”、“含
有”或其它形式的变型而言,这样的术语旨在以类似于术语“包括”的方式体现包含性,如同
“包括”在用作权利要求书中的过渡词时所解释的那样。

为了为所要求保护主题提供上下文,图10以及以下讨论旨在提供对其中可以实现
本主题的各方面的合适环境的简要、概括描述。然而,合适的环境只是示例并且并非旨在对
使用范围或功能提出任何限制。

尽管能够在可以在一台或多台计算机上运行的程序的计算机可执行指令的一般
上下文中描述以上公开的系统和方法,但是,本领域的技术人员将认识到,各方面也可以与
其他程序模块等相结合地实现。一般而言,程序模块包括执行特定任务或实现特定抽象数
据类型的例程、程序、组件和数据结构等。此外,本领域技术人员可以理解,上述系统和方法
可用各种计算机系统配置实现,包括单处理器、多处理器或多核处理器计算机系统、小型计
算设备、大型计算机、以及个人计算机、手持式计算设备(例如,个人数字助理(PDA)、电话、
手表……)、基于微处理器或可编程消费者或工业电子设备等。各方面也可以在其中任务由
通过通信网络链接的远程处理设备执行的分布式计算环境中实现。然而,所要求保护主题
的某些方面,如果不是所有方面的话,可以在独立计算机上实施。在分布式计算环境中,程
序模块可以位于本地和远程存储器存储设备中的一个或两者中。

参考图10,示出了示例通用计算机1010或计算设备(例如,台式机、膝上型计算机、
服务器、手持式设备、可编程消费或工业电子产品、机顶盒、游戏系统……)。计算机1010包
括一个或多个处理器1020、存储器1030、系统总线1040、大容量存储1050、以及一个或多个
接口组件1070。系统总线1040与至少上述系统组件通信地耦合。然而,可以理解,在其最简
单的形式中,计算机1010可包括耦合到存储器1030的一个或多个处理器1020,该一个或多
个处理器920执行各种计算机可执行动作、指令和或组件。

处理器1020可以用通用处理器、数字信号处理器(DSP)、应用程序专用集成电路
(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑设备、分立门或晶体管逻辑、分立硬件
组件或被设计为执行此处描述的功能的其任意组合来实现。通用处理器可以是微处理器,
但在替换方案中,处理器可以是任何处理器、控制器、微控制器、或状态机。处理器1020还可
被实现为计算设备的组合,例如DSP和微处理器的组合、多个微处理器、多核处理器、结合一
个DSP核的一个或多个微处理器、或任何其它这种配置。

计算机1010可包括各种计算机可读介质或以其他方式与各种计算机可读介质交
互以便于控制计算机1010来实现所要求保护主题的一个或多个方面。计算机可读介质可以
是能由计算机1010访问的任何可用介质,并包含易失性和非易失性介质以及可移动和不可
移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。

计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其
它数据这样的信息的任意方法或技术来实现的易失性和非易失性、可移动和不可移动介
质。计算机存储介质包括,但不限于,存储器设备(例如,随机存取存储器(RAM)、只读存储器
(ROM)、电可擦除可编程只读存储器(EEPROM)……)、磁存储设备(例如,硬盘、软盘、磁带盒、
磁带……)、光盘(例如,紧致盘(CD)、数字多功能盘(DVD)……)、以及固态设备(例如,固态
驱动器(SSD)、闪存驱动器(例如,卡、棒、键驱动器……)……)、或者可用于存储所需信息并
且可由计算机1010访问的任何其他介质。

通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读
指令、数据结构、程序模块或其他数据,并包括任何信息传送介质。术语“已调制数据信号”
是指具有以在信号中编码信息的方式被设定或改变其一个或多个特征的信号。作为示例而
非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红
外及其他无线介质之类的无线介质。上面各项中的任何项的组合也应该包括在计算机可读
介质的范围内。

存储器1030和大容量存储1050是计算机可读存储介质的示例。取决于计算设备的
确切配置和类型,存储器1030可以是易失性的(例如RAM)、非易失性的(例如ROM、闪存……)
或是两者的某种组合。作为示例,基本输入/输出系统(BIOS),包括诸如在启动期间在计算
机1010内的元件之间传输信息的基本例程,可被存储在非易失性存储器中,而易失性存储
器可担当外部高速缓存存储器以便于处理器1020的处理等。

大容量存储1050包括相对于存储器1030用于存储大量数据的可移动/不可移动、
易失性/非易失性计算机存储介质。例如,大容量存储1050包括但不限于,诸如磁盘或光盘
驱动器、软盘驱动器、闪存存储器、固态驱动器、或记忆棒的一个或多个设备。

存储器1030和大容量存储1050可包括或其中存储有操作系统1060、一个或多个应
用1062、一个或多个程序模块1064和数据1066。操作系统1060用于控制和分配计算机1010
的资源。应用1062包括系统和应用软件中的一个或两个,并且可利用操作系统1060对资源
的管理通过存储在存储器1030和/或大容量存储1050中的程序模块1064和数据1066来执行
一个或多个动作。因此,应用1062可根据由此提供的逻辑来将通用计算机1010变成专用机
器。

所要求保护主题的全部或各部分可以使用产生控制计算机以实现所公开功能的
软件、固件、硬件或其任意组合的标准编程和/或工程技术来实现。作为示例而非限制,异步
组件102可以是应用程序1062或形成应用程序1062的一部分,并且包括存储在存储器和/或
大容量存储1050中的一个或多个模块1064和数据1066,其功能可以在由所示的一个或多个
处理器1020执行时实现。

根据一个特定实施例,处理器1020可与片上系统(SOC)或在单个集成电路基座上
包括(或换言之集成)硬件和软件的类似体系结构相对应。此处,处理器1020可包括至少与
处理器1020和存储器1030相似的一个或多个处理器以及存储器等。常规处理器包括最少量
的硬件和软件并且广泛依赖于外部硬件和软件。作为对比,处理器的SOC实现更强大,因为
它将硬件和软件嵌入其中以能够用最少的硬件和软件或不依赖于外部硬件和软件来启用
特定功能。例如,异步组件102和/或相关联的功能可被嵌入到SOC体系结构中的硬件内。

计算机1010还包括通信地耦合到系统总线1040并方便与计算机1010的交互的一
个或多个接口组件1070。作为示例,接口组件1070可以是端口(例如,串行、并行、PCMCIA、
USB、火线……)或接口卡(例如,声音、视频……)等等。在一个示例实现中,接口组件1070可
被具体化为用户输入/输出接口,该用户输入/输出接口使得用户能够通过一个或多个输入
设备(例如,诸如鼠标等定点设备、跟踪球、指示笔、触摸垫、键盘、话筒、操纵杆、游戏手柄、
圆盘式卫星天线、扫描仪、照相机、其他计算机……)来将命令和信息输入到计算机1010中。
在另一示例实现中,接口组件1070可被具体化为输出外围接口,该输出外围接口向显示器
(例如,CRT、LCD、等离子……)、扬声器、打印机和/或其他计算机等提供输出。此外,接口组
件1070可被具体化为网络接口,该网络接口使得能够诸如通过有线或无线通信链路与其他
计算设备(未示出)通信。

以上所已经描述的内容包括所要求保护主题的各方面的示例。当然,出于描绘所
要求保护主题的目的而描述每一个可以想到的组件或方法的组合是不可能的,但本领域内
的普通技术人员应该认识到,所要求保护主题的许多进一步的组合和排列都是可能的。从
而,所公开的主题旨在涵盖落入所附权利要求书的精神和范围内的所有这样的变更、修改
和变化。

混合同步和异步数据流.pdf_第1页
第1页 / 共26页
混合同步和异步数据流.pdf_第2页
第2页 / 共26页
混合同步和异步数据流.pdf_第3页
第3页 / 共26页
点击查看更多>>
资源描述

《混合同步和异步数据流.pdf》由会员分享,可在线阅读,更多相关《混合同步和异步数据流.pdf(26页珍藏版)》请在专利查询网上搜索。

本文描述了混合同步和异步数据流。队列可存储基于接收到的数据请求和后续对于一个或多个数据源/服务器的订阅从服务器异步获取的数据流。例如,可管理队列以用于后续接收的数据流的同步或异步释放。。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1