共享数据去重复的方法和系统的制作方法

文档序号:6621627阅读:284来源:国知局
共享数据去重复的方法和系统的制作方法
【专利摘要】本公开涉及在计算机网络中同步加速节点的字典。例如,客户端-服务器网络的多个加速节点的字典可以被同步以便每个字典包括一个或多个同样的数据项和数据标识符对。同步可以包括将特定的数据项、或者数据项与数据标识符的组合发送到其字典中不包括所述数据项或组合的另一加速节点。特定的加速节点可以不发送数据项,而是发送相关联的数据标识符到另一加速节点。由于在采用本文所描述的方法时所有的加速节点(或子集)可以具有同样的字典,因此特定的加速节点可以使用相同的字典与计算机网络的所有其他加速节点(或子集)进行通信。
【专利说明】共享数据去重复的方法和系统

【技术领域】
[0001 ] 本公开涉及在包括网络节点的计算机网络中共享数据的方法和系统。

【背景技术】
[0002] 现代计算机网络系统可以是相当复杂的而且跨越很大的空间距离。例如,包括客 户端-服务器网络中的服务器的中央数据库可以位于欧洲。不同的客户端系统可以位于, 例如,美国、澳大利亚、南非和其他地理位置。这样的分布式系统可以是在全球范围内经营 的企业的综合网络结构的结果。同时,在这些网络上传输的数据的量正在不断增加。这可 能导致相当大的延迟,特别是广域网连接。在上述的例子中,位于澳大利亚的客户端可以启 动报告程序,该报告程序可以访问在欧洲的中央数据库。这可能导致高响应时间,结果造成 网络限制,诸如带宽、等待时间和拥塞。此外,先进的通信方案会增加需要被存储在不同的 网络节点中的数据量,从而提高网络节点的成本和复杂性。


【发明内容】

[0003] 在本公开的第一方面中,计算机实现的方法包括:识别在包括多个加速节点的计 算机网络中所包括的第一加速节点,其中,加速节点用于加速通过所述多个加速节点中的 一个或多个连接的客户端计算机系统和服务器计算机系统之间的资源传输,第一加速节点 包括数据项和数据标识符的第一字典,每个数据标识符识别相应的数据项,而且其中加速 节点被配置为向其他加速节点提供数据标识符并基于从其它加速节点接收到的数据标识 符来识别数据项;在第一加速节点处从第二加速节点接收数据项;将数据项包括在第一加 速节点中所包含的第一字典中;以及向计算机网络的第三加速节点提供接收到的数据项、 识别接收到的数据项的数据标识符或两者,其中数据标识符是由第一加速节点确定的或者 从其它加速节点获得的。
[0004] 在根据第一方面的第二方面中,该方法还包括:在第一加速节点处从一个或多个 附加的加速节点接收附加的数据项;以及将附加的数据项包括在第一字典中。
[0005] 在根据第一或第二方面的第三方面中,该方法还包括使用预定的算法确定相应的 数据项的数据标识符。
[0006] 在根据第三方面的第四方面中,预定的算法包括确定散列值。
[0007] 在根据任一前述方面的第五方面中,第一加速节点将包括数据项、数据标识符或 两者的字典条目的协议存储在第三加速节点的第二字典中。
[0008] 在根据任一前述方面的第六方面中,该方法还包括:在第一加速节点处确定第二 字典中缺少第一字典中的哪些字典条目;以及从第一加速节点提供缺少的字典条目。
[0009] 在根据任一前述方面的第七方面中,该方法还包括:确定第三加速节点的字典是 否包含所述数据项;如果确定第三加速节点的字典包含所述数据项,则向第三加速节点提 供用于识别接收到的数据项的数据标识符;以及如果确定第三加速节点的字典不包含所述 数据项,则向第三加速节点提供所述数据项。
[0010] 在根据任一前述方面的第八方面中,该方法还包括:估计第三加速节点确定识别 接收到的数据项的数据标识符所花费的资源和/或时间量、以及从第一加速节点向第三加 速节点发送所述数据标识符所花费的资源和/或时间量;将第三加速节点确定识别接收到 的数据项的数据标识符所花费的资源和/或时间量与从第一加速节点向第三加速节点发 送所述数据标识符所花费的资源和/或时间量进行比较;如果第三加速节点确定识别接收 到的数据项的数据标识符所花费的资源和/或时间量大于从第一加速节点向第三加速节 点发送所述数据标识符所花费的资源和/或时间量,则从第一加速节点向第三加速节点发 送识别接收到的数据项的数据标识符;如果第三加速节点确定识别接收到的数据项的数据 标识符所花费的资源和/或时间量小于从第一加速节点向第三加速节点发送所述数据标 识符所花费的资源和/或时间量,则使第三加速节点计算所述数据标识符。
[0011] 在根据任一前述方面的第九方面中,数据标识符是由第一加速节点提供的,该方 法还包括:在第三加速节点处接收第一字典的数据标识符;确定第三加速节点的字典不包 括所述数据标识符;向第一加速节点请求由所述数据标识符识别的数据项;从第一加速节 点向第三加速节点发送所述数据项;以及将接收到的数据标识符和接收到的数据项包括在 第三加速节点的字典中。
[0012] 在根据任一前述方面的第十方面中,第一加速节点规律地向包括第三加速节点的 一个或多个相邻加速节点广播它的字典至少一部分。
[0013] 在根据任一前述方面的第十一方面中,所述数据项是经由第一加速节点在计算机 网络上发送的资源。
[0014] 在根据任一前述方面的第十二方面中,该方法还包括:将所述多个加速节点中的 一个加速节点的网络流量与预定的阈值进行比较;确定计算机网络的所述加速节点的网络 流量低于预定的阈值;响应于确定计算机网络的所述加速节点的网络流量低于预定的阈 值,向计算机网络的第三加速节点提供接收到的数据项、识别接收到的数据项的数据标识 符或两者。
[0015] 在根据任一前述方面的第十三方面中,该方法还包括:在第一加速节点处生成将 被包括在第一加速节点的字典中的数据项;确定识别生成的数据项的数据标识符;以及向 第三加速节点提供生成的数据项、或者生成的数据项与计算的数据标识符的组合。
[0016] 在根据任一前述方面的第十四方面中,该方法还包括:由第一加速节点确定在预 定的时间段内,预定的数据标识符被用于与其他加速节点通信的次数;将所述次数与预定 的次数进行比较;以及当确定所述次数小于预定的次数时,从字典删除由所述数据标识符 识别的数据项。
[0017] 在根据任一前述方面的第十五方面中,所述客户端-服务器网络包括所述多个加 速节点的至少三个不同的子集,每个子集包括至少一个加速节点,其中,第一加速节点被包 括在第一子集中,第二加速节点被包括在第二子集中,而且第三加速节点被包括在第三子 集中,第一加速节点包括至少一个附加的字典,而且该方法还包括向加速节点的第一子集 中的其他加速节点提供所述附加的字典的数据标识符,以便基于所述附加的字典的数据标 识符来识别数据项。
[0018] 在根据任一前述方面的第十六方面中,该方法还包括规律地同步计算机网络的所 有加速节点、或者计算机网络的加速节点的子集的所有字典,在同步完成之后,计算机网络 的加速节点的所有字典至少部分地包括同样的字典条目。
[0019] 在根据任一前述方面的第十七方面中,该方法还包括在没有填入(populate)的 字典的情况下,将第三加速节点添加到计算机网络,或者第三加速节点的第二字典已经部 分或完全丢失,以及通过从计算机网络的其他加速节点接收数据来建立或者恢复第三加速 节点的第二字典。
[0020] 在根据任一前述方面的第十八方面中,由第一网络节点接收到的数据项是服务器 和客户端之间的通信过程的一部分。
[0021] 在第十九方面中,系统包括一个或多个处理器以及计算机可读介质,其存储所述 一个或多个处理器可执行的指令以执行以下操作:识别在包括两个或更多个加速节点的计 算机网络中所包括的第一加速节点,其中,加速节点用于加速通过加速节点连接的客户端 计算机系统和服务器计算机系统之间的资源传输,第一加速节点包括数据项和数据标识符 的第一字典,每个数据标识符识别相应的数据项,而且其中加速节点被配置为向其他加速 节点提供数据标识符并基于从其它加速节点接收到的数据标识符来识别数据项;在第一加 速节点处从第二加速节点接收数据项;将数据项包括在第一字典中;以及向计算机网络的 第三加速节点提供接收到的数据项、识别接收到的数据项的数据标识符或两者,其中数据 标识符是在第一加速节点处确定的或者从其它加速节点获得的。
[0022] 在根据第十九方面的第二十方面中,所述计算机可读介质还存储所述一个或多个 处理器可执行的指令以执行以下操作:估计第三加速节点确定识别接收到的数据项的数据 标识符所花费的资源和/或时间量、以及从第一加速节点向第三加速节点发送所述数据标 识符所花费的资源和/或时间量;将第三加速节点确定识别接收到的数据项的数据标识符 所花费的资源和/或时间量与从第一加速节点向第三加速节点发送所述数据标识符所花 费的资源和/或时间量进行比较;如果第三加速节点确定识别接收到的数据项的数据标识 符所花费的资源和/或时间量大于从第一加速节点向第三加速节点发送所述数据标识符 所花费的资源和/或时间量,则从第一加速节点向第三加速节点发送识别接收到的数据项 的数据标识符;如果第三加速节点确定识别接收到的数据项的数据标识符所花费的资源和 /或时间量小于从第一加速节点向第三加速节点发送所述数据标识符所花费的资源和/或 时间量,则使第三加速节点计算所述数据标识符。
[0023] 在第二i^一方面中,计算机可读介质存储有指令,该指令在被处理器执行时使该 处理器执行以下操作:识别在包括两个或更多个加速节点的计算机网络中所包括的第一加 速节点,其中,加速节点用于加速通过加速节点连接的客户端计算机系统和服务器计算机 系统之间的资源传输,第一加速节点包括数据项和数据标识符的第一字典,每个数据标识 符识别相应的数据项,而且其中加速节点被配置为向其他加速节点提供数据标识符并基于 从其它加速节点接收到的数据标识符来识别数据项;在第一加速节点处从第二加速节点接 收数据项;将数据项包括在第一字典中;以及向计算机网络的第三加速节点提供接收到的 数据项、识别接收到的数据项的数据标识符或两者,其中数据标识符是在第一加速节点处 确定的或者从其它加速节点获得的。
[0024] 在根据第二i^一方面的第二十二方面中,计算机可读介质还存储在被处理器执行 时使该处理器执行以下操作的指令:估计第三加速节点确定识别接收到的数据项的数据标 识符所花费的资源和/或时间量、以及从第一加速节点向第三加速节点发送所述数据标识 符所花费的资源和/或时间量;将第三加速节点确定识别接收到的数据项的数据标识符所 花费的资源和/或时间量与从第一加速节点向第三加速节点发送所述数据标识符所花费 的资源和/或时间量进行比较;如果第三加速节点确定识别接收到的数据项的数据标识符 所花费的资源和/或时间量大于从第一加速节点向第三加速节点发送所述数据标识符所 花费的资源和/或时间量,则从第一加速节点向第三加速节点发送识别接收到的数据项的 数据标识符;如果第三加速节点确定识别接收到的数据项的数据标识符所花费的资源和/ 或时间量小于从第一加速节点向第三加速节点发送所述数据标识符所花费的资源和/或 时间量,则使第三加速节点计算所述数据标识符。
[0025] 在第二十三方面中,系统包括一个或多个处理器以及计算机可读介质,其存储所 述一个或多个处理器可执行的指令以执行如方面1至18中的任一项所述的操作。
[0026] 在第二十四方面中,计算机可读介质存储一个或多个处理器可执行的指令以执行 如方面1至18中的任一项所述的操作。
[0027] 在第二十五方面中,根据方面1至18中的任一项,计算机网络包括云计算环境。

