客户机-服务器会话并行化的制作方法

文档序号:7685781阅读:111来源:国知局
专利名称:客户机-服务器会话并行化的制作方法
技术领域
本发明涉及计算机网络通信技术,尤其涉及客户机-服务器会话并行化。
背景技术
从因特网或另一网络上的服务器上下载文件和其它数据会需要一定的时间段。下载时间取决于诸如所用带宽、服务器上的负载、数据的大小以及是否涉及压缩、加密或其它编码等因素。多源化可通过从例如多个镜像服务器等两个或多个源获得文件数据来减少大文件的下载时间。在某些情况下,执行多源下载的程序将连接至一个服务器并开始下载所需文件的一部分,然后寻找主存相同文件的另一个服务器并开始下载该相同文件的另一部分。可采用第三服务器来下载文件的第三部分,依此类推。为了提高效率,这样的程序可对文件进行分段以使得不同的部分(诸片段组(segment groups))是来自不同服务器的;用户不会下载该文件的相同部分两次。该程序组装各文件片段,且获得组装完成后的文件的速度高于从单个源下载文件的速度。下载管理程序以及下载相对较大文件的其它程序经常采用多源下载。

发明内容
客户机-服务器会话在访问资源、不可用服务、以及其它挑战时会遭遇延时。在许多情况下,客户机在DNS超时、TCP超时、或其它时间段期满之前无法重新连接至功能服务器。因此,等待时间、丢掉的通信量、以及其它不利条件会干扰用户的期望体验。此处所描述的一些实施例提供客户机-服务器会话并行化,以减少或消除在使用 web浏览器、电子邮件客户端、流媒体客户端、或其它应用程序期间由网络通信困难所造成的不期望的体验。在一些实施例中,客户机设备在客户机设备上建立与第一远程服务器的第一网络通信会话,还建立与第二服务器的第二会话。客户机在第一会话中向第一服务器请求未分段数据项的第一副本,并且还在第二会话中向第二服务器请求该相同项的第二副本。客户机并不对数据项进行分段以向不同服务器请求不同部分(片段组)。最先被客户机设备接收到的那个未分段数据项的副本被提供至应用程序。管理客户机-服务器会话并行化的软件可以是网络栈的一部分,或者它可驻留在更高层,例如,它可以被嵌入或插入作为应用程序的部分。当在多个会话中向多个服务器进行请求之后,可类似地从与第一项相同的服务器处或者从其它服务器处获得第二未分段数据项。即,在一些实施例中,并不由此排他地使用已成功提供第一项的服务器;其继续与其它服务器竞争以提供所请求的数据项。客户机设备可包括台式计算机或便携式计算机、移动电话、游戏控制台和其它联网设备。未分段数据项可采用各种形式,例如媒体流、网页、大小至少为100K字节的文件、 大小至少为500k字节的文件、大小至少为IM字节的文件。这些文件大小仅仅是说明性的; 给定实施例可采用用于所有数据项的客户机-服务器会话并行化,而无论它们的大小如何。在某些实施例中,仅客户机是意识到正采用客户机-服务器会话并行化(CSSP) 的。在这种情况下,从客户机应用程序的角度来看,会话是无状态的。在其它实施例中,整个服务器或者服务器上的至少一应用程序是意识到哪个会话是CSSP配置的一部分。当服务器整个都是有意识的时候,例如,CSSP会话和非CSSP会话可以被负载平衡。还可以鉴于服务器的负载、即将到来的服务器重启或其它事件来将CSSP会话转移到其它具有CSSP 意识(CSSP-aware)的服务器。当服务器整体不具有CSSP意识,但服务器上的应用程序对 CSSP有意识时,则对无法对非CSSP会话进行负载平衡,但转移至其它服务器可仍然是一个选择。当服务器,或者是在CSSP服务器应用程序的仅处理CSSP会话的部分层上,或者是在处理CSSP会话和其它会话两者的整体层上,意识到CSSP,则服务器在此处被称为是具有 CSSP意识的。在某些实施例中,CSSP客户机与具有CSSP意识的服务器或服务器应用程序通信以针对服务器重启和其它事件协调下载。例如,CSSP客户机可向CSSP服务器通知状态信息,该状态信息描述了在客户机上建立的与其它服务器的会话,从而例如当CSSP客户机具有足够的备用数据源时允许服务器将带宽重新分配给其它客户机。给出的示例仅是说明性的。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。相反,提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的某些概念。本发明用权利要求书来定义,且在本概述与权利要求书冲突的情况下,应以权利要求书为准。