【专利附图】

【附图说明】
[0028] 图1示出了示例性客户端-服务器网络。
[0029] 图2示出了在开始字典同步过程时包括多个服务器、多个客户端、多个服务器前 端节点和多个客户端前端节点的客户端-服务器网络。
[0030] 图3示出了在完成字典同步过程之后的图2的客户端-服务器网络。
[0031] 图4示出了在客户端-服务器网络中同步两个加速节点的字典的示例性方法。
[0032] 图5示出了在客户端-服务器网络中同步两个加速节点的字典的另一示例性方 法。
[0033] 虽然被一般性地描述为具体实现在有形介质上的用于处理和转换相应数据的计 算机实现的软件,但是本发明的部分方面或所有方面可以是计算机实现的方法,或进一步 被包括在各系统或其它设备中以用于执行这里描述的功能。这些和其他方面的细节以及本 公开的实现方式在附图和以下描述中阐述。根据描述和附图以及权利要求,本公开的其它 特征和优点将是显而易见的。
[0034] 具体实现方式
[0035] 本公开涉及同步计算机网络(例如,客户端-服务器网络)中的加速节点的字典。
[0036] 例如,客户端-服务器网络的多个加速节点的字典可以被同步,以便每个字典包 括一个或多个同样的数据项和数据标识符对。同步可以包括将特定的数据项或者数据项和 相关联的数据标识符的组合发送到另一加速节点,所述另一加速节点将接收到的数据项或 者组合包括在它的字典中。特定的加速节点可以不发送数据项,而是发送相关联的数据标 识符到另一加速节点。因为当采用本文所述的方法时,所有加速节点(或子集)可以具有 同样的字典,所以特定的加速节点可以使用相同的字典来与计算机网络的所有其他加速节 点(或子集)进行通信。
[0037] 通过实现本文所描述的技术,通过减少必须存储在网络节点中以便于不同的其它 网络节点(例如,加速节点)进行通信的字典的数目和/或通过减少网络节点的字典中重 复数据的量("数据去重复"),可以减少计算机网络的网络节点(例如,加速节点)所需的 存储器。在一些例子中,每个网络节点的单个字典可足以处理计算机网络中的通信。以这 种方式,可以从网络的节点的字典中删除重复的数据。在一些例子中,将要在计算机网络上 发送的每个数据项只在加速节点的字典中表现一次。此外,可以减小计算机网络的网络节 点(例如,加速节点)同步字典的处理器负载。另外,当更新一个或多个网络节点的字典 时计算机网络的网络流量可以被减少和/或在时间上更均匀地分布。特别是,可以避免高 峰时间(此时在计算机网络上传送的数据量是最高的)额外的网络流量。此外,网络节点 (例如,加速节点)可以"自己训练",即,网络节点可以在预定的传输过程利用字典之前自 我更新它们的字典以包含某些数据项,以便在网络节点之间提供更快的传输。此外,网络可 以动态地同步网络节点的字典以便在操作过程中适应不同的要求。此外,附加的网络节点 (例如,新的加速节点)可以被方便灵活地添加,因为添加的网络节点的字典可以以动态方 式添加。此外,特定的网络节点丢失的或部分丢失的字典可以被恢复,因为特定的网络节点 的相邻网络节点可以具有同样的字典。
[0038] 图1示出包括多个网络节点102a、102b、102c、104、108a、108b、108c、110的示例性 客户端-服务器网络。网络中的一个或多个节点可以是加速节点,每个加速节点可以加速 客户端计算机系统与服务器计算机系统之间的资源传输。如下面详细描述的,加速节点可 以包括数据项和数据标识符的字典。每个数据标识符可以识别相应的数据项。在一些实现 方式中,加速节点可以向一个或多个其他加速节点提供数据标识符。可替换地或另外地,力口 速节点可以基于从另一加速节点接收到的数据标识符来识别数据项。在一些实现方式中, 第一加速节点可以从第二加速节点接收数据项。第一加速节点可以包括包含在第一加速节 点中的第一字典中的数据项。第一加速节点可以向计算机网络的第三加速节点提供接收到 的数据项、用于识别接收到的数据项的数据标识符、或两者。第一加速节点可以确定数据标 识符或者从另一加速节点获得数据标识符。
[0039] 在图1的例子中,客户端-服务器网络包含一个或多个服务器104、以及与一个或 多个服务器104通信的多个客户端102a、102b、102c。在一些实现方式中,服务器是一个被 布置为提供数据库服务的数据库服务器。服务器104被连接到服务器前端节点(SFE) 110, 其被布置为从服务器104接收数据以分别通过客户端前端(CFE) 108a和108b和108c发送 到客户端l〇2a、102b、102c,反之亦然。客户端前端节点108a、108b、108c和服务器前端节点 110可以被配置为加速服务器104和客户端102a、102b、102c之间的通信。因此,客户端和 服务器前端节点是客户端-服务器网络的加速节点。在一些实现方式中,服务器前端节点 (SFE) 110和服务器104之间的网络连接105d以及客户端前端节点(CFE) 108a、108b、108c 和它们各自的客户端l〇2a、102b、102c之间的网络连接105a、105b、105c包括局域网连接。 服务器前端节点110和客户端前端节点l〇8a、108b、108c分别经由广域网连接107a、107b、 107c连接。客户前端节点108a、108b、108c也可以经由网络连接(例如,局域网连接或广域 网连接)来相互连接。
[0040] 在一些实现方式中,特定的客户端102b从服务器104请求服务。在该请求的执行 过程中,数据在服务器104和客户端102b之间发送。例如,请求可以是对公司的网站主页 的请求。服务单个请求可以包括服务器104和特定的客户端102b之间的多个数据传输周 期。在位于第一地理位置的服务器104与位于远离第一地理位置的第二地理位置的客户端 102b之间的示例性通信在广域网络连接107b上进行,带宽限制、等待时间和拥塞可以在向 客户端提供所请求的服务时增加相当大的延迟。例如,在典型的客户端-服务器网络中可 能需要长达一分钟或更长时间来以执行对于上述网页的请求。除此之外,这个通信的瓶颈 可以是在服务器和客户端之间的广域网连接上发送数据。
[0041] 在图1所示的系统中,在服务器104与客户端102a、102b、102c之一之间发送的数 据路由通过服务器前端节点110、和至少一个客户端前端节点108a、108b、108c。在一般情 况下,实现加快计算机网络的网络节点之间的通信的功能的任何网络节点都是加速节点。 因此,本发明的方法和系统不限于服务器和客户端前端节点,而是也可以应用于其它加速 节点(并且,如下面所述,也应用于包括用于通信的字典的一般网络节点)。
[0042] 为了加速服务器104和客户端102a、102b、102c之间的通信,客户端前端节点 108a、108b、108c和服务器前端节点110可以在通过广域网连接107a、107b、107c发送数据 之前压缩数据。可替换地或另外地,客户端前端节点l〇8a、108b、108c和服务器前端节点 110可以减少执行预定任务所需的广域网连接107a、107b、107c上通信往返的数目。这可以 包括在客户端前端节点108a、108b、108c和服务器前端节点110处缓存数据,以便从本地缓 存而不是从原始服务器(例如,从服务器104的字典)提供数据。这还可以包括保持网络 连接(例如,传输控制协议连接)开放,以避免因重新开放网络连接所致的等待时间。此外 或可替换地,为服务设置优先级、对冗余流量进行缓存以及通过并行建立多个网络连接来 减少丢包可以被采用以减少延迟。
[0043] 上述措施可以包括当在客户端前端节点108a、108b、108c和服务器前端节点110 之间发送数据时使用字典。字典包括数据项。此外,字典包括与数据项相关联的、用于识别 数据项的数据标识符。数据标识符和数据项被称为"字典条目"。字典还可以具有附加的 字典条目。例如,如果数据标识符和数据项不是一一匹配从而它们之间的关系可能是不明 确的(例如,一个数据标识符与两个或更多个数据项相关联),则可以提供用于解决这种不 明确性的附加的字典条目。在其它实施例中,不明确的数据标识符可以通过添加到与数据 标识符相关联的数据项的唯一前缀来发送。在这种情况下,可以不需要存储附加的字典条 目。在大多数示例中,相比于数据项,与数据项相关联并且识别数据项的数据标识符使用较 少的存储空间。然而,在一些示例中,数据标识符也可以长于它识别的数据项(例如,添加 了附加的信息或冗余)。在一些实现方式中,字典包括数据标识符和相关联的数据项的对。 在其他实施例中,字典可以包含多级数据标识符。计算机网络的每个网络节点可以具有一 个或多个字典。
[0044] 术语"数据项"包括与计算机网络的网络节点相关联的任何数据。例如,将要通过 网络连接发送的数据可以被分割(segment)成数据项,并被存储(例如,缓存)到数据库 中。在其它示例中,数据项可以包括来自网络连接双方的资源。数据到数据项的分割可以 根据任何常规的分割算法来执行。例如,数据可以根据它的内容来分割。例如,如果网页将 被分割成数据项,则不同的图像或其他对象每个可以被放置在一个单独的数据项中。然而, 内容也可以被分段(fragment)并被存储在多个数据项中。在其它实施例中,数据项可以是 形成资源的一部分的一系列的位。例如,资源可以是文件。数据项也可以是形成数据分组 或缓冲区内容的一部分的一系列的位。相同的数据项可以出现在计算机网络的两个或更多 个不同的资源(例如,不同的网页或不同的文件)中。在其它实施例中,基于数据将要被发 送的顺序,将数据分割为数据项。特定的数据项可以出现在计算机网络的两个或更多个不 同的资源(例如,文件、网站)中。在这种情况下,网络节点的字典只需要包括包含该数据 项的一个字典条目。当发送包括同样的数据项的不同的资源时,网络节点可以使用相同的 数据标识符。
[0045] 数据标识符识别相关联的数据项。在一些示例中,数据标识符可以以确定的方式 从数据项来确定。确定数据标识符的一些实现方式包括确定数据项的数据(或数据的一部 分)的散列值。使用数据标识符(它可以以确定的方式来确定)是有利的,因为对于给定 的数据项,可以通过仅知道数据标识符生成功能并将其应用于数据项来在每个网络节点处 独立地确定相关联的数据标识符。
[0046] 在两个网络节点(例如,加速节点)之间通信时,涉及的两个网络节点都可以具有 相同的(或至少部分相同的)字典。当包括在发送和接收网络节点的字典中的数据项到达 发送用于发送的网络节点时,发送网络节点在它的字典中查找相关联的数据标识符。如果 网络节点不能找到数据标识符,则它可以计算数据标识符,并将新计算出的数据标识符和 数据项存储在它的字典中。代替发送数据项,发送网络节点发送与数据项相关联的数据标 识符。接收网络节点在接收到数据标识符之后,可以查找与接收到的数据标识符相关联的 数据项。在数据标识符短于与它相关联的数据项的实施例中,这样可以减少需要通过发送 网络节点和接收网络节点之间的网络连接的通信量,从而减少客户端请求的响应时间。因 此,如上所述,可以在计算机网络的加速节点中采用这种技术。在图1的示例中,客户端前 端节点108a、108b、108c和服务器前端节点110中的每一个可以具有一个或多个字典,以便 与一个或多个其他客户端前端节点l〇8a、108b、108c和服务器前端节点110通信。
[0047] 客户端前端节点108a、108b、108c和服务器前端节点110可以包括处理单元,其被 配置为通过网络节点以双向方式接收和发送数据。处理单元被适配为采用这里所描述的加 速网络上的通信的任何技术。字典可以存储在网络中的任何加速节点的易失性或持久性存 储器中。在大多数示例中,字典将被存储在易失性存储器(例如,缓存)中以提供对于字典 的快速访问。
[0048] 特定的网络节点可以与多个其他网络节点连接。此外,其他多个客户端和服务器 可以是网络的一部分,所述网络还包括客户端前端节点和服务器前端节点,包括网络节点。 此外,服务器前端节点或客户端前端节点也可以直接相互连接。这可以意味着特定的网络 节点必须保持不同的字典以便于不同连接的网络节点进行通信。图2中示意性地示出示例 性的网络拓扑。在此实施例中,服务器前端网络节点110与三个其它客户端或服务器前端 网络节点连接。因此,服务器前端网络节点IlOd可能需要一个单独的字典以用于加速与它 直接连接到的三个客户端或服务器前端网络节点("相邻网络节点")中的每一个的通信。 这可以产生要被存储在服务器前端网络节点IlOd的存储器中的相当数量的字典数据。
[0049] 本公开提供了如图5所示的计算机实现的方法,其中该方法可以减少要被存储在 服务器前端网络节点IlOd或任何其它网络节点的存储器中的字典数据的量。该方法包括, 在501,识别在包括多个加速节点的计算机网络中所包括的第一加速节点,其中,加速节点 用于加速通过多个加速节点中的一个或多个连接的客户端计算机系统和服务器计算机系 统之间的资源传输,第一加速节点包括数据项和数据标识符的第一字典,每个数据标识符 识别相应的数据项,而且其中加速节点被配置为向其他加速节点提供数据标识符并基于从 另一加速节点接收到的数据标识符来识别数据项,在502,在第一加速节点处从第二加速 节点接收数据项,在503,将数据项包括在第一加速节点中所包含的第一字典中,在504,向 计算机网络的第三加速节点提供接收到的数据项、识别接收到的数据项的数据标识符或两 者,数据标识符是由第一加速节点确定的或者从另一加速节点获得的。
[0050] 图2和图3示出了用于在计算机网络中同步加速节点的字典的示例性计算机实现 的系统。图2和图3的计算机网络是具有多个服务器104a至104f和多个客户端102a至 102f的客户端-服务器系统。这些服务器104a至104f和客户端102a至102f经由客户 前端网络节点l〇8a至108f和服务器前端网络节点IlOa至IlOe的网络来连接。每个客户 端前端网络节点108a至108f,例如经由广域网连接,连接到至少一个服务器前端网络节点 IlOa至110e。图2示出了处于第一状态的客户端-服务器系统,其中特定的网络节点108f 的字典包括特定的一对数据项和相关联的数据标识符(由图2中的"#"表示)。剩余的网 络节点在它们各自的字典(由图2中的"X"表示的缺少的或不同的对)不具有这对数据项 和数据标识符。在预定的时间点或当触发事件时,特定的网络节点l〇8f向服务器前端网络 节点IlOe发送用于加速通信的它的字典116f的字典条目(例如,数据项或者数据标识符 和数据项的组合)。网络节点IlOe接收字典条目,并更新它的字典113e。此外,服务器前 端网络节点IlOe可以向服务器前端IlOd发送字典条目。在一些实现方式中,字典条目可 以按原样发送。可替换地或另外地,网络节点可以存储和检索字典条目,或者在将字典条目 发送另一服务器前端网络节点IlOd(它也更新它的字典113d)之前加密、压缩或以其它方 式处理字典条目。这个网络节点可以将字典条目再次转发到多个网络节点108e、110c等。 在预定数目的传输步骤之后,字典条目可以已经被客户端和服务器前端网络节点l〇8a至 108f和IlOa至IlOe传播为遍及整个网络,而且所有字典113a至113e和116a至116f可 以已经同步。这意味着所有的服务器和客户端前端网络节点的字典都包括该字典条目。如 图3可以看到的,所有网络节点的字典包括同样的字典条目对#。因此,为了加速两个客户 端或服务器前端网络节点之间共同对的数据项的任何传输(例如,从客户前端网络节点到 另一客户端前端网络节点、从服务器前端网络节点到另一服务器前端的网络节点、从客户 端前端网络节点到服务器前端网络节点,或反之亦然),可以使用相同的数据标识符。这个 过程可以针对任何数目的字典条目(例如,数据项)执行。以这种方式,所有加速节点(例 如,客户端和服务器前端网络节点)的所有字典的一部分具有相应的(例如,同样的)字典 条目。这可以不必具有多个字典或者可以至少减少与多个其他网络节点通信所需的字典的 数目。进而,加速节点(例如,客户端和服务器前端网络节点l〇8a至108f、IlOa至IlOe)处 的存储器需求得以减少。此外,重复的数据量可以减少,因为特定的数据项可以仅由所有加 速节点的字典中的单个数据项/数据标识符对(例如,客户端和服务器前端网络节点l〇8a 至108f、110a至IlOe)来表示。这还可以减少每个加速节点所需的存储器的量。
[0051] 结合图2和图3描述的字典同步方法可以以若干不同的方式实施,若干不同的方 式也可以同时用在相同的计算机网络中。在一些实现方式中,第一加速节点(例如,客户端 前端网络节点108f)将预定的数据项发送到第二网络节点。然后,接收加速节点可以从接 收到的数据项确定数据标识符(例如,通过确定数据项的散列值)。可替换地,发送加速节 点可以将数据标识符和数据项发送到接收加速节点。可选地,加速节点可以确定,是发送数 据标识符和相关联的数据项更符合资源效率,还是让接收加速节点在接收数据项之后确定 与所发送的数据项相关联的数据标识符更符合资源效率。在一些实现方式中,加速节点确 定哪一个选择更快(例如,根据接收加速节点的处理能力和处理器负荷以及加速节点之间 的网络连接的可用带宽)。例如,由于加速节点的处理器的暂时高处理器负载或者由于一个 加速节点具有相对低的处理能力的处理器,造成相比于在加速节点本地确定数据标识符, 从相邻加速节点发送数据标识符可能暂时或永久都是更快的。在其他实施例中,由于暂时 或永久带宽限制,造成相比于通过网络发送数据标识符,在加速节点本地确定数据标识符 也可能是更快的。在其它实施例中,第一加速节点也可以将数据项发送到另一加速节点,以 确定与数据项相关联的数据标识符。在确定数据标识符之后,其他加速节点可以将它发送 到第一加速节点。这在除了上述选择外的一些情况下,也可以是有资源效率(例如更快) 的。代替使用处理速度来决定是否在本地发送或确定数据标识符,加速节点还可以使用其 他标准来决定是否在本地发送或确定数据标识符。例如,在一些示例中,网络流量应当尽可 能地低,从而数据标识符由加速节点本地确定。上述标准也可以组合或交替使用(例如,根 据计算机网络的状态)。上述标准可以由计算机网络的管理员来选择。例如,管理员可以决 定网络应该被优化以确保通过网络快速传递数据。那么,"资源效率"意味着"时间效率"。 在其它实施例中,管理员可以决定最小化通过网络的流量。在这种情况下,"资源效率"意味 着"带宽效率"。不同的优化标准的组合也是可能的。
[0052] 图4示出在通信过程的上下文中计算机网络的两个加速节点之间的另一示例性 字典同步方法。在操作401,第一加速节点(例如,图4中的第一服务器前端节点)被动监 听传输(例如,来自图4中的第二服务器前端网络节点和来自图4中的第一客户前端网络 节点的传输)。在操作402,第一加速节点开始与相邻加速节点(例如,与图4中的第二服务 器前端网络节点)通信,以跨越第一网络节点和相邻网络节点之间的网络连接执行通信过 程。下面的更新操作可以以几种不同的方式发生。在操作403中,第一加速节点可以确定第 一加速节点要与之通信的相邻网络节点在它的字典中是否具有预定的数据项。例如,第一 加速节点可以使用在被动监听相邻加速节点的广播时收集的、关于其它加速节点的字典的 信息。根据确定操作的结果,第一网络加速节点可以选择几个操作之一。首先,在操作408, 如果第一加速节点确定其他加速节点在它的字典中具有将要发送的数据项,则第一加速节 点仅发送与该数据项相关联的数据标识符。在操作410,其他加速节点接收数据标识符,并 且如果第一加速节点关于在其他网络节点的字典中存在数据项的确定是正确的,则其他加 速节点可以在它的字典中识别关联的数据项。在操作412,其他加速节点确定在它的字典中 是否具有与接收到的数据标识符相关联的数据项。如果其他加速节点的字典中没有相关联 的数据项,则在操作411,它可以要求第一加速节点发送数据项。在第二可选方案中,第一加 速节点不能确定在其他网络节点的字典中是否存在该数据项。在这种情况下,在操作408, 它可以将数据标识符发送到其他加速节点。如果其他加速节点的字典中没有相关联的数据 项,则在操作411,它可以要求第一加速节点发送数据项。因此,在图4的实施例中,第二加 速节点的字典被"动态(on the fly)"更新,即,连同第一加速节点和第二加速节点之间的 通信处理(例如,从第一加速节点为第二加速节点的数据项传输)。例如,数据项可以是服 务器和客户端之间的数据传输的一部分(例如,提供给客户端的网页)。
[0053] 可替换地,如果第一加速节点不能确定在其他网络节点的字典中是否存在该数据 项,则它可以直接发送该数据项,而且其他加速节点可以确定相关联的数据标识符(例如, 通过确定该数据项的散列值),或者也从第一加速节点接收数据标识符。在第三可选方案 中,第一加速节点确定在其他网络节点的字典中不存在该数据项。在操作404,第一加速节 点发送数据项。在操作406,第一加速节点和/或其他加速节点可以确定还发送与数据项相 关联的数据标识符、或者让其他加速节点确定与接收到的数据项相关联的数据标识符(如 上所述)哪个是更理想的。根据这个确定操作的结果,或者在操作408第一加速节点可以 还发送数据标识符,或者在操作407其他加速节点可以确定与接收到的数据相关联的数据 标识符。
[0054] 在其它示例中,第一加速节点可以先将与预定的数据项相关联的数据标识符发送 到第二加速节点。第二加速节点接收数据标识符,并确定在它的字典中是否存在与数据标 识符相关联的数据项。如果是这种情况,则第二加速节点可以向发送加速节点发出不需要 发送与数据标识符相关联的数据项的信号。如果接收加速节点确定在它的字典中不存在与 数据标识符相关联的数据项,则第二加速节点可以从第一加速节点轮询该数据项。可替换 地,第二加速节点也可以从其字典具有该数据项的另一加速节点轮询该数据项。例如,从其 他加速节点发送可以比从第一加速节点发送(例如,因为其他加速节点比第一加速节点更 靠近第二加速节点)更快。在接收到轮询之后,第一加速节点也发送与发送的数据标识符 相关联的数据项。接收加速节点接收数据项,并更新它的字典以包括数据项和相关联的数 据标识符。
[0055] 如结合图4所述,可以在通过加速节点发送特定的数据项时触发字典同步过程。 另外或可替换地,加速节点可以监测网络流量以确定合适的时间来执行字典同步过程(例 如,结合图4和图5所述的方法)。在一个示例中,加速节点在"非高峰时段"期间,例如, 当(例如,该过程所涉及的加速节点之间的)网络流量的容量低于预定阈值时,执行同步操 作。可替换地或另外地,加速节点可以监控在所涉及的加速节点处在一定时间发生的传输 过程的优先级。在其它示例中,同步过程被调度为规律地发生,特别是周期性地(例如,每 天一次)或事件驱动地(例如,在以预定方式改变存储在预定的加速节点中的资源之后)。 用于触发更新过程的方法也可以相结合。例如,周期性的更新可以与网络流量监测相结合。 以这种方式,更新过程可以规律地并且同时在非高峰时段发生。
[0056] 本文所描述的字典同步方法可以由计算机网络中的每个加速节点在本地启动,或 者该字典同步方法可以针对计算机网络中的所有加速节点被全局调度。这两个概念的组合 也是可能的。在一个实施例中,加速节点启动同步操作,同时将数据发送到另一加速节点 (例如,如结合图4描述的)。在其它实施例中,可以在计算机网络中提供对于字典同步过 程的调度。调度可以包括指示哪个加速节点周期性地或事件驱动地更新哪个相邻加速节点 的字典的信息。在其他实施例中,当发生触发事件时(例如,在特定的加速节点处网络流量 低于预定阈值或者在加速节点处新的/修改的数据可用),可以由特定的加速节点启动字 典同步过程。在这种情况下,计算机网络中的多个加速节点可以在同一时间或在不同的时 间启动字典同步过程。
[0057] 在本文所述的方法中,加速节点可以保持追踪它发送到相邻加速节点或从相邻加 速节点接收的数据项、数据标识符或两者。在其它示例中,加速节点可以监听其他加速节点 的字典条目的广播。例如,加速节点可以存储哪些数据项或哪些数据标识符(或两者)已 经被发送到特定的相邻加速节点。同样,加速节点可以存储哪些数据项或哪些数据标识符 (或两者)已经从特定的相邻加速节点接收、是经由点对点通信还是经由广播。此外或可替 换地,加速节点可以关于它已经从它的字典删除或将要从它的字典删除特定的数据项进行 通信(例如,经由广播或点对点通信)。此外或可替换地,加速节点可以关于它已经在生成 数据标识符的过程中检测到冲突(例如,两个不同的数据项导致相同的数据标识符)进行 通信(例如,经由广播或点对点通信)。加速节点可以使用这个信息来在字典同步过程中协 调数据项和数据标识符传输操作。例如,第一加速节点可以避免在已经发送了数据标识符 或数据项之后的预定时间内将数据标识符或数据项发送到预定的其它加速节点。可替换地 或另外地,第一加速节点可以避免在已经从预定的其它加速节点获得了数据标识符或数据 项之后的预定时间内发送已经获得的数据标识符或数据项。可替换地或另外地,第一加速 节点可以确定在一个或多个相邻加速节点的字典中缺少哪些字典条目。
[0058] 在其他示例中,加速节点可以规律地向相邻加速节点广播字典条目(例如,加速 节点可以广播它知道哪些字典条目),通过广播数据项或广播数据标识符或者广播两者。力口 速节点可以识别它们的相邻加速节点知道哪些字典条目、以及它们自己的字典的哪些字典 条目是相邻加速节点不知道的。然后,具有一个或多个相邻加速节点字典中没有的字典条 目的加速节点可以经由点对点通信向缺少该字典条目的加速节点广播或发送该字典条目。 在其它示例中,加速节点可以确定在它的字典中缺少由另一网络节点广播的字典条目,并 且更新它的字典(例如,通过要求其他加速节点发送字典条目,或者通过假设广播包括数 据项来自己计算数据标识符)。在一些示例中,加速节点仅广播它的字典的数据标识符以保 持发送尽可能低的数据量。通过采用本段所描述的方法,"更多知识的"加速节点可以"教 导" "更少知识的"加速节点。
[0059] 如上所述,网络中的每个加速节点(或网络的一部分)在使用本文所描述的字典 同步方法时可以只具有一个字典。然而,在一些例子中,只有网络中被选择的加速节点才采 用本文所描述的字典同步方法而且彼此之间使用同步的字典进行通信。此外,这些加速节 点可以具有一个或多个附加的字典以用于与其它加速节点进行通信。例如,加速节点的组 可以被聚合为区域集群(例如,基于它们的位置),其中,每个群集中的一个或多个加速节 点直接与其他集群中的相应加速节点进行通信。其余的加速节点只与它们的区域集群内的 加速节点直接通信。在这个系统中,本文所描述的字典同步过程可以被用于只同步用于集 群间通信的字典。对于一个集群内的通信,加速节点可以使用其他字典。可选地,加速节点 的特定集群中的加速节点可以具有第二字典,其通过使用本文所描述的方法进行同步以用 于集群内通信。
[0060] 如上所述,包括在字典中的数据项可以是存储在发送加速节点或网络节点的任何 资源(例如,客户端或服务器的资源)中的任何数据。通过使用本文所描述的字典同步方 法,在实际的数据项被用于客户端-服务器网络的服务请求之前,所有加速节点或加速节 点的子集的字典可以填入数据项。例如,第一加速节点可以修改它的字典中的特定数据项, 以便生成它的字典中没有的新的数据项。另外或可替换地,第一加速节点可以生成随机数 据项(例如,通过随机比特的连接)。以这种方式,加速节点可以"发明"新的数据项并且 "预防地"为其本身或其他加速节点准备发送这些数据项(或它们相关联的数据标识符)。 第一加速节点可以将新生成的数据项发送到如上所述的相邻加速节点。例如,第一加速节 点可以发送数据项和相关联的数据标识符,或只发送数据项。以这种方式,第一加速节点和 其他加速节点的字典可以在低峰时段填入字典条目,这可以在时间上加速高网络流量容量 的通信。
[0061] 本文所述的方法也可以被用来填入被添加到计算机网络的加速节点的字典。在一 般情况下,具有预先安装的字典或者没有预先安装的字典的加速节点可以被添加到计算机 网络上。具有填入的字典的其他加速节点可以发送(例如,广播)字典条目到新添加的加 速节点。以这种方式,新添加的加速节点的字典被建立或者预先安装的字典的字典条目可 以被更新并与计算机网络中的其他加速节点的现有字典同步。因此,本文所述的方法可以 提供动态和灵活的字典同步方法,其中新的节点可以容易地并入现有的计算机网络。本文 所述的方法也可以用来备份计算机网络中的一个或多个加速节点的字典。例如,如果特定 的加速节点丢失它的字典的一部分或它的整个字典(例如,内存字典),则相邻加速节点可 以通过本文所述的字典同步操作来填入该特定的加速节点的字典。
[0062] 特定的加速节点还可以使用本文所述的方法来验证它的字典。例如,特定的计算 机网络(或网络的一部分)中的所有加速节点可以被同步以具有同样的字典。在某一时间 点,特定的加速节点可以通过将从其他加速节点获得或者在其他加速节点中监测到的数据 项和/或数据标识符与它自己的字典进行比较,来检查它的字典的有效性。如果存在差异, 则特定的加速节点可以确定它的字典(至少部分)是无效。可选地,加速节点可以从其他 加速节点请求字典条目以替换无效的字典条目。这提供了内置的错误检查操作。
[0063] 本文所述的方法涉及连接在网络中的网络节点的字典同步以包括相同或相应的 字典条目。在一些例子中,计算机网络中的所有加速节点或者三个或更多个加速节点的子 组的字典包括同样的字典条目。在其他例子中,使用本文所述的方法仅同步每个加速节点 的字典的一部分。在其他例子中,不同的加速节点可以动态地删除或重新排列它们的字典 (或它们的字典的一部分)。例如,特定的加速节点的字典可以具有预定的最大大小。只要 当前字典小于该最大大小,加速节点就可以添加字典条目到它的字典。然而,当字典大小达 到最大大小时,网络节点可以在同步操作过程中在接收到新的字典条目时删除字典条目。 可以基于多个条件中的一个或多个来选择要被删除的字典条目。例如,可以从字典中删除 最不流行的字典条目。字典条目的流行度可以通过它在总体网络的通信中或者在特定的加 速节点处的使用频率来测量。在其它例子中,在通信中最长时间未被使用(最近度)的字 典条目可以从字典中删除。加速节点也可以使用普及度和最近度的组合来选择要被删除的 字典条目。在其他例子中,即使加速节点的最大字典大小尚未到达,加速节点也可以决定不 包括与不符合一个或多个预先确定的标准的数据项有关的字典条目。以这种方式,加速节 点可以保证,它们的字典不会过度增长(毕竟,字典通常存储在内存中以便迅速可用),而 且它们各自的字典适合在特定的加速节点发送的数据。例如,第一加速节点可能很少或从 不发送第一资源,而第一资源在预定的时间段被第二加速节点频繁地发送。在这种情况下, 第一加速节点在它的字典中不包括该资源的数据项。然而,如上面所描述的,数据项可以与 多个资源相关联。因此,即使第一加速节点可能不发送第一资源,但是它仍然可以在它的字 典中具有该数据项。另一方面,第二加速节点可以在它的字典中具有包括该资源的数据项 的一个或多个条目。
[0064] 两个字典中两个同样的数据项可以对相同的内容(例如,将被提供的网页中的图 片)编码。然而,这并不意味着字典条目必须以同样的格式或方式存储在不同的网络节点 的存储器中。同样,如果在在本文中描述获得、发送或接收字典条目,则指的是字典条目的 内容(例如,特定的数据项或数据标识符)。字典条目可以以不同的方式被处理(例如,编 码、解码或压缩)以用于传输,而且仍然包括同样的内容。此外,如果字典条目被获得、存 储、然后被发送或多次发送,则字典条目仍然是指内容而不是指编码内容的特定数据块。
[0065] 上面已经描述了客户端-服务器网络。客户端-服务器网络是特定的计算机网 络。计算机网络包括经由网络连接进行通信的多个网络节点。然而,本文所述的方法和系 统可以等同地应用于包括多个网络节点的其它计算机网络中,所述网络节点使用任何形式 的包括上述数据项和数据标识符的字典以用于在网络节点之间通信。此外,上面描述了客 户端-服务器网络的加速节点之间的通信。加速节点是具有上面描述的属性的特定的网络 节点。本文所述的方法和系统可以等同地应用于除加速节点外的其它网络节点。例如,本 文所述的方法和系统可以应用于服务器或客户端节点,或者应用于具有其他功能的网络节 点。
[0066] 尽管使用物理设备的符号来代表图1的系统100的不同的组件,但是图1描述的 是计算机网络的功能单元的视图。这些功能单元可以以许多不同的硬件配置具体实施。例 如,每个功能单元可以在专用设备上托管(host)。可替换地,多个功能单元可以在同一主机 设备、或者两个(或更多个)主机设备的任何组合上托管。下面描述有关功能单元的可能 硬件实现的更多细节。这同样适用于图2和图3所示的计算机网络。
[0067] 在一个实施例中,本文所述的计算机网络包括云计算环境(例如,图1、图2和图 3的客户端-服务器网络中的服务器端网络节点中的一些或全部可以包含在云计算环境 中)。然后,功能单元可以分布在多个计算机系统中。例如,使用本文所述的字典同步方法 的网络节点(例如,加速节点)可以是云计算环境(即,在包括网络节点的网络中用于分 布式计算的环境)的一部分。在一个实施例中,客户端可以请求服务,而且该服务(至少部 分)是由云计算环境中的网络节点处理的。在这些实施例中,同步的字典可以被用于加速 云计算环境中的不同网络节点之间的通信。
[0068] 在高层次上,客户端、服务器和网络节点(例如,加速节点)与计算机或处理器相 关联。计算机或处理器包括电子计算单元(例如,处理器),可用于接收、发送、处理、存储或 管理与数据库系统的操作环境相关联的数据和信息。当用在本公开中时,术语"计算机"或 "处理器"旨在包括任何适当的处理设备。术语"处理器"应被理解为单个处理器,其被配置 为执行由本公开中所描述的一个或多个方面定义的操作,或者"处理器"包括两个或更多个 处理器,其被配置为例如以操作分布在两个或更多个处理器之间的方式执行相同的操作。 处理器可以包括多个有机场效应晶体管或薄膜晶体管或它们的组合。这可以使由两个或更 多个处理器能够并行地处理操作。两个或更多个处理器可以布置在超级计算机中,超级计 算机可以包括允许并行地处理操作的多个核。例如,计算机或处理器可以是台式计算机或 膝上型计算机、蜂窝电话、智能电话、个人数字助理、平板计算机、电子书阅读器或移动媒体 播放器。此外,数据库系统的操作环境可以使用任何数量的服务器以及除服务器外的计算 机(包括服务器池)来实现。实际上,计算机或处理器以及服务器可以是任何计算机或处 理设备,诸如,例如,刀片服务器、通用个人计算机(PC) ,Macintosh、工作站、基于UNIX的工 作站、或任何其它适合的设备。换句话说,本公开设想了除了通用计算机之外的计算机,以 及没有传统操作系统的计算机。此外,计算机、处理器以及服务器可以被适配为运行任何操 作系统,包括Linux、UNIX、Windows、Mac OS、Android或任何其它适合的操作系统。
[0069] 术语"计算设备"、"服务器"或"处理器"包括用于处理数据的所有种类的装置、 设备和机器,例如包括可编程处理器、计算机、片上系统、或多个器件、或上述的组合。装置 可以包括专用逻辑电路,例如,FPGA(现场可编程门阵列)、CUDA(统一计算设备架构)或 ASIC(专用集成电路)。除了硬件,装置还可以包括创建用于所讨论的计算机程序的执行环 境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、 虚拟机、或它们中的一个或多个的组合的代码。装置和操作环境可以实现各种不同的计算 模式基础设施。在企业系统中,存在用于执行公司的业务流程的OLTP (联机事务处理),其 中,员工和其他利益相关者(诸如供应商或客户)遵循业务流程,这可能导致在OLTP系统 的数据库中创建业务文档。除了结合图1和图2描述的持久性数据库,数据库系统还可以 包括内存数据库,从而利用最新的硬件创新在主内存中运行数据库。在本文所述的本公开 的实现方式中,服务器可以是一种Java开发平台,例如,Enterprise JavaBeans? (EJB)、 J2EE连接器架构(JCA)、Java消息服务(JMS)、Java命名和目录接口(JNDI)、Java数据库 连接(JDBC)、ByDesign平台、SuccessFactor平台、ERP套件技术、或内存数据库(诸如高性 能分析应用(HANA)平台)。在一个方面,服务器可以基于上述两个或更多个不同的平台。
[0070] 与特定的实现方式无关,"软件"或"操作"可以包括在有形的和非瞬时介质上的 计算机可读指令、固件、连线或编程的硬件、或它们的任何组合,当它们被运行时可操作以 执行至少这里描述的过程和操作。实际上,每个软件组件都可以全部或部分地用任何适当 的计算机语目来编写或描述,所述计算机语目包括C、C++、Java、Visual Basic、汇编语目、 Perl、4GL的任何适合的版本、以及其它语言。
[0071] 附图和伴随的描述示出了示例性过程和计算机可实施的技术。然而,数据库系统 操作环境(或其软件或其它组件)设想了使用、实现或运行任何适合的技术来执行这些及 其它过程。要理解的是,这些过程仅仅是用于说明的目的,而且所描述的或类似的技术可以 在任何适当时间执行,包括并发地、单独地、或组合地执行。此外,这些过程中的许多操作可 以同时地、并发地与/和以所示的次序不同的次序发生。此外,操作环境可以使用具有附加 的操作、较少的操作与/和不同的操作的过程,只要该方法保持适当即可。
[0072] 在本说明书中描述的主题和操作的一些方面可以在数字电子电路、半导体电路、 模拟电路中,或者在计算机软件、固件或硬件(包括本说明书中公开的结构及其结构等同) 中、或者在一个或多个它们的组合中实现。在本说明书中描述的主题的实施例可以被实现 为在计算机存储介质上编码的一个或多个计算机程序,即计算机程序指令的一个或多个模 块,以用于由数据处理装置执行或者控制数据处理装置的操作。可替换地或另外地,程序指 令可以被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,其被生成以 编码被发送到合适的接收装置的信息以用于由数据处理装置执行。计算机存储介质可以 是,或者被包含在,计算机可读存储设备、计算机可读存储基片、随机或串行存取存储器阵 列或设备、或一个或多个它们的组合(中)。此外,虽然计算机存储介质不是传播信号,但是 计算机存储介质可以是人工生成的传播信号中编码的计算机程序指令的源或目的地。计算 机存储介质还可以是,或者被包含在,一个或多个分离的物理组件或介质(例如,多张 CD、 磁盘、USB驱动器、闪存驱动器、可移动存储设备(例如,SD卡)、或其它存储设备)(中)。 在本说明书中描述的操作可以被实现为由数据处理装置针对存储在一个或多个计算机可 读存储设备或从其它源接收到的数据执行的操作。
[0073] 计算机程序(也被称为程序、软件、软件应用、脚本或代码)或"用户接口"可以以 任何形式的编程语言编写,包括编译或解释语言、说明性或过程语言,并且它可以以任何形 式部署,包括作为独立程序或模块、组件、子例程、对象、或适于在计算环境中使用的其它单 元。计算机程序可以,但不必,对应于文件系统中的文件。程序可以被存储在保存其他程序 或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本)、专用于所讨 论的程序的单个文件中、或者多个协同文件(例如,存储一个或多个模块、子程序或部分代 码的文件)中。计算机程序可以被部署为在一个计算机或多个计算机上执行,所述多个计 算机位于一个地点或跨多个地点分布并且由通信网络互连。
[0074] 术语"图形用户界面"或GUI可以以单数或复数形式使用以描述一个或多个图形 用户界面,而且每个显示特定的图形用户界面。因此,⑶I可以表示任何图形用户界面,包括 但不限于,处理信息并且有效地向用户呈现信息结果的网络浏览器、触摸屏或命令行接口 (CLI)。在一般情况下,Gn可以包括多个用户界面(UI) "图标",它们中的一部分或全部与 网络浏览器相关联,诸如托管该UI的计算设备的用户可操作的交互式字段、下拉列表和按 钮。这些和其他Π 图标可以有关或表示网络浏览器的功能。术语"浏览器用户界面"是指 嵌入在远程计算设备的网络浏览器环境中的图形用户界面。浏览器用户界面可以被配置为 启动对统一资源定位符(URL)的请求,并且可以被配置为显示检索到的网页,诸如HTML编 码的网页。浏览器用户界面可以包括显示的或隐藏的图标,当图标被激活时启动远程计算 设备内部或外部的相关联的电子过程。例如,浏览器用户界面可以是Internet Explorer、 Chrome或Firefox。"创建图标"应被理解为在用户界面上生成新的图标。"修改图标"应 被理解为改变用户界面上现有的图标的属性。"删除图标"应被理解为移除用户界面上现有 的图标,例如,由新创建的图标替换。"更新用户界面"从而应被理解为创建、修改或者删除 用户界面上的图标。
[0075] 适合于执行计算机程序的处理器包括,例如,通用和专用微处理器,以及任何种类 的数字计算机的任何一个或多个处理器。一般来说,处理器将从只读存储器或随机存取存 储器或两者接收指令和数据。计算机的基本元件是用于根据指令执行动作的处理器,以及 用于存储指令和数据的一个或多个存储器设备。一般来说,计算机还将包括,或者可操作地 耦合到,用于存储数据的一个或多个海量存储设备(例如,磁盘、磁光盘或光盘),以从其接 收数据或向其传送数据。然而,计算机不是必须具有这样的设备。此外,计算机可以被嵌入 到另一设备,例如,举几个例子,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游 戏控制台、全球定位系统(GPS)接收器、或便携式存储设备(例如,通用串行总线(USB)闪 存驱动器)。适于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质 和存储器设备,包括例如半导体存储期器件,例如,EPROM、EEPROM和闪存设备;磁盘,例如, 内部硬盘或可移动盘;磁光盘;以及⑶-ROM和DVD-ROM光盘。处理器和存储器可以由专用 逻辑电路补充或并入专用逻辑电路中。
[0076] 为了提供和用户的交互,本说明书中描述的用户接口的实现方式可以在具有非柔 性屏幕或柔性屏幕的计算机和键盘和指示设备上实施,计算机例如CRT(阴极射线管)或 LCD(液晶显示器)监视器,用于向用户显示信息,键盘和指示设备例如手指、触笔、鼠标或 轨迹球,用户利用它们可以向计算机提供输入。其他种类的设备也可以被用来提供和用户 的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如触摸反馈、视觉反馈、听 觉反馈或触觉反馈;并且,可以以任何形式接收来自用户的输入,包括声音、语音、触摸或触 觉输入。另外,计算机或处理器可以通过向用户使用的设备发送文档和从其接收文档来与 用户进行交互;例如,通过向用户设备上的网络浏览器发送网页来响应从网页接收到请求。
[0077] 本说明书中描述的主题的实现方式可以在包括后端组件(例如,服务器)或包括 中间件组件(例如,应用服务器)或包括前端组件(例如,具有图形用户界面或网络浏览器 的客户端计算机,用户可以通过图形用户界面或网络浏览器与本说明书中描述的主题的实 现方式进行交互)的计算系统中实施,或者在这些后端、中间件、前端组件的任意组合中实 施。系统的组件可以利用数字数据通信(例如通信网络)的任何形式或介质互连。通信网 络的例子包括:局域网("LAN")和广域网("WAN")、互联网络(例如,因特网)以及对等 网络(例如,自组织对等网络)。
[0078] 计算机系统可以包括用户和服务器。用户和服务器通常相互远离,并且典型地,通 过通信网络交互。依靠运行在各个计算机上并且相互具有用户-服务器关系的计算机程 序,建立用户和服务器的关系。在一些实现方式中,服务器将数据(例如,HTML页面)发送到 用户设备(例如,为了向与用户设备进行交互的用户显示数据,并从用户接收用户输入)。 可以在服务器处从用户设备接收在用户设备处生成的数据(例如,用户交互的结果)。 [0079] 虽然本说明书包含了许多具体实现方式的细节,但是这些不应被解释为对任何实 现方式的范围的限制或对可要求保护的范围的限制,而是应该被解释为针对特定实现方式 的特征的描述。本说明书中在分离的实现方式中描述的某些特征也可以在单个实现方式中 组合实现。反之,在单个实现方式中描述的各种特征也可以单独在多个实现方式中实现或 在任何合适的子组合中实现。此外,尽管特征如上可以被描述为某些组合甚至最初要求保 护的组合中的动作,但是来自所要求保护的组合的一个或多个特征在某些情况下可以从组 合中排除,并且所要求保护的组合可以针对子组合或子组合的变体。
[0080] 类似地,虽然在附图中以特定的次序描绘操作,这是这不应当被理解为需要以所 示的特定次序或以连续的次序执行这样的操作,或者需要执行所有图示的操作才能达到期 望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,在上述实现方式中各系 统模块和组件的分离不应当被理解为要求在所有实现方式中都这样的分离,并且应当理解 的是,所描述的程序组件和系统一般可以一起集成在单个软件产品中或封装到多个软件产 品中。
[0081] 已经描述了本发明主题的特定实现方式。对本领域技术人员显而易见的是,其他 实现方式、所描述的实现方式的改变和置换都再所附权利要求的范围内。例如,权利要求中 记载的操作可以以不同的次序来执行并且仍然获得期望的结果。
[0082] 因此,示例性实现方式的以上描述不限制或约束本公开。其他改变、替换和更改也 是可能的,而且不脱离本发明的精神和范围。
【权利要求】
1. 一种计算机实现的方法,包括: 识别在包括多个加速节点的计算机网络中所包括的第一加速节点,其中,加速节点用 于加速通过所述多个加速节点中的一个或多个连接的客户端计算机系统和服务器计算机 系统之间的资源传输,第一加速节点包括具有数据项和数据标识符的第一字典,每个数据 标识符识别相应的数据项,而且其中加速节点被配置为向其他加速节点提供数据标识符并 基于从另一加速节点接收到的数据标识符来识别数据项; 在第一加速节点处从第二加速节点接收数据项; 将数据项包括在第一加速节点中所包含的第一字典中;W及 向计算机网络的第H加速节点提供接收到的数据项、识别接收到的数据项的数据标识 符或两者,其中数据标识符是由第一加速节点确定的或者从其它加速节点获得的。
2. 如权利要求1所述的方法,还包括: 在第一加速节点处从一个或多个附加的加速节点接收附加的数据项;W及 将附加的数据项包括在第一字典中。
3. 如权利要求1所述的方法,还包括使用预定的算法确定相应的数据项的数据标识 符, 其中,预定的算法包括确定散列值。
4. 如权利要求1所述的方法,其中,第一加速节点将包括数据项、数据标识符或两者的 字典条目的协议存储在第H加速节点的第二字典中。
5. 如权利要求1所述的方法,还包括: 在第一加速节点处确定第二字典中缺少第一字典中的哪些字典条目;W及 从第一加速节点提供缺少的字典条目。
6. 如权利要求1所述的方法,还包括: 确定第H加速节点的字典是否包含所述数据项; 如果确定第H加速节点的字典包含所述数据项,则向第H加速节点提供用于识别接收 到的数据项的数据标识符;W及 如果确定第H加速节点的字典不包含所述数据项,则向第H加速节点提供所述数据 项。
7. 如权利要求1所述的方法,还包括: 估计第H加速节点确定识别接收到的数据项的数据标识符所花费的资源和/或时间 量、W及从第一加速节点向第H加速节点发送所述数据标识符所花费的资源和/或时间 量; 将第H加速节点确定识别接收到的数据项的数据标识符所花费的资源和/或时间量 与从第一加速节点向第H加速节点发送所述数据标识符所花费的资源和/或时间量进行 比较; 如果第H加速节点确定识别接收到的数据项的数据标识符所花费的资源和/或时间 量大于从第一加速节点向第H加速节点发送所述数据标识符所花费的资源和/或时间量, 则从第一加速节点向第H加速节点发送识别接收到的数据项的数据标识符; 如果第H加速节点确定识别接收到的数据项的数据标识符所花费的资源和/或时间 量小于从第一加速节点向第H加速节点发送所述数据标识符所花费的资源和/或时间量, 则使第H网络节点计算所述数据标识符。
8. 如权利要求1所述的方法,其中,数据标识符是由第一加速节点提供的,该方法还包 括: 在第H加速节点处接收第一字典的数据标识符; 确定第H加速节点的字典不包括所述数据标识符; 向第一加速节点请求由所述数据标识符识别的数据项; 从第一加速节点向第H加速节点发送所述数据项;W及 将接收到的数据标识符和接收到的数据项包括在第H加速节点的字典中。
9. 如权利要求1所述的方法,其中,第一加速节点规律地向包括第H加速节点的一个 或多个相邻加速节点广播它的字典至少一部分。
10. 如权利要求1所述的方法,其中,所述数据项是经由第一加速节点在计算机网络上 发送的资源。
11. 如权利要求1所述的方法,还包括: 将所述多个加速节点中的一个加速节点处的网络流量与预定的阔值进行比较; 确定计算机网络的所述加速节点处的网络流量低于预定的阔值;W及 响应于确定计算机网络的所述加速节点处的网络流量低于预定的阔值,向计算机网络 的第H加速节点提供接收到的数据项、识别接收到的数据项的数据标识符或两者。
12. 如权利要求1所述的方法,还包括: 在第一加速节点处生成将被包括在第一加速节点的字典中的数据项; 确定识别生成的数据项的数据标识符;W及 向第H加速节点提供生成的数据项、或者生成的数据项与计算的数据标识符的组合。
13. 如权利要求1所述的方法,还包括: 由第一加速节点确定在预定的时间段内,预定的数据标识符被用于与其他加速节点通 信的次数; 将所述次数与阔值次数进行比较;W及 当确定所述次数小于阔值次数时,从字典删除由所述数据标识符识别的数据项。
14. 如权利要求1所述的方法,其中,所述计算机网络包括所述多个加速节点的至少 H个不同的子集,每个子集包括至少一个加速节点,其中,第一加速节点被包括在第一子集 中,第二加速节点被包括在第二子集中,而且第H加速节点被包括在加速结点的第H子集 中, 其中,第一加速节点包括至少一个附加的字典,而且该方法还包括: 向加速节点的第一子集的其他加速节点提供所述附加的字典的数据标识符,W便基于 所述附加的字典的数据标识符来识别数据项。
15. 如权利要求1所述的方法,还包括: 规律地同步计算机网络的所有加速节点、或者计算机网络的加速节点的子集的所有字 典, 其中,在同步完成之后,计算机网络的加速节点的所有字典至少部分地包括同样的字 典条目。
16. 如权利要求1所述的方法,还包括: 在没有填入的字典的情况下,将第H加速节点添加到计算机网络;或者 其中,第H加速节点的第二字典已经部分或完全丢失;W及 通过从计算机网络的其他加速节点接收数据来建立或者恢复第H加速节点的第二字 典。
17. 如权利要求1所述的方法,其中,由第一网络节点接收到的数据项是服务器和客户 端之间的通信过程的一部分。
18. 如权利要求1所述的方法,其中,所述计算机网络是云计算环境。
19. 一种系统,包括: 一个或多个处理器;W及 计算机可读介质,其存储所述一个或多个处理器可执行的指令W执行W下操作: 识别在包括两个或更多个加速节点的计算机网络中所包括的第一加速节点,其中,力口 速节点用于加速通过加速节点连接的客户端计算机系统和服务器计算机系统之间的资源 传输,第一加速节点包括具有数据项和数据标识符的第一字典,每个数据标识符识别相应 的数据项,而且其中加速节点被配置为向其他加速节点提供数据标识符并基于从其它加速 节点接收到的数据标识符来识别数据项; 在第一加速节点处从第二加速节点接收数据项; 将数据项包括在第一字典中;W及 向计算机网络的第H加速节点提供接收到的数据项、识别接收到的数据项的数据标识 符或两者,其中数据标识符是在第一加速节点处确定的或者从其它加速节点获得的。
20. 如权利要求19所述的系统,其中,所述计算机可读介质还存储所述一个或多个处 理器可执行的指令W执行W下操作: 估计第H加速节点确定识别接收到的数据项的数据标识符所花费的资源和/或时间 量、W及从第一加速节点向第H加速节点发送所述数据标识符所花费的资源和/或时间 量; 将第H加速节点确定识别接收到的数据项的数据标识符所花费的资源和/或时间量 与从第一加速节点向第H加速节点发送所述数据标识符所花费的资源和/或时间量进行 比较; 如果第H加速节点确定识别接收到的数据项的数据标识符所花费的资源和/或时间 量大于从第一加速节点向第H加速节点发送所述数据标识符所花费的资源和/或时间量, 则从第一加速节点向第H加速节点发送识别接收到的数据项的数据标识符; 如果第H加速节点确定识别接收到的数据项的数据标识符所花费的资源和/或时间 量小于从第一加速节点向第H加速节点发送所述数据标识符所花费的资源和/或时间量, 则使第H网络节点计算所述数据标识符。
21. -种在其上存储有指令的计算机可读介质,该指令在被处理器执行时使该处理器 执行W下操作: 识别在包括两个或更多个加速节点的计算机网络中所包括的第一加速节点,其中,力口 速节点用于加速通过加速节点连接的客户端计算机系统和服务器计算机系统之间的资源 传输,第一加速节点包括具有数据项和数据标识符的第一字典,每个数据标识符识别相应 的数据项,而且其中加速节点被配置为向其他加速节点提供数据标识符并基于从其它加速 节点接收到的数据标识符来识别数据项; 在第一加速节点处从第二加速节点接收数据项; 将数据项包括在第一字典中;W及 向计算机网络的第H加速节点提供接收到的数据项、识别接收到的数据项的数据标识 符或两者,其中数据标识符是在第一加速节点处确定的或者从其它加速节点获得的。
22.如权利要求21所述的计算机可读介质,还存储在被处理器执行时使该处理器执行 W下操作的指令: 估计第H加速节点确定识别接收到的数据项的数据标识符所花费的资源和/或时间 量、W及从第一加速节点向第H加速节点发送所述数据标识符所花费的资源和/或时间 量; 将第H加速节点确定识别接收到的数据项的数据标识符所花费的资源和/或时间量 与从第一加速节点向第H加速节点发送所述数据标识符所花费的资源和/或时间量进行 比较; 如果第H加速节点确定识别接收到的数据项的数据标识符所花费的资源和/或时间 量大于从第一加速节点向第H加速节点发送所述数据标识符所花费的资源和/或时间量, 则从第一加速节点向第H加速节点发送识别接收到的数据项的数据标识符; 如果第H加速节点确定识别接收到的数据项的数据标识符所花费的资源和/或时间 量小于从第一加速节点向第H加速节点发送所述数据标识符所花费的资源和/或时间量, 则使第H网络节点计算所述数据标识符。
【文档编号】G06F17/30GK104346426SQ201410364925
【公开日】2015年2月11日 申请日期:2014年7月29日 优先权日:2013年7月29日
【发明者】O.伊戈尔卡 申请人:Sap欧洲公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1