将参考附图来给出更具体的描述。这些附图仅示出了所选方面,且因此未完全确定覆盖面或范围。图1是示出一客户机设备的框图,该客户机设备具有至少一个处理器、至少一个存储器、支持一个或多个应用程序的至少一个网络栈、以及可存在于多个网络节点上的操作环境中的其它项目,并且还示出了经配置的存储介质实施例;图2是示出一示例体系结构中的客户机-服务器会话并行化的诸方面的数据流程图;图3是示出一些过程的步骤和经配置的存储介质实施例的流程图;图4是示出具有两个服务器的配置中的客户机-服务器会话并行化的数据流程图;图5是示出具有CSSP意识的(CSSP-aware)客户机和三个不具有CSSP意识的 (CSSP-unaware)服务器的配置中的客户机-服务器会话并行化的数据流程图;以及图6是示出具有至少一个有意识客户机和一个有意识服务器的配置中的客户机-服务器会话并行化的数据流程图。
具体实施例方式概览为了减少等待时间和其它困难,一些熟悉的方法采用诸如广域负载平衡等断开连接云技术来总体将网络流量引导至全局网络上的负载较轻的IP地址。在所讨论的服务器或客户机并不进行负载平衡决策的意义上,这些技术是不连贯的。这些技术的结果是有限的;在会话期间,服务器或网络位置(或整个端到端通信信道本身)的性能或者可用性的改变会不利地影响客户机体验,但负载平衡机制至少在一开始并未认识到该问题。在负载平衡机制认识到该问题之后,该机制所采取的步骤会仅对今后的会话有利,使得当前会话处于降级或失败状态。此处所描述的一些实施例提供用于客户机-服务器会话并行化(CSSP)的手段和技术,通过客户机-服务器会话并行化,用户可维护多个服务器会话并在任何点选择最佳可用会话。对CSSP会话的意识可在仅客户机上实现,或者与服务器侧CSSP模块合作实现。 CSSP可帮助实现更佳的客户机性能和/或帮助实现联网的应用程序的更佳的冗余性。一些CSSP客户机下载两个或更多同步流。一些CSSP客户机建立多个冗余会话,以减少当退回到替换源时的等待时间。现在将参考诸如附图中示出的示例性实施例,且此处将使用具体语言来描述这些实施例。但是相关领域且拥有本发明的技术人员将想到的、对此处所示的特征的更改和进一步修改以及此处所示的原理的应用应被认为是在权利要求书的范围内。各术语的含义在本发明中予以阐明,因此应仔细注意这些阐明来阅读权利要求书。给出了具体示例,但是相关领域的技术人员能够理解,其它示例也落入所使用的术语的含义内,并且落入一个或多个权利要求的范围内。各术语不必在此具有与其一般使用中、特定行业的使用中、或特定字典或字典集的使用中相同的含义。与各种措辞一起使用附图标记来帮助显示术语的广度。给定一段文字中省略附图标记并不一定意味着该附图的内容没有被该文字讨论。发明人声称并行使其对于其自己的词典编纂的权利。各术语可在此处的说明书和/或申请文件的别处显式或隐式地定义。如本文所使用的,计算机系统可包括例如一个或多个服务器、主板、处理节点、个人计算机(便携式或非便携式)、个人数字助理、蜂窝或移动电话、和/或提供至少部分地由指令控制的一个或多个处理器的其它设备。指令可以采用存储器中的软件的形式和/或采用专用电路的形式。具体而言,尽管可以想到许多实施例在工作站或膝上型计算机上运行, 但其它实施例可以在其他计算设备上运行,且任何一个或多个此类设备可以是给定实施例的一部分。多线程化计算机系统是支持多个执行线程的计算机系统。术语线程应被理解为包括能够或经历同步的任何代码,并且可用另一名称来称呼,如“任务”、“进程”或“协同例程”。线程可以并行地、顺序地、或以并行执行(例如多处理)和顺序执行(例如时间分片) 的组合来运行。以各种配置设计了多线程化环境。执行线程可以并行地运行,或者线程可以被组织为供并行执行但实际顺序地轮流执行。多线程化可以例如通过在多处理环境中在不同核上运行不同线程、通过对单个处理器核上的不同线程进行时间分片、或通过时间分片和多处理器线程化的某种组合来实现。线程上下文切换可以例如由内核的线程调度器、 由用户空间信号、或由用户空间和内核操作的组合来发起。线程可以轮流操作共享数据,或者每一线程可以例如操作其自己的数据。“逻辑处理器”或“处理器”是单个独立的硬件线程处理单元。例如,每一个核运行两个线程的超线程化四核芯片具有8个逻辑处理器。处理器可以是通用的,或者它们可以针对诸如图形处理、信号处理、浮点算术处理、加密、I/O处理等特定用途来定制。“多处理器计算机”是具有多个逻辑处理器的计算机系统。多处理器环境以各种配置出现。在一给定配置中,所有处理器可以在功能上是等价的,而在另一配置中,一些处理器可以借助具有不同硬件能力、不同软件分配或两者而不同于其他处理器。取决于配置,处理器可在单个总线上彼此紧耦合,或者它们可以是松耦合的。在一些配置中,处理器共享中央存储器,在一些配置中它们各自具有其自己的本地存储器,且一些配置中存在共享和本地存储器两者。“内核”包括操作系统、系统管理程序、虚拟机、以及类似的硬件接口软件。“代码”是指处理器指令、数据(包括常量、变量和数据结构)或指令和数据两者。“自动”意味着通过使用自动化(例如,由软件针对此处讨论的具体操作配置的通用计算硬件),与不使用自动化相对。具体而言,“自动”执行的步骤并不是在纸张上用手执行或在人的脑海中执行的;它们是用机器来执行的。贯穿本文,对可选择的复数的使用意味着存在一个或多个所指示的特征。例如, “(诸)服务器”意味着“一个或多个处理器”或等效于“至少一个服务器”。贯穿本文,除非明确地另外规定,否则对过程中的步骤的任何引用假定该步骤可以由所关注的一方直接执行和/或由该方通过中间机制和/或中间实体来间接执行,且仍在该步骤的范围内。也就是说,所关注的一方对步骤的直接执行并不是必需的,除非直接执行是明确规定的要求。例如,涉及所关注的一方的诸如向目的地“传送”、“发送”或“传递” 等动作的步骤可涉及某一其他方的诸如转发、复制、上传、下载、编码、解码、压缩、解压、加密、解密等中间动作,但仍被理解为由该所关注的一方直接执行。只要参考了数据或指令,就理解这些项目配置了计算机可读存储器,从而将其变换为特定物品,而非简单地存在于纸张上、人的脑海中、或作为例如线路上的瞬时信号。操作环境参考图1,用于一个实施例的操作环境100可包括计算机系统102。计算机系统 102可以是多处理器计算机系统,或者也可以不是多处理器计算机系统,并且可以是例如移动电话120、游戏控制台122等较大设备102或其它设备的子系统。操作环境可包括给定计算机系统中的一个或多个机器,它们可以群集的、客户机-服务器联网的、和/或对等联网的。人类用户104可以通过使用显示器、键盘、话筒、操纵杆、按钮和其它外围设备106 来与计算机系统102交互。系统管理员、开发人员、工程技术人员、以及最终用户各自都是特定类型的用户104。代表一个或多个人来行动的自动化代理也可以是用户104。存储设备和/或联网设备在一些实施例中可被认为是外围设备。图1中未示出的其他计算机系统可以使用经由例如网络接口设备到网络108的一个或多个连接来与计算机系统102或与另一系统实施例交互。计算机系统102包括至少一个逻辑处理器110。如其他合适的系统等计算机系统 102还包括一个或多个计算机可读非瞬态存储介质112。介质112可以是不同的物理类型。 介质112可以是易失性存储器、非易失性存储器、固定在原处的介质、可移动介质、磁介质、 光介质、和/或其他类型的非瞬态介质(与诸如仅传播信号的线路等瞬态介质形成对比)。 具体而言,诸如CD、DVD、记忆棒、闪存卡或其它可移动非易失性存储介质等经配置的介质114在被插入或以其他方式安装时可以在功能上变为计算机系统的一部分,从而使得其内容可被访问以供处理器110使用。可移动的经配置的介质114是计算机可读存储介质112 的一个示例。计算机可读存储介质112的一些其他示例包括内置RAM、R0M、硬盘、和不可由用户104容易地移动的其他存储设备。介质114用可由处理器110执行的指令116来配置;“可执行”在此以宽泛的意义使用来包括机器代码、可解释代码、以及在例如虚拟机上运行的代码。介质114还用通过执行指令116被创建、修改、引用和/或以其他方式使用的数据118来配置。指令116和数据 118配置它们所驻留于的介质114 ;当该存储器是给定计算机系统的功能部分时,指令116 和数据118还配置该计算机系统。在某些实施例中,数据118的一部分代表了诸如产品特性、库存、物理测量、设置、图像、读数、目标、量等的真实项目。如本文讨论的,这样的数据也被转换,例如通过流化、绑定、部署、执行、修改、显示、创建、加载、和/或其它操作。图中所示的应用程序124、网络栈126、其它软件和其它项可以部分地或全部地驻留在一个或多个介质112中,从而配置这些介质。操作环境还可包括诸如电话120硬件组件(麦克风、扬声器、屏幕、天线、信号处理器等)、游戏控制台122硬件(按钮、触发器、加速计、显示器等)、总线、电源、以及图形加速器等之类的其它硬件。在网络栈1 的帮助下,应用程序IM可以从(诸)服务器130出检索(诸)数据项1 或将(诸)数据项1 上传至(诸)服务器130项目在图1中以轮廓形式示出以强调它们不是所示操作环境的必需部分,但可以与在此讨论的操作环境中的项目进行互操作。在任何附图或任何实施例中,不能得出不采用轮廓形式的项目就一定是不需要的。系统图2示出了适用于某些实施例的客户机-服务器会话并行化(CSSP)的体系结构的各方面。在客户机设备102上,下载数据项1 的应用程序IM驻留在存储器112中。例如,应用程序1 可以是具有CSSP意识的应用程序200或者是不具有CSSP意识的应用程序,并且可包括web浏览器202、电子邮件客户端204、流媒体客户端206、和/或应用程序代码。(诸)数据项1 可以是例如流208、多媒体游戏210、和/或视频212,也可以是文件、订阅源、和其它形式的数据。客户机上的CSSP模块214与多个服务器130建立多个会话216。服务器可以未意识到CSSP,如所示的服务器218,和/或服务器可以意识到CSSP, 如所示的具有服务器CSSP模块222的服务器220。通常,至少客户机是对CSSP有意识的; 给定配置可以包括或不包括(诸)具有CSSP意识的服务器220。在一些实施方式中,客户机设备102包括至少一个逻辑处理器110和与该逻辑处理器进行可操作通信的存储器112。如此处所述,以电路、固件和/或驻留在存储器中的软件的形式存在的客户机-服务器-会话-并行化(CSSP)模块214可操作地将数据项的多个远程副本转变成单个本地副本。CSSP模块可操作地发起与多个服务器130的多个会话 216,请求每个会话中的给定的未分段数据项128。S卩,在每个会话216中请求相同数据项 128,并且客户机不需要将数据项分段成多个块或者其它片段以便在不同服务器中分配不同部分来用于下载。例如,在某些实施例中,客户机设备102被配置成具有位于存储器中的未分段数据项1 的至少一部分,并且该未分段数据项包括数据流208,诸如视频212 (图像和声音数据)流或多媒体游戏210的一部分。
在某些实施例中,客户机CSSP模块214驻留在有时被称为“协议栈”或“通信栈” 的网络栈126中。例如,在具有媒体层、传输层和应用层的栈126中,CSSP模块可在传输层中操作。因此,所有采用该栈126的应用程序可透明地接收CSSP的好处,例如,它们更快接收下载,而不需要显式地管理各个会话。在某些实施例中,应用程序通过仅指定域名或多个服务器地址的其它源以及要下载的未分段数据1 来调用模块214的应用层到传输层接口。随后,网络栈的CSSP组件(模块214的另一部分)发起与多个服务器130的多个会话 216,请求每个会话中的未分段项,并将首先接收到的项的未分段副本递送到请求方应用程序 124。关于术语“未分段”,可以理解的是,熟悉的网络栈将被请求的数据项分割成数个分组以用于传输,并且可以理解的是,熟悉的存储器管理代码可将被请求的数据项和其它数据分割成多个页以实现虚拟存储器。这些操作并不创建用于当前目的的“片段”;IP分组并不是片段,并且存储器页并不是片段。相比于分组或分页,分段(segmentation)发生在更高层面,并且用于不同的目的。如此出所使用的,当数据项通过代码被分成多个片段时, 数据项“被分段”,该代码被设计成从不同源处下载数据项的不同片段并随后将接收到的片段组装起来以提供数据项的完整副本。当没有必要分段时,例如,当从多个源请求该数据项的全部并且对该项的多个副本的接收发生在正常操作中时,则,出于当前目的,数据项“未分段”。在某些实施例中,CSSP模块214驻留在特定的应用程序124、200中。例如,CSSP 模块214可以被嵌入在调用熟悉的协议栈1 的应用程序的代码中。CSSP模块还可以被实现为例如浏览器202插件。在这种情况下,仅所讨论的应用程序将接收CSSP模块214的好处。在一些实施例中,将存在诸如人类用户I/O设备(屏幕、键盘、鼠标、图形输入板、 话筒、扬声器、运动传感器等)等外围设备106,以用于与一个或多个处理器110和存储器进行通信。然而,实施例还可被深嵌入在系统中,使得没有人类用户104直接与该实施例交互。软件进程可以是用户104。在一些实施例中,该系统包括通过网络连接的多个计算机。联网接口设备可以使用诸如例如存在于计算机系统中的分组交换网络接口卡、无线收发机、或电话网络接口等组件来提供对网络108的访问。然而,实施例也可通过直接存储器存取、可移动非易失性介质、或其他信息存储-检索和/或传输方法来通信,或者计算机系统中的实施例可以在不与其他计算机系统通信的情况下操作。过程图3以流程图300示出了某些过程实施例。附图中所示的过程可以在某些实施例中例如由在脚本控制下的进行下载的应用程序来自动地执行,需要极少或不需要用户输入,其中该应用程序包含CSSP模块214或调用网络栈CSSP模块214。除非另行指明,各过程可以部分地自动以及部分人工地执行。在给定实施例中,可以重复过程的零个或更多个所示步骤,可能对不同参数或数据进行操作。实施例中的各步骤也可以按与图3中列出的从上到下次序不同的次序来完成。各步骤可以串行地、以部分重叠的方式、或完全并行地执行。遍历流程图300来指示在过程期间执行的步骤的次序可以因该过程的每次执行而异。 流程图遍历次序也可以因过程实施例而异。各步骤可以被省略、组合、重命名、重组合、或以其他方式不同于所示流程,只要所执行的过程是可操作的并且符合至少一个权利要求。此处提供了各示例来帮助说明该技术的各方面,但是本说明书中给出的示例并未描述所有可能的实施例。各实施例不限于此处提供的具体实施方式
、排列、显示、特征、方法或场景。给定实施例可以例如包括附加或不同的特征、机制和/或数据结构,并且还可以以其他方式不同于此处提供的示例。在会话建立步骤302期间,一实施例建立客户机设备和服务器之间的会话216。该会话可以是客户机与服务器的首次会话,或者是客户机请求给定数据项的首次会话,或者所讨论的步骤302的实例在步骤302的早前实例之后,在该早前实例中,用户与相同或不同的服务器建立了另一个会话以请求相同或不同的数据项。可以采用用于建立例如TCP会话、OSI会话层会话、或HTTP会话等熟悉的会话建立机制来实施步骤302。在项请求步骤304期间,实施例在特定会话216内从特定服务器130请求未分段数据项128的副本。可以重复步骤304,从而例如从另一个服务器中请求相同项128。步骤 304可以使用例如HTTP GET (HTTP获得)等熟悉的机制来完成,或例如请求流化特定文件来完成。在项提供步骤306中,实施例(具体地,实施例的CSSP模块214)向调用CSSP模块214的应用程序或其它软件提供未分段数据项128的单个副本。步骤306可例如通过传递缓冲地址、通过制作按位副本、或通过用于传递返回值的其它熟悉的机制来完成。在请求重复步骤308期间,一实施例重复步骤304,但请求与最初请求中不同的数据项1 和/或向不同服务器发送请求。在项接收步骤310期间,实施例(具体地,实施例的CSSP模块214)接收来自服务器的未分段数据项1 的至少一部分。步骤310可以重复早前的接收步骤310,其中该项从不同的服务器和/或在不同的会话内被接收。步骤310可采用用于在网络上接收数据传输的熟悉机制来完成。在服务器通知步骤312期间,实施例(具体地,实施例的CSSP模块214)向具有 CSSP意识的服务器220通知(例如,通过通知服务器中的具有CSSP意识的应用程序或其它模块22 除了当前会话之外的至少一个会话的会话状态314。会话状态可包括例如会话标识符、服务器地址、客户机地址、会话健康指示(例如,健康、超时、缓慢等)以及在该会话内已接收到所请求的数据项的多少的指示。例如,可以使用适用于此处所教示的CSSP控制消息的熟悉的服务器通信机制来完成步骤312。在特定项请求步骤316期间,实施例请求304或重复308对未分段数据项的请求。 步骤316在此处被单独叙述,以便指出作为请求304的经常对象的若干类型的数据项,即网页318、文件320、流208、游戏210和视频212。然而,步骤304不限于那些特定示例。在无状态会话建立步骤302中,实施例建立302会话216,该会话从客户机的角度来看是无状态会话322。无状态会话322例如在其中服务器130中没有一个是对CSSP有意识的配置中发生。在接收开始步骤3M期间,实施例开始接收流数据项128。在此处所教示的CSSP 的上下文中,可以使用用于接收流208的熟悉的机制来完成步骤324。在不可用通知接收步骤3 期间,实施例(具体地,实施例的客户机CSSP模块 214)接收来自服务器CSSP模块222的不可用通知328,指示该服务器将变得不可用于继续
10发送数据项128。通知3 可以给出不可用的原因,例如即将到来的重新引导,并且可给出不可用的时间帧,例如从现在起的60秒至100秒,或者太平洋标准时间今天下午3 00。该通知可标识332救济服务器(reliefserver),即在当前服务器不在的情况下将可用于继续发送数据项的另一个服务器。领导者服务器CSSP模块222可发送通知328,指示作为跟随者服务器130的其它服务器的不可用。在此处所教示的CSSP上下文中,可以使用用于进行协议控制通信的熟悉的机制来完成步骤326、332。在转移步骤330期间,实施例将流208从第一服务器220转移到第二服务器220, 例如,将流208从根据通知328的即将不可用的服务器转移到通知328中标识332的救济服务器。在第二服务器处,流下载并不退回到流的起始处,而是从足够接近中断点地拾起, 以至于在客户机设备104上观看流的用户104极少体验到或没有察觉到中断,或者至少在因视频缓冲回放停止而与服务器转移330无关的情形中无异常中断。在会话发起步骤334期间,实施例通过建立与救济服务器220的会话来发起会话。在转移指示步骤336期间,实施例向救济服务器220指示当前会话(例如,当前正在建立的会话或者刚建立的会话)是来自不可用服务器的转移330。例如,客户机可为救济服务器指定338开始继续流208的传输的时间,该时间可以是绝对时间或相对时间。在显示步骤340期间,实施例显示数据项128的所接收到的部分342。例如,媒体播放器可显示接收到的视频流数据,浏览器可显示接收到的网页,等等。此处所使用的,“显示”包括发送输出至屏幕、扬声器、游戏控制器振动单元、盲人用点字法(Braille)受控杆设备、或其它人类可感知的输出外围设备106。在存储器配置步骤;344期间,存储器介质112由客户机CSSP模块214、服务器CSSP 模块222、或其它与此处所讨论的客户机-服务器并行化相关者来配置。下面将参考各实施例比较详细地讨论前面的步骤和它们的相互关系。一些实施例提供用于将数据项的多个远程副本转变成该项的单个本地副本的过程。该过程包括在客户机设备处建立302在客户机设备上运行的应用程序与第一远程服务器之间的第一网络通信会话,以及在客户机设备处建立302在客户机设备上运行的该应用程序与第二远程服务器之间的第二网络通信会话。附加步骤包括在第一网络通信会话内且代表该应用程序从第一远程服务器请求304未分段数据项的第一副本,以及在第二网络通信会话内且代表该应用程序从第二远程服务器请求304该相同的未分段数据项的第二副本。过程向应用程序提供306未分段数据项的仅一个副本,即在客户机设备上最先接收到的那个未分段数据项的副本。如所述的,网络通信协议将数据按例如帧、数据报、以及分组等形式来自动划分。 本上下文中的“未分段”指的是采用CSSP的应用程序并不依赖于数据分段。至少某些实施例并不将文件分段成块,而是替代地与所有流化以及联网通信一起工作。一些实施例包括在客户机上的过程重复308对第二未分段数据项的请求步骤,并向应用程序提供306该第二未分段数据项的仅一个副本,即在客户机设备上最先接收到的那个未分段数据项的副本。在一些情况下,提供给应用程序的第一未分段数据项的副本在与提供给应用程序的第二未分段数据项的副本不同的会话以及不同的服务器中被接收到 310。即,在一些情况下,诸会话中的一个会话对于一段数据更好起作用,而另一个会话对于另一段数据更好起作用。有时,客户机在与服务器A的会话中从服务器A处获得数据,有时,客户机在与服务器B的会话中从服务器B处获得数据。在某些情况下,诸如来自服务器 A的流等未分段数据项的初始部分首先到达客户机,而之后来自服务器A的数据流较慢,由此CSSP开始提供来自服务器B的数据,而服务器A停止。在某些实施例中,客户机可通过向服务器220通知312会话状态314来向具有 CSSP意识的服务器发送反馈。通知312可以通知由服务器做出的优先次序决定。例如,如果陷入困境的服务器被通知具有CSSP意识的客户机具有多个适当的流,则该服务器可以或者终止其与客户机的会话或者对与不具有CSSP意识的客户机的其它会话区分优先级(例如,通过调整CPU上的相关联线程的优先级)。因此,在某些实施例中,该过程包括向至少一个服务器通知312描述了在客户机设备上建立的与除了被通知的服务器之外的服务器之间的会话的状态信息。在某些实施例中,建立步骤302、请求步骤304、提供步骤306、以及应用程序均采用客户机设备102上的同一个逻辑处理器110。S卩,应用程序和CSSP代码可在同一个设备上运行。在替换性实施例中,应用程序在一个设备上运行,而CSSP代码在例如代理服务器或联网的设备等不同的设备上运行。在一些实施例中,请求步骤请求316以下未分段数据项1 中的至少一个媒体流 208、网页319、大小至少为100K字节的文件320、大小至少为500k字节的文件320、大小至少为IM字节的文件320。这些文件大小只是说明性的。在一些实施例中,例如,小于100K 字节的文件320也可采用CSSP来下载。诸如如下将立即讨论的过程可以在仅客户机的场景中执行或者在客户机-服务器-合作的场景中执行。即,诸如步骤302-310的步骤可以通过CSSP客户机与具有CSSP 意识的服务器220通信、与不具有CSSP意识的服务器218通信、或者与两种服务器通信来执行。可以从例如具有意识和不具有意识的服务器220、218两者中请求给定的数据项。从客户机的角度来看,无状态会话暗示了不具有意识的服务器218。其它过程涉及客户机-服务器-合作场景,其中客户机正与具有CSSP意识的服务器通信以转移现有的流。例如,在某些实施例中,未分段数据项1 包括流数据,并且在客户机设备处的过程包括开始3M在第一会话中从第一服务器接收流数据,从第一服务器接收3 该第一服务器将在流数据的传输完成之前将变为不可用的通知328,并且,响应于该通知,将对流数据的接收转移330到与另一个服务器的会话。在一些实施例中,来自第一服务器的通知3 标识332在第一服务器变得不可用之后将传输流数据的服务器。即,来自将关闭的服务器的不可用通知将告知哪个服务器将接管流传输。例如,作为服务器A关闭过程的一部分,CSSP服务器服务可自动通知所有具有CSSP意识的所连接客户机以将它们的会话转移至服务器B。在一些实施例中,将对流数据的接收转移330至与另一个服务器的会话包括发起 334与服务器(除了第一服务器之外)的新会话并指示336现有的流正在被转移。在一些实施例中,将对流数据的接收转移至与另一服务器的会话还包括指定338开始继续流的时间。例如,有CSSP意识的媒体播放器可指定开始继续流的时间间隔。可以绝对或相对方式指定时间,例如,指定为特定时间点(“PST(太平洋标准时间)12点”)或间隔(“10s内” 或“尽快”)。用于网络通信的过程的实施例使用具有可操作地与至少一个存储器通信的至少
12一个逻辑处理器的设备、以及使用至少两个服务器,每隔服务器具有可操作地与至少一个存储器通信的至少一个逻辑处理器。该过程可包括建立302客户机设备与第一服务器之间的第一网络通信会话,以及建立302客户机设备与第二服务器之间的第二网络通信会话。 该客户机设备在第一网络通信会话中向第一服务器请求304未分段数据项的副本,并且还在第二网络通信会话中向第二服务器请求304该相同的未分段数据项的副本。在某些情况下,如果所有都进行地足够好,则客户机设备从至少一个服务器中接收310未分段数据项的至少一部分,然后,客户机设备显示340所接收的部分。例如,客户机设备可接收并显示作为未分段数据项的部分的流数据。—些实施例使用三个或更多服务器。例如,过程可建立302客户机设备与第三服务器之间的第三网络通信会话,并且在第三网络通信会话内从第三服务器请求304相同的未分段数据项的副本。在一些实施例中,客户机设备接收3 服务器220超负荷的通知328。响应于该通知,客户机可转移330至与另一服务器的会话。通知3 可从服务器负载平衡器的使用中产生。例如,一些实施例周期性地切换通信量,以便促进更有效的电源消耗。经配置的介质一些实施例包括经配置的计算机可读取的存储介质112。介质112可包括盘(磁盘、光盘或其他)、RAM、EEPR0M或其他ROM、和/或其他可配置存储器,具体包括非瞬态计算机可读介质(与电线和其他传播信号介质相对)。经配置的存储介质可以是诸如CD、DVD或闪存之类的可移动存储介质114。可以是可移动或不可移动并且可以是易失性或非易失性的通用存储器可被配置成使用数据118和指令116形式的从可移动介质114和/或诸如网络连接等另一源读取的诸如CSSP模块214、222和/或用于不同会话216中的相同未分段数据项128的冗余数据请求等项目来形成经配置的介质的实施例。经配置的介质112能够使计算机系统执行如此处所披露的用于将多个远程副本转变成数据项的单个本地副本的过程步骤。因此,图1至3帮助示出配置的存储介质实施例和过程实施例、以及系统和过程实施例。具体而言,图3中所示出的,或此处以其他方式讲述的进程步骤中的任何一个,可以被用来帮助配置存储介质以形成经配置的介质实施例。补充示例下面提供了更多细节和设计考虑。如同此处的其他示例,在给定实施例中,所描述的特征可以分别地使用和/或组合地使用,或根本不使用。那些本领域的技术人员将理解,实现细节可以涉及诸如特定API和特定示例程序之类的特定代码,且因此,不必出现在每个实施例中。那些本领域的技术人员还将理解,在讨论细节时所使用的程序标识符和某些其他术语是实现特定的,如此,不必涉及每个实施例。尽管如此,虽然它们不一定需要出现在这里,但是,提供了这些细节,因为它们通过提供上下文可以帮助一些读者,和/或可以示出此处所讨论的技术的许多可能的实现中的一些。在一些实施例中,客户机-服务器会话并行化(CSSP)允许客户机来维护多个服务器会话216并基于诸如下载等待时间等指定准则来在不同时间点选择最佳可用会话。有时 CSSP仅发生在客户机侧,有时CSSP通过客户机设备和服务器应用程序之间的合作和通信发生。CSSP客户端可以在设备的网络栈126中的一层上实现,或在诸如浏览器202、电子邮件客户端204、或又称为流客户端206的媒体播放器等特定客户机应用程序中实现。CSSP可以被实现用于任何网络附连平台,包括例如移动电话120或游戏控制台122,以及膝上型计算机、台式机、以及其它计算机。对于某些仅客户机的场景,应用程序会话是无状态的。然而,如果应用程序要求有状态的会话,则客户机可通过与服务器合作来选择最佳会话。CSSP可以在仅有一个主动节点和一个或多个被动节点的情况下实现,或者其可以在两个或更多主动节点和任何个数的被动节点的情况下实现。以下的示例一和示例二示出了两个主动节点,而示例三和示例四示出了一个主动节点和一个被动节点。示例一是仅客户机的场景,其示出了在图4和图5的上下文中网络中断期间的网站可用性。客户机计算机102上的用户正在使用web浏览器202来访问网站www. a. com。为此,客户机执行域名系统(DNS)查找,以查找域名誦.a. com并接收作为响应的两条记录, 一条指示域名的在1. 2. 3. 4的IP地址,另一个指示相同域名的在1. 5. 6. 7的IP地址(仅出于讨论起见,这些是假设的域名和地址)。例如,可通过客户机上的DNS解析器502或通过其他熟悉的DSN解析机制来执行DNS查找。如图5所提示的,在某些配置中,可提供三个或更多DNS记录,以便可与三个或更多服务器建立CSSP会话216。在该例子中的浏览器是具有CSSP意识的浏览器,并且被配置成与‘A’和‘B’目的地IP地址中的每一个建立302会话。服务器A首先响应,因此具有CSSP意识的浏览器在等待来自服务器B的响应的同时开始呈现来自服务器A的响应。在显示340页318之后不久,不为用户所知地,网络失败使得至服务器A的路径变得不可用。用户点击至主存在该相同网站上的另一页318的链接。具有CSSP意识的浏览器212将另一个请求304发送至‘A’ 和‘B’ IP地址。这时,由于服务器A不再可用,所以服务器B首先响应。具有CCSP意识的浏览器开始呈现新的页,而不会由于服务器A的不可用而引起中断。示例二是仅客户机的场景,其示出了再次在图4的上下文中服务器超负荷期间的第一页呈现性能。在客户机计算机上的用户在使用web浏览器来访问网站www. a. com。为此,客户机执行DNS查找并接收作为响应的两条记录。具有CSSP意识的浏览器202被配置成与‘A’和‘B’目的地IP地址中的每一个建立302会话216。在该假设中,服务器A首先响应(见下表1),因此具有CSSP意识的浏览器在继续还在后台中加载来自服务器B的页的同时,开始呈现来自服务器A的响应。在已接收310到业字节的数据之后,由于服务器 A上的超负荷,数据转移减慢。模块214提升从服务器B的后台页加载以成为主要呈现源。 总的页加载时间由本来需要15. 7秒减少至8. 6秒。^ 1服务器初次响应时间直到接收到最后字节的时间A50 毫秒15. 7 秒B300 毫秒8. 6 秒示例三是客户机和服务器合作的场景,其示出了在图4和图6的上下文中在紧急服务器维护以及潜在的无缝会话转移期间的视频性能。在客户机计算机上的用户在使用媒体播放器(又称流媒体客户端206)来访问来自www. a. com的流视频。为此,客户机执行 DNS查找并接收作为响应的两条或更多记录。本情形中的媒体播放器被配置成通过CSSP管理协议发送和接收控制数据以管理会话。在某些替换性实施例中,媒体播放器没有意识到 CSSP,但客户机计算机网络栈1 包括客户机CSSP模块214。
媒体播放器开始3M流化(stream)来自服务器A的数据。要求服务器A上的紧急维护的情形出现。作为关闭过程的一部分,CSSP服务器服务模块222自动通知所有有CCSP 意识的连接的客户机以将它们的会话转移至救济服务器B。在该会话在后台中被转移330 至新的源(服务器B)的同时用户104继续观看流视频。具有CSSP意识的媒体播放器通过向服务器B发起334新的会话请求,指示336其正在转移现有的流,并指定338开始继续流的时间,来执行转移。尽管该转移可能被预期占用一些时间段(或许甚至5-10秒),但是该流显示340应该对用户看上去是无缝的,因为媒体播放器将继续利用其存储器112中的本地缓冲。在一变型中,本示例被修改成包括服务器负载平衡器602的使用。该变型会将控制消息扩展至传递负载信息和会话状态信息,并可通过CSSP管理协议通信来改变转移目的地,以标识负载更小的救济服务器。示例四是客户机和服务器合作的场景,其示出了再次在图4和图6的上下文中通过客户机重新分布的数据中心功率优化。另外,在客户机和(诸)服务器上有关CSSP模块所处的位置(应用程序200/网络栈126 ;具有CSSP意识的整体服务器/具有CSSP意识的服务器应用程序模块)还可能存在替换实施例。第三方工具604监视数据中心功率使用。 该工具可以被配置成指令CSSP服务器服务模块222周期性切换流量以更有效地利用服务器、机架、或整个数据中心之间的功率消耗。更一般的,实施例在各种场景中均有帮助。在不必排除其它场景的情况下,实施例可在下载十几个或甚至数百个小文件的浏览器中加快呈现性能和/或提高可靠性。实施例还可改进对时间敏感的应用程序,诸如处理数千个小分组的流化应用程序。在可通过采用实施例来进行改进的许多场景中的两个场景包括开始呈现但却看起来卡住的网页以及在其中视频开始下载但中途停止并未能恢复的视频站接入。在这些和其它场景中,实施例是有帮助的。结论虽然此处作为进程、作为配置的介质,或作为系统显式地示出和描述了特定实施例,但是,可以理解,对一种类型的实施例的讨论也一般性地延伸到其他实施例类型。例如, 结合图3的过程描述还帮助描述经配置的介质,并帮助描述如结合其他附图讨论的那些系统和制品等系统和制品的操作。对一个实施例的限制也不一定适用于另一个实施例。具体而言,进程不一定仅限于在讨论诸如经配置的存储器之类的系统或产品时呈现的数据结构和方案。不是图中所示出的每一项都需要存在于每个实施例中。相反,实施例可以包含图中未显式地示出的项。虽然这里具体示例在文本和附图中示出了一些可能性,但是,实施例可以偏离这些示例。例如,可以省略、重命名、以不同的方式分组、重复、以不同的方式以硬件和/或软件实例化一个示例的特定特征,或者,这些特定特征也可以是在两个或更多示例中出现的特征的混合。在某些实施例中,也可以在不同的位置处提供在一个位置处示出的功能。通过参考编号,参考了附图。在附图或文本中,与给定参考编号相关联的措词中的任何显而易见的不一致性,应该被理解为简单地扩大该编号所引用的内容的范围。如此处所使用的,诸如“一”和“该”等术语包括了所指示的项目或步骤中的一个或多个。具体而言,在权利要求书中,对一个项的引用一般表示至少一个这样的项存在,并
15且对一个步骤的引用表示执行该步骤的至少一个实例。标题是仅出于方便起见的;关于给定话题的信息可在其标题指示该话题的节之外找到。所提出的所有权利要求都是本说明书的一部分。尽管在附图中示出了并在上文描述了示例性实施例,但是,对于本领域的技术人员来说显而易见的是,在不偏离权利要求书中所阐述的原理和概念的情况下,可以进行很多修改。尽管用结构特征和/或过程动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于权利要求书上面所描述的具体特征或动作。不一定在给定定义或示例中标识的每一个手段或方面都在每个实施例中存在或使用。相反,所描述的具体特征和动作是作为供当实现权利要求书时考虑的示例来公开的。落入权利要求书的等效方案的含义和范围内的所有改变应在法律允许的最大可能的范围内被权利要求书的范围所涵盖。
权利要求
1.一种计算机可读非临时性存储介质,用数据和以指令配置,以便执行一种用于将数据项的多个远程副本转换成单个本地副本的网络通信的过程,该过程利用具有与至少一个存储器可操作地通信的至少一个逻辑处理器的客户机设备,该过程包括以下步骤在该客户机设备处建立(30 在所述客户机设备上运行的应用程序与第一远程服务器之间的第一网络通信会话;在该客户机设备处建立(30 在所述客户机设备上运行的所述应用程序与第二远程服务器之间的第二网络通信会话;在所述第一网络通信会话中并代表所述应用程序向所述第一远程服务器请求(304) 未分段数据项的第一副本;在所述第二网络通信会话中并代表所述应用程序向所述第二远程服务器请求(304) 所述相同未分段数据项的第二副本;向所述应用程序提供(306)所述未分段数据项的仅一个副本,即在所述客户机设备上最先接收到的所述未分段数据项的副本。
2.如权利要求1所述的经配置的介质,其特征在于,还包括向至少一个服务器通知 (312)描述了在所述客户机设备上建立的与除了正被通知的服务器之外的服务器之间的会话的状态信息。
3.如权利要求1所述的经配置的介质,其特征在于,建立步骤建立从所述应用程序的角度来看是无状态的会话(322)。
4.如权利要求1所述的经配置的媒体,其特征在于,未分段数据项包括流数据,并且在所述客户机设备上的过程还包括在该第一会话中开始(324)从所述第一服务器接收所述流数据; 接收(326)来自所述第一服务器的通知,所述通知是所述第一服务器将在所述流数据的传输完成之前变为不可用;以及响应于所述通知,将对所述流数据的接收转移(330)至与另一服务器的会话。
5.如权利要求4所述的经配置的介质,其特征在于,来自所述第一服务器的通知标识 (332)在所述第一服务器变为不可用之后将传输所述流数据的服务器。
6.如权利要求4所述的经配置的介质,其特征在于,将对所述流数据的接收转移至与另一服务器的会话包括发起(334)与服务器(除了所述第一服务器之外)的新会话并指示 (336)现有的流正在被转移。
7.如权利要求6所述的经配置的介质,其特征在于,将对所述流数据的接收转移至与另一服务器的会话还包括指定(338)开始继续流的时间。
8.一种用于将数据项的多个远程副本转换成所述数据项的单个本地副本的网络通信的过程,所述过程利用具有与至少一个存储器可操作地通信的至少一个逻辑处理器的客户机设备并利用至少两个服务器,每个服务器具有与至少一个存储器可操作地通信的至少一个逻辑处理器,所述过程包括以下步骤建立(30 所述客户机设备和第一服务器之间的第一网络通信会话; 建立(30 所述客户机设备和第二服务器之间的第二网络通信会话; 所述客户机设备在所述第一网络通信会话中向所述第一服务器请求(304)未分段数据项的副本;所述客户机设备在所述第二网络通信会话中向所述第二服务器请求(304)相同未分段数据项的副本;所述客户机设备接收(310)来自所述服务器中的至少一个的未分段数据项的至少一部分;以及所述客户机设备显示(340)所接收的部分。
9.如权利要求8所述的过程,其特征在于,还包括所述客户机设备接收(326)服务器超负荷的通知;以及响应于所述通知,转移(330)至与另一服务器的会话。
10.一种客户机设备(102),包括至少一个逻辑处理器(110);与逻辑处理器可操作通信的存储器(112);以及客户机一服务器会话并行化模块014),其驻留在存储器中并可操作地发起与多个服务器(130)的多个会话016),在每个会话中请求给定的未分段数据项(1 )。
11.如权利要求10所述的客户机设备,其特征在于,所述客户机设备包括游戏控制台 (122),所述客户机设备被配置成在存储器中具有流未分段数据项的至少一部分,并且所述流形成多媒体游戏(210)的至少一部分。
12.如权利要求10所述的客户机设备,其特征在于,所述客户机设备包括移动电话 (120),所述客户机设备被配置在存储器中具有流未分段数据项的至少一部分,并且所述流包括视频012)图像和声音数据。
13.如权利要求10的客户机设备,其特征在于,客户机-服务器会话并行化模块驻留在网络栈(126)中。
14.如权利要求10的客户机设备,其特征在于,客户机-服务器会话并行化模块驻留在应用程序(124)中。
15.如权利要求10所述的方法,其特征在于,所述应用程序包括以下的至少一个web 浏览器002)、电子邮件客户端004)、流媒体客户机006)。
全文摘要
本文描述了客户机-服务器会话并行化。采用客户机-服务器会话并行化(CSSP),客户机设备建立与不同远程服务器的多个网络通信会话,并向每个服务器请求相同未分段数据项。最先被客户机设备接收到的那个未分段数据项的副本被提供至应用程序。CSSP软件可以是网络栈的一部分,或者它可以使诸如浏览器或媒体播放器等特定应用程序的一部分。服务器并不一定对CSSP有意识,但当它们对CSSP有意识时,可以对会话进行负载平衡。还可以鉴于服务器的负载、即将到来的服务器重启或其它事件来将CSSP会话转移到其它具有CSSP意识的服务器。CSSP客户机可通知CSSP服务器状态信息,该状态信息描述了在客户机上建立的与其它服务器之间的会话,从而当CSSP客户机具有足够的备用数据源时允许服务器来将带宽重新分配给其它客户机。
文档编号H04L29/06GK102202061SQ20111014877
公开日2011年9月28日 申请日期2011年5月23日 优先权日2010年5月24日
发明者M·D·沙伊贝尔, M·吉勒特 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1