用于云规模存储和数据传输的分布式对象放置、复制和检索的制作方法

文档序号:27611727发布日期:2021-11-27 02:46阅读:132来源:国知局
用于云规模存储和数据传输的分布式对象放置、复制和检索的制作方法
用于云规模存储和数据传输的分布式对象放置、复制和检索
1.相关申请的交叉引用
2.本技术要求于2019年4月9日提交的、题为“用于云规模存储和数据传输的分布式对象放置、复制和检索(distributed object placement,replication,and retrieval for cloud

scale storage and data delivery)”的美国非临时专利申请no.16/379,620的权益和优先权,其内容通过引用以其整体并入本文。
技术领域
3.本技术涉及基于对象流行度来共同控制存储节点处的对象复制和经复制对象之间的负载平衡,并且具体地,涉及根据节点处的对象的流行度以分布式方式并按节点来控制存储节点处的对象复制。


背景技术:

4.存储系统(例如,实施内容交付网络(cdn)的系统)中的对象放置策略会影响存储系统的性能,例如,用于向客户端提供对象。具体而言,对象放置策略应有效地使用存储资源、计算资源和网络资源,同时还应根据对对象的不同需求和存储系统内对应的不同对象多样性进行扩展。具体地,当许多客户端请求同一个对象时,会执行负载平衡,以控制对对象的访问。这种负载平衡会在向客户端提供对象时引入延迟。减少由负载平衡客户端访问对象所引入的延迟的一种方式是跨存储节点复制对象。具体而言,对象复制可以促进对对象的访问,同时减少执行负载平衡的需要以及与执行负载平衡相关联的对应的延迟。然而,跨存储节点的对象复制利用了存储系统内增加的存储和计算资源量,从而限制了跨存储节点的其他对象的存储。因此,在对象局部性和对象复制之间存在权衡,前者会导致对象访问的负载平衡和延迟增加,后者会导致存储和计算资源使用增加。因此,需要通过平衡对象局部性和对象复制之间的权衡的对象放置策略来控制对象复制以及随后的对象访问负载平衡的系统和方法。
5.大多数现有的存储系统,例如,分层cdn,使用简化的启发式方法来控制跨存储节点的对象复制,这可能会导致在提供对象访问时效率低下。例如,典型的分层cdn实施对象放置策略,包括达到cpu和网络限制(例如,网络延迟限制)的第一层存储节点,以及达到存储限制的第二层存储节点。通过流行度控制对象复制可以为在典型的分层cdn实现方式中观察到的这个问题提供解决方案。具体而言,依赖于对象流行度的对象放置策略可用于控制存储系统中的对象复制,同时平衡对象局部性和对象复制之间的权衡。
6.然而,由于多种原因,使用流行度来控制对象复制很难实现。具体地,由于多种原因,很难准确测量对象流行度以控制对象复制。具体而言,对象的流行度会随着时间而改变。进而,当流行度测量是基于过去的流行度测量进行时,这会使随着时间的推移和特定时间实例的流行度测量产生偏差。此外,对象状态,例如,对象名称、统计信息以及查找数据结构,可用于准确测量对象流行度,例如,用于识别用于测量流行度的对象实例。鉴于存储系统中的对象数量极其庞大,以及对应的散列表空间消耗,这种状态可能会达到数十gb的必
须存储的数据,这可能会带来巨大的成本并损害性能。此外,流行度分布是长尾的(long

tail),这意味着节点并不真正关心大多数对象的流行度,因为大多数对象并不流行,因此不经常被请求。然而,为了了解对象是否真的流行,例如,相对于其他对象而言,应该测量和维护所有对象的流行度和对象状态,包括不流行的对象,因此需要进一步使用资源。此外,在集中式服务器中准确测量流行度有许多缺点。具体而言,需要冗余以便提供高可用性。此外,与集中式服务器的通信增加了延迟和计算开销。此外,流行度可能取决于对象局部性,这使得在集中式服务器中准确测量流行度变得困难。因此,需要用于准确测量对象的流行度以控制对象在存储节点处的复制的系统和方法。具体地,需要用于根据节点处的对象的流行度以分布式方式并按节点来控制存储节点中的对象复制和对应的访问负载平衡的系统和方法。
附图说明
7.为了描述可以获得本公开的上述和其他优点和特征的方式,将通过参考其具体实施例来对上述简要描述的原理进行更具体的描述,所述具体实施例在附图中示出。应理解,这些附图仅描绘了本公开的示例性实施例,因此不应被视为是对其范围的限制,通过使用附图以额外的特性和细节描述并说明了本文的原理,其中:
8.图1a示出了示例云计算架构;
9.图1b示出了示例雾计算架构;
10.图2a示出了示例网络环境(诸如,数据中心)的图示;
11.图2b示出了网络环境的另一个示例;
12.图3示出了基于所请求对象的流行度来控制存储系统中的对象复制的示例环境;
13.图4示出了用于使用变化的服务器多样性来生成候选服务器的有序列表的调度器的场景;
14.图5示出了应用两步散列技术来生成候选服务器的有序列表的概念性流程;
15.图6示出了基于流行度来控制对象复制的示例方法的流程图;
16.图7示出了示例计算系统;以及
17.图8示出了示例网络设备。
具体实施方式
18.下文详细讨论本公开的各种实施例。虽然讨论了具体的实现方式,但应该理解,这样做只是出于说明的目的。相关领域的技术人员将认识到,在不脱离本公开的精神和范围的情况下,可以使用其他组件和配置。因此,以下描述和附图是说明性的,不应被解释为限制性的。描述了许多具体细节,以提供对本公开的透彻理解。然而,在某些情况下,为了避免混淆描述,没有描述众所周知的或常规的细节。本公开中对一个实施例或实施例的引用可以是指同一实施例或任一实施例;并且,此类引用意味着实施例中的至少一个。
19.对“一个实施例”或“实施例”的引用是指结合此实施例描述的特定特征、结构或特性包括在本公开的至少一个实施例中。说明书中各处出现的短语“在一个实施例中”不一定都是指同一实施例,也不是与其他实施例相互排斥的单独或替代的实施例。此外,描述了可以由一些实施例而不是由其他实施例展示的各种特征。
20.本说明书中使用的术语在本领域、在本公开的上下文中以及在使用每个术语的特定上下文中通常具有它们的普通含义。替代语言和同义词可用于本文讨论的任何一个或多个术语,并且本文是否详细阐述或讨论了术语不具有特殊的意义。在某些情况下,提供了某些术语的同义词。列举一个或多个同义词不排除使用其他同义词。本说明书中任何地方使用的示例,包括本文讨论的任何术语的示例,仅是说明性的,并不旨在进一步限制本公开或任何示例术语的范围和含义。同样,本公开不限于本说明书中给出的各种实施例。
21.在不限制本公开的范围的情况下,下文给出根据本公开的实施例的仪器、装置、方法及其相关结果的示例。需要注意的是,为了方便读者,在示例中可以使用标题或副标题,但这不会限制本公开的范围。除非另有定义,否则本文中使用的技术和科学术语具有本公开所属领域的普通技术人员通常理解的含义。在发生冲突的情况下,以本文件(包括定义)为准。
22.本公开的附加特征和优点将在随后的描述中阐述,并且部分将从描述中显而易见,或者可以通过实践本文公开的原理而获悉。本公开的特征和优点可以通过所附权利要求中特别指出的仪器和组合来实现和获得。本公开的这些和其他特征将从以下描述和所附权利要求中变得更加显而易见,或者可以通过实践本文阐述的原理而获悉。
23.概述
24.一种方法可以包括:在存储系统的调度器处从客户端接收对对象的请求。所述方法还可以包括由存储系统的调度器通过使用二维一致性散列函数生成候选存储节点的有序列表来识别存储系统中的用于向客户端提供对象的候选存储节点。根据候选存储节点的有序列表,可以通过候选存储节点中的用于提交对对象的请求的一个或多个候选存储节点来促进对对象的请求的分配。具体地,一个或多个候选存储节点可以被配置为通过使用缓存许可策略来选择性地将对对象的请求提交到客户端来促进对请求的分配,该缓存许可策略是基于所请求对象在一个或多个候选存储节点处的流行度特性而形成的。
25.一种系统可以包括:一个或多个处理器和存储指令的至少一个计算机可读存储介质,这些指令在由一个或多个处理器执行时,使得一个或多个处理器执行以下操作:在存储系统的调度器处从客户端接收对对象的请求。指令还可以使得一个或多个处理器执行以下操作:由调度器通过生成候选存储节点的有序列表来识别存储系统中的用于向客户端提供对象的候选存储节点。具体地,指令可以使得一个或多个处理器执行以下操作:使用二维一致性散列函数来生成候选存储节点的有序列表,该二维一致性散列函数取决于与对对象的请求相关联的流和对象本身两者。此外,指令可以使得一个或多个处理器执行以下操作:根据候选存储节点的有序列表,通过候选存储节点中的用于提交对对象的请求的一个或多个候选存储节点来促进对对象的请求的分配。具体地,一个或多个候选存储节点可以通过使用缓存许可策略来选择性地将对对象的请求提交到客户端来促进对对象的请求的分配,该缓存许可策略是基于所请求对象在一个或多个候选存储节点处的流行度特性而形成的。
26.一种非暂态计算机可读存储介质,其中存储有指令,这些指令在由处理器执行时,使得处理器执行以下操作:在存储系统的调度器处从客户端接收对对象的请求。这些指令可以使得处理器执行以下操作:由调度器通过生成候选存储节点的有序列表来识别存储系统中的用于向客户端提供对象的候选存储节点。具体地,这些指令可以使得处理器执行以下操作:使用二维一致性散列函数来生成候选存储节点的有序列表。此外,这些指令可以使
得处理器执行以下操作:根据候选存储节点的有序列表,通过候选存储节点中的用于提交对对象的请求的一个或多个候选存储节点来促进对对象的请求的分配。具体地,调度器可以通过向候选存储节点的有序列表中的第一个候选存储节点发送对对象的请求来促进对对象的请求的分配。此外,一个或多个候选存储节点可以通过使用缓存许可策略来选择性地将对对象的请求提交到客户端来促进对请求的分配,该缓存许可策略是基于所请求对象在一个或多个候选存储节点处的流行度特性而形成的。
27.示例实施例
28.所公开的技术通过平衡对象局部性和对象复制之间的权衡的由请求驱动的对象放置策略解决了本领域中对控制对象访问负载平衡和对应的对象复制的需求。本技术涉及用于基于对象流行度来控制存储节点处的对象复制的系统、方法以及计算机可读介质。此外,本技术涉及用于根据节点处的对象的流行度以分布式方式并按节点来控制存储节点处的对象复制的系统、方法以及计算机可读介质。
29.在本文首先公开了用于网络数据访问和服务的网络环境和架构的描述,如图1a、图1b、图2a、图2b所示。接下来讨论用于根据节点处的对象的流行度以分布式方式且按节点来控制存储节点处的对象复制的系统、方法以及计算机可读介质,如图3

图6所示。然后,讨论以对示例设备(如图7和图8所示)的简要描述结束。这些变型将在本文中随着各种实施例的阐述而加以描述。本公开现在转向图1a。
30.图1a示出了示例云计算架构100的图示。该架构可以包括云102。云102可以包括一个或多个私有云、公共云,和/或混合云。此外,云102可以包括云元件104

114。云元件104

114可以包括,例如,服务器104、虚拟机(vm)106、一个或多个软件平台108、应用或服务110、软件容器112,以及基础设施节点114。基础设施节点114可以包括各种类型的节点,诸如,计算节点、存储节点、网络节点、管理系统等。
31.云102可以通过云元件104

114来提供各种云计算服务,诸如,软件即服务(saas)(例如,协作服务、电子邮件服务、企业资源规划服务、内容服务、通信服务等)、基础设施即服务(iaas)(例如,安全服务、网络服务、系统管理服务等)、平台即服务(paas)(例如,网络服务、流媒体服务、应用开发服务等),以及其他类型的服务,诸如,桌面即服务(daas)、信息技术管理即服务(itaas)、托管软件即服务(msaas)、移动后端即服务(mbaas)等。
32.客户端端点116可以与云102连接,以从云102获得一个或多个特定服务。客户端端点116可以通过一个或多个公共网络(例如,互联网)、专用网络和/或混合网络(例如,虚拟专用网络)与元件104

114通信。客户端端点116可以包括具有联网功能的任何设备,诸如,膝上型计算机、平板计算机、服务器、台式计算机、智能电话、网络设备(例如,接入点、路由器、交换机等)、智能电视、智能汽车、传感器、gps设备、游戏系统、智能可穿戴对象(例如,智能手表等)、消费对象(例如,互联网冰箱、智能照明系统等)、城市或交通系统(例如,交通控制、收费系统等)、物联网(iot)设备、相机、网络打印机、交通系统(例如,飞机、火车、摩托车、船等),或任何智能或连接对象(例如,智能家居、智能建筑、智能零售、智能眼镜等),等等。
33.图1b示出了示例雾计算架构150的图示。雾计算架构150可以包括云层154,其包括云102和任何其他云系统或环境,以及雾层156,其包括雾节点162。客户端端点116可以与云层154和/或雾层156通信。架构150可以包括云层154、雾层156和客户端端点116之间的一个
或多个通信链路152。通信可以向上流动到云层154和/或向下流动到客户端端点116。
34.雾层156或“雾”提供了传统云网络的计算、存储和联网功能,但更接近端点。因此,雾可以将云102扩展到更接近客户端端点116。雾节点162可以是雾网络的物理实现方式。此外,雾节点162可以向客户端端点116提供本地或区域服务和/或连通性。因此,业务和/或数据可以从云102卸载到雾层156(例如,通过雾节点162)。因此,雾层156可以以更低的延迟以及其他优势(诸如,将数据保持在(一个或多个)本地或区域网络内的安全性优点),向客户端端点116提供更快的服务和/或连通性。
35.雾节点162可以包括任何联网的计算设备,诸如,服务器、交换机、路由器、控制器、相机、接入点、网关等。此外,雾节点162可以部署在具有网络连接的任何地方,诸如,工厂车间、电线杆、铁轨旁、车辆、石油钻井平台、机场、飞机、购物中心、医院、公园、停车场、图书馆等。
36.在一些配置中,一个或多个雾节点162可以部署在雾实例158、160内。雾实例158、158可以是本地或区域云或网络。例如,雾实例156、158可以是区域云或数据中心、局域网、雾节点162的网络等。在一些配置中,一个或多个雾节点162可以部署在网络内,或部署为例如独立节点或单个节点。此外,雾节点162中的一个或多个可以通过链路164以各种拓扑(包括,例如,星形、环形、网状或分层布置)彼此互连。
37.在一些情况下,一个或多个雾节点162可以是移动雾节点。移动雾节点可以移动到不同的地理位置、逻辑位置或网络,和/或雾实例,同时保持与云层154和/或端点116的连通性。例如,特定的雾节点可以放置在交通工具(诸如,飞机或火车)中,它可以从一个地理位置和/或逻辑位置行进到不同的地理位置和/或逻辑位置。在此示例中,特定的雾节点可以在位于起始位置时连接到与云154的特定物理和/或逻辑连接点,而在位于目的地位置时切换到与云154不同的物理和/或逻辑连接点。因此,特定的雾节点可以在特定的云和/或雾实例内移动,因此在不同时间为来自不同位置的端点提供服务。
38.图2a示出了示例网络环境200(诸如,数据中心)的图示。在一些情况下,网络环境200可以包括可以支持和/或托管云102的数据中心。网络环境200可以包括可以表示网络环境200的物理层或基础设施(例如,底层)的结构220。结构220可以包括主干202(例如,主干路由器或交换机)和叶204(例如,叶路由器或交换机),它们可以互连,以用于在结构220中路由或切换业务。主干202可以对结构220中的叶204进行互连,并且叶204可以将结构220连接到网络环境200的覆盖或逻辑部分,其可以包括应用服务、服务器、虚拟机、容器、端点等。因此,结构220中的网络连通性可以从主干202流动到叶204,反之亦然。叶204和主干202之间的互连可以是冗余的(例如,多个互连),以避免路由失败。在一些实施例中,叶204和主干202可以完全连接,使得任何给定的叶连接到主干202中的每一个,并且任何给定的主干连接到叶204中的每一个。叶204可以是,例如,机架顶部(“tor”)交换机、聚合交换机、网关、入口和/或出口交换机、提供商边缘设备,和/或任何其他类型的路由或交换设备。
39.叶204可以负责路由和/或桥接租户或客户分组,并应用网络策略或规则。网络策略和规则可以由一个或多个控制器216驱动,和/或由一个或多个设备(诸如,叶204)实现或强制执行。叶204可以将其他元件连接到结构220。例如,叶204可以将服务器206、管理程序208、虚拟机(vm)210、应用212、网络设备214等与结构220连接。此类元件可以驻留在一个或多个逻辑或虚拟层或网络(诸如,覆盖网络)中。在一些情况下,叶204可以将进出此类元件
(例如,服务器206)的分组进行封装和解封装,以便能够在整个网络环境200和结构220中进行通信。叶204还可以为任何其他设备、服务、租户或工作负载提供对结构220的访问。在一些情况下,连接到叶204的服务器206可以类似地将进出叶204的分组进行封装和解封装。例如,服务器206可以包括一个或多个虚拟交换机或路由器或隧道端点,用于在由服务器206托管或连接到服务器206的覆盖层或逻辑层与由结构220表示并通过叶204访问的底层之间对分组进行隧道传输。
40.应用212可以包括软件应用、服务、容器、设备、功能、服务链等。例如,应用212可以包括防火墙、数据库、cdn服务器、ids/ips、深度分组检测服务、消息路由器、虚拟交换机等。来自应用212的应用可以由多个端点(例如,服务器206、vm 210等)分配、链接或托管,或者可以完全从单个端点运行或执行。
41.vm 210可以是由管理程序208托管的虚拟机或在服务器206上运行的虚拟机管理器。vm 210可以包括在相应服务器上的访客操作系统上运行的工作负载。管理程序208可以提供创建、管理和/或运行vm 210的软件、固件和/或硬件层。管理程序208可以允许vm 210共享服务器206上的硬件资源,并将服务器206上的硬件资源显示为多个独立的硬件平台。此外,服务器206上的管理程序208可以托管一个或多个vm 210。
42.在一些情况下,vm 210和/或管理程序208可以迁移到其他服务器206。服务器206可以类似地迁移到网络环境200中的其他位置。例如,连接到特定叶的服务器可以更改为连接到不同的或额外的叶。此类配置或部署更改可能涉及对应用于正在迁移的资源以及其他网络组件的设置、配置以及策略的修改。
43.在一些情况下,一个或多个服务器206、管理程序208和/或vm 210可以表示或驻留在租户或客户空间中。租户空间可以包括与一个或多个客户端或订阅者相关联的工作负载、服务、应用、设备、网络,和/或资源。因此,网络环境200中的业务可以基于特定租户策略、空间、协议、配置等来路由。此外,寻址可以在一个或多个租户之间变化。在一些配置中,租户空间可以划分为逻辑分段和/或网络,并和与其他租户相关联的逻辑分段和/或网络分开。租户之间的寻址、策略、安全性以及配置信息可以由控制器216、服务器206、叶204等管理。
44.网络环境200中的配置可以在逻辑级别、硬件级别(例如,物理)和/或两者上实现。例如,可以基于端点或资源属性(诸如,端点类型和/或应用组或配置文件)通过软件定义网络(sdn)框架(例如,以应用为中心的基础设施(aci)或vmware nsx)在逻辑和/或硬件级别上实现配置。为了说明,一个或多个管理器可以通过控制器216在逻辑级别(例如,应用或软件级别)上定义配置,其可以通过网络环境200实现或传播此类配置。在一些示例中,控制器216可以是aci框架中的应用策略基础设施控制器(apic)。在其他示例中,控制器216可以是用于与其他sdn解决方案相关联的一个或多个管理组件,诸如,nsx管理器。
45.此类配置可以定义规则、策略、优先级、协议、属性、对象等,用于对网络环境200中的业务进行路由和/或分类。例如,此类配置可以定义用于基于端点组(epg)、安全组(sg)、vm类型、桥接域(bd)、虚拟路由和转发实例(vrf)、租户、优先级、防火墙规则等来对业务进行分类和处理的属性和对象。其他示例网络对象和配置在下文进一步描述。可以基于业务的标签、属性或其他特性来强制执行业务策略和规则,诸如,与业务相关联的协议、与业务相关联的epg、与业务相关联的sg、与业务相关联的网络地址信息等。此类策略和规则可由
网络环境200中的一个或多个元件(诸如,叶204、服务器206、管理程序208、控制器216等)强制执行。如前所述,网络环境200可以根据一个或多个特定的软件定义的网络(sdn)解决方案(诸如,cisco aci或vmware nsx)进行配置。下文简要描述这些示例sdn解决方案。
46.aci可以通过可扩展的分布式强制执行来提供以应用为中心或基于策略的解决方案。aci支持在网络、服务器、服务、安全性、需求等的声明性配置模型下集成物理和虚拟环境。例如,aci框架实现了epg,它可以包括共享公共配置要求(诸如,安全性、qos、服务等)的端点或应用的集合。端点可以是虚拟/逻辑或物理设备,诸如,连接到网络环境200的vm、容器、主机或物理服务器。端点可以具有一个或多个属性,诸如,vm名称、访客os名称、安全性标签、应用配置文件等。应用配置可以以合约的形式应用于epg之间,而不是直接应用于端点。叶204可以将传入业务分类为不同的epg。分类可以基于,例如,网络分段标识符,诸如,vlan id、vxlan网络标识符(vnid)、nvgre虚拟子网标识符(vsid)、mac地址、ip地址等。
47.在一些情况下,aci基础设施中的分类可以通过应用虚拟交换机(avs)来实现,它可以在主机(诸如,服务器或交换机)上运行。例如,avs可以基于指定的属性对业务进行分类,并且使用不同的标识符(诸如,网络分段标识符(例如,vlan id))对不同属性的epg的分组进行标记。最后,叶204可以基于其标识符将分组与它们的属性epg联系起来,并强制执行策略,这可以由一个或多个控制器216实现和/或管理。叶204可以将来自主机的业务属于哪个epg分类,并相应地强制执行策略。
48.另一个示例sdn解决方案基于vmware nsx。借助vmware nsx,主机可以运行分布式防火墙(dfw),此防火墙可以对业务进行分类和处理。考虑将三种类型的vm,即应用vm、数据库vm以及网络vm放入一个二层网络分段的情况。可以基于vm类型在网络分段内提供业务保护。例如,可以允许网络vm之间的http业务,而不允许网络vm与应用vm或数据库vm之间的http业务。为了对业务进行分类并实施策略,vmware nsx可以实施安全组,这些安全组可以用于对特定vm(例如,网络vm、应用vm、数据库vm)进行分组。dfw规则可以配置为为特定安全组实施策略。为了说明,在前面示例的上下文中,dfw规则可以被配置为阻止网络、应用和数据库安全组之间的http业务。
49.现在返回参考图2a,网络环境200可以通过叶204、服务器206、管理程序208、vm 210、应用212以及控制器216来部署不同的主机,诸如,vmware esxi主机、windows hyper

v主机、裸金属物理主机等。网络环境200可以与各种管理程序208、服务器206(例如,物理和/或虚拟服务器)、sdn编排平台等进行互操作。网络环境200可以实现声明性模型,以允许其与应用设计和整体网络策略的集成。
50.控制器216可以提供对结构信息、应用配置、资源配置、软件定义网络(sdn)基础设施的应用级配置建模、与管理系统或服务器的集成等的集中式访问。控制器216可以形成控制平面,其通过北向api与应用平面形成接口,且通过南向api与数据平面形成接口。
51.如前所述,控制器216可以为网络环境200中的配置定义和管理(一个或多个)应用级模型。在一些情况下,应用或设备配置也可以由网络中的其他组件来管理和/或定义。例如,管理程序或虚拟设备,诸如,vm或容器,可以运行服务器或管理工具来管理网络环境200中的软件和服务,包括用于虚拟设备的配置和设置。
52.如上所述,网络环境200可以包括一种或多种不同类型的sdn解决方案、主机等。为了清楚和说明的目的,将参考aci框架来描述本公开中的各种示例,并且控制器216可互换
地称为控制器、apic或apic控制器。然而,应当注意的是,本文的技术和概念不限于aci解决方案,而是可以在其他架构和场景中实现,包括其他sdn解决方案,以及可能没有部署sdn解决方案的其他类型的网络。
53.此外,如本文所引用的,术语“主机”可以指服务器206(例如,物理的或逻辑的)、管理程序208、vm 210、容器(例如,应用212)等,并且可以运行或包括任何类型的服务器或应用解决方案。“主机”的非限制性示例可以包括虚拟交换机或路由器,诸如,分布式虚拟交换机(dvs)、应用虚拟交换机(avs)、矢量分组处理(vpp)交换机;vcenter和nsx managers(nsx管理器);裸金属物理主机;hyper

v主机;vm;docker containers(docker容器);等等。
54.图2b示出了网络环境200的另一个示例。在此示例中,网络环境200包括连接到结构220中的叶204的端点222。端点222可以是物理和/或逻辑或虚拟实体,诸如,服务器、客户端、vm、管理程序、软件容器、应用、资源、网络设备、工作负载等。例如,端点222可以是表示以下项的对象:物理设备(例如,服务器、客户端、交换机等)、应用(例如,网络应用、数据库应用等)、逻辑或虚拟资源(例如,虚拟交换机、虚拟服务设备、虚拟化网络功能(vnf)、vm、服务链等)、运行软件资源的容器(例如,应用、设备、vnf、服务链等)、存储装置、工作负载或工作负载引擎等。端点122可以具有地址(例如,身份(identity))、位置(例如,主机、网络分段、虚拟路由和转发(vrf)实例、域等)、一个或多个属性(例如,名称、类型、版本、补丁级别、os名称、os类型等)、标签(例如,安全标签)、配置文件等。
55.端点222可以与相应的逻辑组218相关联。逻辑组218可以是包含根据以下项分组在一起的端点(物理和/或逻辑或虚拟)的逻辑实体:一个或多个属性(诸如,端点类型(例如,vm类型、工作负载类型、应用类型等))、一个或多个要求(例如,策略要求、安全要求、qos要求、客户要求、资源要求等)、资源名称(例如,vm名称、应用名称等)、配置文件、平台或操作系统(os)特性(例如,os类型或名称,包括访客和/或主机os等)、相关联的网络或租户、一个或多个策略、标签等。例如,逻辑组可以是表示分组在一起的端点集合的对象。为了说明,逻辑组1可以包含客户端端点,逻辑组2可以包含网络服务器端点,逻辑组3可以包含应用服务器端点,逻辑组n可以包含数据库服务器端点等。在一些示例中,逻辑组218是aci环境中的epg和/或另一个sdn环境中的其他逻辑组(例如,sg)。
56.可以基于逻辑组218对进出端点222的业务进行分类、处理、管理等。例如,可以使用逻辑组218对进出端点222的业务进行分类,将策略应用于进出端点222的业务,定义端点222之间的关系,定义端点222的作用(例如,端点是否消费或提供服务等),将规则应用于进出端点222的业务,将过滤器或访问控制列表(acl)应用于进出端点222的业务,限定进出端点222的业务的通信路径,强制执行与端点222相关联的要求,实施与端点222相关联的安全性和其他配置等。
57.在aci环境中,逻辑组218可以是用于定义acl中的合约的epg。合约可以包括指定epg之间的通信是什么以及如何发生的规则。例如,合约可以定义提供服务的内容、消费服务的内容,以及与此消费关系相关的策略对象。合约可以包括定义通信路径以及端点或epg之间通信或关系的所有相关元素的策略。例如,网络epg可以提供客户端epg消费的服务,并且此消费会受制于过滤器(acl)和包括一个或多个服务(诸如,防火墙检查服务和服务器负载平衡)的服务图(service graph)。
58.如前所述,存储系统(例如,实施cdn的系统)中的对象放置策略会影响存储系统的
性能,例如,用于向客户端提供对象。具体而言,对象放置策略应有效地使用存储资源、计算资源以及网络资源,同时还应根据对对象的不同需求和存储系统内对应的不同对象多样性进行扩展。具体地,当许多客户端请求同一个对象时,会执行负载平衡以控制对对象的访问。这种负载平衡会在向客户端提供对象时引入延迟。减少由负载平衡客户端访问对象所引入的延迟的一种方式是跨存储节点复制对象。具体而言,对象复制可以促进对对象的访问,同时减少与执行负载平衡(例如,由于负载平衡而产生)相关联的对应的延迟。然而,跨存储节点的对象复制利用了存储系统内增加的存储和计算资源量,从而限制了跨存储节点的其他对象的存储。因此,对象局部性(导致对象访问的负载平衡和延迟增加)和对象复制(导致存储和计算资源使用增加)之间存在权衡。
59.大多数现有的存储系统,例如,分层cdn,使用简化的启发式方法来控制跨存储节点的对象复制,这会导致在提供对象访问时效率低下。例如,典型的分层cdn实施对象放置策略,包括达到cpu和网络限制(例如,网络延迟限制)的第一层存储节点,以及达到存储限制的第二层存储节点。通过流行度来控制对象复制可以为在典型的分层cdn实现方式中观察到的这个问题提供解决方案。具体而言,依赖于对象流行度的对象放置策略可用于控制存储系统中的对象复制,同时平衡对象局部性和对象复制之间的权衡。
60.然而,由于多种原因,使用流行度来控制对象复制很难实现。具体地,由于多种原因,很难准确测量对象流行度以控制对象复制。具体而言,对象的流行度会随着时间而改变。进而,当流行度测量是基于过去的流行度测量进行时,这会使随着时间的推移和特定时间实例的流行度测量产生偏差。此外,对象状态,例如,对象名称、统计信息以及查找数据结构,可用于准确测量对象流行度,例如,用于识别用于测量流行度的对象实例。鉴于存储系统中的对象数量极其庞大,以及对应的散列表空间消耗,这种状态会达到数十gb的必须存储的数据,这可能会带来巨大的成本并损害性能。此外,流行度分布是长尾的,这意味着节点并不真正关心大多数对象的流行度,因为大多数对象并不流行,因此不经常被请求。然而,为了了解对象是否真的流行,例如,相对于其他对象而言,应该测量和维护所有对象的流行度和对象状态,包括不流行的对象,从而需要进一步使用资源。此外,在集中式服务器中准确测量流行度有许多缺点。具体而言,需要冗余以便提供高可用性。此外,与集中式服务器的通信增加了延迟和计算开销。此外,流行度可能取决于对象局部性,这使得在集中式服务器中准确测量流行度变得困难。
61.本公开包括用于基于对象流行度来控制对象复制的系统、方法以及计算机可读介质。具体地,存储系统的调度器可以从客户端接收对对象的请求。调度器可以通过使用二维一致性散列函数生成候选存储节点的有序列表来识别用于向客户端提供对象的存储系统的候选存储节点。二维一致性散列函数可能取决于与对对象的请求相关联的流和对象本身两者。随后,根据候选存储节点的有序列表,可以通过候选存储节点中的用于提交对对象的请求的一个或多个候选存储节点来促进对对象的请求的分配。具体地,调度器可以将对对象的请求发送到候选存储节点的有序列表中的第一个候选存储节点,以促进对对象的请求的分配。此外,一个或多个候选存储节点可以通过使用缓存许可策略来选择性地将对对象的请求提交到客户端来促进对对象的请求的分配,该缓存许可策略是基于所请求对象在一个或多个候选存储节点处的流行度特性而形成的。
62.图3示出了用于基于所请求对象的流行度来控制存储系统中的对象复制的示例环
境300。具体地,图3中所示的示例环境300可以用于跨存储节点以分布式方式来控制存储系统中的存储节点处的对象复制。更具体地,图3中所示的示例环境300可以用于根据存储节点中的每一个处的对象流行度按节点来控制存储系统中的存储节点处的对象复制。在基于流行度来控制对象复制时,环境300可以有效地控制跨存储系统的存储节点对对象的访问的负载平衡。例如,通过基于跨存储节点的流行度来复制对象,环境300可以用于控制对象在存储系统中出现的次数,从而调节用于提供对存储系统中的对象的访问的负载平衡量。
63.图3所示的示例环境300可以至少部分地通过适用的云或雾环境形成,诸如,图1a所示的云计算架构100和图1b所示的雾计算架构150。例如,环境300可以被实施为在云计算架构100中实施的cdn的一部分。此外,在此示例中,环境300可以用于控制在云计算架构100中实施的cdn中的存储节点处的对象复制。此外,环境300可以至少部分地通过适用的网络环境形成,诸如,图2a和图2b所示的网络环境200。例如,环境300可以至少部分地在由图2a所示的网络环境200形成的数据中心中实现。此外,在此示例中,环境300可以用于控制在由网络环境200形成的数据中心中的存储节点处的对象复制。
64.图3所示的示例环境300包括客户端302、调度器304,以及服务器池306。客户端302用于请求对对象的访问并且随后通过环境300来获得对对象的访问权。如本文所使用的,客户端可以包括能够请求和获得对对象的访问的适用的实体。具体地,客户端可以包括用户、网络服务,以及应用。例如,客户端可以包括结构化应用的微服务,此微服务被配置为在执行结构化应用时请求并获得对对象的访问。
65.调度器304用于从客户端302接收对对象的请求。调度器304可以被实现为客户端302的一部分。例如,调度器304可以通过在客户端302处执行的应用来实现。或者,调度器304可以在远离客户端302处实现,并且通过网络来接收对对象的请求。例如,调度器304可以在云计算架构100中远离客户端302实现。因此,调度器304可以通过网络来接收对云计算架构100中的对象的请求。
66.从客户端302接收到的对对象的请求包括所请求对象的标识符。如稍后将更详细讨论的,对象标识符可用于选择候选服务器,以用于将对象提供给客户端302。此外,对对象的请求可以作为用于向客户端302发送数据和从客户端302接收数据的数据流的一部分而被包括或以其他方式与数据流相关联。包括对对象的请求的流可以与提供给客户端302的网络服务相关联。例如,流可以与流向客户端302的流媒体电视内容相关联,并且对对象的请求可以包括对电视内容的一部分的请求。如稍后将更详细讨论的,所请求对象的流可用于选择用于将对象提供给客户端302的候选服务器。
67.调度器304作为存储系统的一部分而被包括或以其他方式与存储系统相关联。存储系统可以是用于存储和提供对象的适用的存储系统。例如,存储系统可以是cdn。调度器304的存储系统包括服务器池306。服务器池306包括服务器s1...s9。尽管在整个说明书中都提到了服务器,但服务器旨在表示用于存储对象并提供对对象的访问的适用的存储节点。具体而言,服务器可以表示数据中心中的存储节点。此外,虽然在服务器池306中仅示出了九个服务器,但是在各种实施例中,服务器池306可以包括更多或更少的服务器。
68.使用接收到的对对象的请求,调度器304可以识别服务器池306中的用于将对象提供给客户端302的候选服务器。候选服务器可以包括将所请求对象存储在本地的服务器。进而,候选服务器可以从其本地存储装置(例如,缓存)向客户端302提供对象。或者,候选服务
器可以包括没有将所请求对象存储在本地的服务器。随后并且如稍后将更详细地讨论的,候选服务器可以确定是从另一个位置检索所请求对象还是将请求转发到另一个候选服务器。如稍后将更详细讨论的,候选服务器可以检索所请求对象,并将该对象存储在候选服务器的本地存储装置中。具体地并且如稍后将更详细地讨论的,候选服务器可以使用流行度度量,例如,候选服务器处的所请求对象的流行度特性,以确定是否从另一个位置检索所请求对象。随后,候选服务器可以将所请求对象存储在本地,并将该对象从其本地存储装置提供给客户端302。
69.调度器304可以通过生成候选服务器的有序列表来识别服务器池306的候选服务器。候选服务器的有序列表包括候选服务器的顺序列表,通过这些候选服务器可以分配对象请求,以便将对象提供给客户端302。具体地,对对象的请求可以根据候选服务器的有序列表通过服务器池306分配,以便最终将所请求对象提供给客户端302。如稍后将更详细讨论的,调度器304可以将对象请求发送到候选服务器的有序列表中的第一个候选服务器。随后并且如稍后将更详细讨论的,候选服务器然后可以基于候选服务器的有序列表通过候选服务器池中的候选服务器来顺序地分配对象请求。具体地,候选服务器可以基于候选服务器是否同意向客户端302提供对象来分配对象请求。或者,调度器304可以以分布式方式来查询候选服务器中的每一个,以提交对象请求。进而,可以至少部分地基于候选服务器是否同意将对象提供给客户端302来复制对象,从而有效地控制对象在服务器池306中的复制。
70.调度器304可以使用二维一致性散列函数来生成候选服务器的有序列表。例如,稍后将更详细地讨论可由调度器304使用以生成候选服务器的有序列表的散列函数。本文使用的一致性散列是指用于分配流的技术,例如,根据流的散列值来分配对与流相对应的对象的请求。具体地,一致性散列可用于分配对对象/流的请求,使得分配对服务器集更改具有鲁棒性。
71.如稍后将关于示例散列函数更详细地讨论的那样,调度器304可以使用二维一致性散列函数,此函数依赖于与所请求对象相关联的流和所请求对象的对象标识符两者,以生成候选服务器的有序列表。具体地,调度器304可以使用与所请求对象相关联的流的流信息,以应用二维一致性散列函数来生成候选服务器的有序列表。流信息可以包括与所请求对象的流相关的适用数据。例如,所请求对象的流信息可以包括流的五元组和客户端302的客户端标识符。
72.调度器304可以基于变化的服务器多样性来应用二维一致性散列函数以生成候选服务器的有序列表。服务器多样性可以定义为为对象提供服务的候选服务器的数量。服务器多样性可以取决于存储系统内的负载平衡量和对象局部性的量两者,例如,存储节点在存储系统中具有给定对象的概率。例如,调度器304可以使用较大服务器多样性来选择一个或多个候选服务器,该较大服务器多样性在存储系统内对负载平衡的权重大于对象局部性,例如,相比于减少对象复制更优先考虑负载平衡。在另一示例中,调度器304可以使用较小服务器多样性来选择一个或多个候选服务器,该较小服务器多样性在存储系统内对对象局部性的权重大于负载平衡,例如,以减少入口负载的重新分配为代价实现较低的对象复制。因此,应用具有增加的服务器多样性的二维一致性散列函数可以增加所识别的候选服务器的数量,因为增加的服务器多样性有利于更多的负载平衡。稍后将参考图4更详细地描述此概念。
73.此外,由于对象局部性对应于对象本身,而负载平衡对应于对象的流,因此不同的服务器多样性会导致散列函数在应用中改变对象的权重和对象的流。例如,调度器304可以应用具有有利于负载平衡的较大服务器多样性的散列函数。随后,散列函数在选择一个或多个候选服务器时可以更多地依赖于对象的流而不是对象本身。在另一个示例中,调度器304可以应用具有有利于对象局部性的更小的服务器多样性的散列函数。随后,散列函数在选择一个或多个候选服务器时可以更多地依赖于对象本身而不是对象的流。
74.图4示出了调度器304的场景400,用于使用变化的服务器多样性来生成候选服务器的有序列表。在图4所示的示例场景400中,调度器304可以使用适用的散列函数(诸如,本文描述的散列函数)来生成候选服务器的有序列表。具体地,调度器304可以使用二维一致性散列函数,结合请求对象标识和对象流的流信息来识别候选服务器的有序列表。
75.此外,调度器304可以将二维一致性散列函数中的变化的服务器多样性量应用于候选服务器的不同子集。具体地,调度器304可以在二维一致性散列函数中应用不断减少的服务器多样性量来生成越来越小的候选服务器子集。随后,调度器304可以随机或伪随机地选择候选服务器的每个子集中的候选服务器,以创建候选服务器的有序列表。在二维一致性散列函数中应用不断减少的服务器多样性量时,对象局部性,例如,候选服务器在其存储装置中具有请求的概率,随着候选服务器子集的大小的减小而更有利。进而,最终的服务器子集可以包括另外一个非常有利于对象局部性的候选服务器,例如,基于对象的识别来识别。由于局部性是非常有利的,因此,最终子集中的一个或多个候选服务器包括所请求对象的本地副本。因此,所识别的候选服务器列表将包括至少一个候选服务器,即列表中的最终候选服务器,其具有对象的本地副本。这可以确保对象的副本可供客户端302在候选服务器的有序列表中的候选服务器之间访问。
76.关于图4所示的示例场景400,调度器304可以应用具有大服务器多样性量(例如,服务器多样性量为7)的散列函数来生成候选服务器的第一子集402。候选服务器的第一子集402包括第一服务器s1、第二服务器s2、第三服务器s3、第五服务器s5、第六服务器s6、第七服务器s7,以及第九服务器s9。通过应用散列函数,第四服务器s4和第八服务器s8被排除在候选服务器的第一子集402之外。由于在用于创建候选服务器的第一子集402的较大服务器多样性量中负载平衡比局部性更有利,因此,候选服务器的第一子集402中的一些候选服务器可能不包括对象的本地存储副本。
77.调度器304然后可以从候选服务器的第一子集402中随机或伪随机地选择服务器用作候选服务器的有序列表中的第一个候选服务器。具体地,在图4所示的示例场景400中,调度器304从候选服务器的第一子集402中选择第三服务器s3。随后,调度器304可以添加第三服务器s3的标识作为候选服务器的有序列表中的第一个候选服务器。
78.接下来,调度器304减少服务器多样性量并且应用散列函数来生成候选服务器的第二子集404。具体地,当与用于生成候选服务器的第一子集402的服务器多样性量7进行比较时,调度器304可以应用具有减少的服务器多样性量(例如,3)的散列函数。候选服务器的第二子集404包括第二服务器s2、第五服务器s5,以及第七服务器s7。调度器304然后可以从候选服务器的第二子集404中随机或伪随机地选择服务器用作候选服务器的有序列表中的下一个候选服务器。具体地,在图4所示的示例场景400中,调度器304从候选服务器的第二子集404中选择第七服务器s7。随后,调度器304可以添加第七服务器s7的标识作为候选服
务器的有序列表中的下一个候选服务器。
79.减少用于应用散列函数以最终识别候选服务器的服务器多样性量的此过程可以重复适用的次数。具体地,在示例场景400中,调度器减少服务器多样性量并且应用散列函数生成候选服务器的第三子集406。具体地,当与用于生成候选服务器的第二子集404的服务器多样性量3进行比较时,调度器304可以应用具有减少的服务器量(例如,1)的散列函数。候选服务器的第三子集406仅包括第二服务器s2。因此,调度器304可以选择第二服务器s2用作候选服务器的有序列表中的下一个候选服务器。随后,调度器304可以添加第二服务器s2的标识作为候选服务器的有序列表中的下一个候选服务器。如前所述,由于随着服务器多样性的降低,局部性是有利的,并且由于当使用较低的服务器多样性量时从散列函数中识别出第二服务器s2,所以第二服务器s2包括对象的本地副本。具体地,第二服务器s2用作候选服务器的有序列表中的最后一个候选服务器,并且还包括对象的本地副本。
80.本公开现在转向讨论不同的散列函数,调度器304可以使用这些散列函数来识别候选服务器的有序列表。
81.在各种实施例中,调度器304可以使用具有权重的torus两步散列技术来生成候选服务器的有序列表。这种散列技术基于1

d循环散列技术。在1

d循环散列中,对象与具有最接近散列的服务器相关联。在2

d torus散列技术中,对象和服务器使用两个不同的散列函数针对每个坐标而被散列成点。对象和服务器可以使用单个散列函数和盐(salt)根据2

d torus散列技术针对每个坐标而被散列。进而,调度器可以选择散列点最接近对象的散列点的候选服务器。可以使用δ(flow):sqrt(α*δ(flow)**2+δ(object

id)**2)的权重参数,而不是使用像欧几里得(euclidian)sqrt(δ(flow)**2+δ(object

id)**2)这样的简单距离来确定散列点之间的距离。在这种情况下,alpha是服务器多样性。随后,对于α=0,对给定对象的所有请求都发送到同一服务器。当α=infinity时,对象在所有服务器之间进行负载平衡。所有其他alpha值在负载平衡和与不同的服务器多样性相对应的对象局部性之间提供不同级别的权衡。这种技术可以推广到n维(具有n个参数和n

1个亲和权重)。此外,这种技术可以推广到服务器和对象之间的其他距离,而不是使用基于散列点的最接近的服务器和对象来实现。
82.在某些实施例中,调度器304可以使用环散列技术来生成候选服务器的有序列表。具体地,调度器304可以使用具有一致性服务器子集的环散列技术来生成候选服务器的有序列表。在实施环散列技术时,调度器304可以将所有或部分服务器放置在一个圆圈周围。例如,服务器可以伪随机地放置在一个圆圈周围,例如,通过为每个服务器分配一个伪随机角度。随后,调度器304可以通过选择圆圈/环上的最接近内容标识符散列(例如,请求对象的内容标识符散列)的d_i服务器,选择多样性d_i的服务器的子集。随后,调度器304可以使用所请求对象的流信息,例如,五元组和client_id,以选择具有基于流的一致性散列的候选服务器。下文描述环散列技术的具体实现方式。具体而言,如果有n个服务器,则建立一个l的列表大小,且如果α_k是列表中第k个服务器的服务器多样性参数,其中α_l=n>α_2>...>α_l=1,则最后一个服务器通过以下公式找到:s_l=hash_l mod 2*π。第k个(k<l)服务器通过以下公式找到:s_k=s_l+(hash_k mod 2*π*α_k/n)。hash_l是object

id的散列,而hash_k(k<l)是flow

id的不同散列函数,且mod x算子是移位模,返回的值在

x/2和+x/2之间。
83.在环散列技术的另一种实现方式中,可以识别(例如,人工识别)环上的最接近s_l服务器的α_i服务器。识别出的最接近s_l服务器的α_i服务器然后可以放置在新生成的环上。随后,可以直接使用s_k从放置在新生成的环上的α_i服务器中选择候选服务器。
84.当服务器被从服务器子集中移除时,环散列技术是有利的。具体而言,当服务器被移除时,存储在此服务器上的内容/对象必须重新分配。此外,希望通过环散列技术将内容重新分配给最接近的服务器(例如,在圆圈上最接近所移除的服务器的服务器)。然而,最接近的服务器很可能已经拥有此内容,从而无需不必要地复制存储所移除的服务器上的内容。
85.在各种实施例中,调度器304可以使用具有一致性服务器子集的两步散列技术来生成候选服务器的有序列表。图5示出了应用两步散列技术来生成候选服务器的有序列表的概念性流程500。
86.在概念性流程500的第一步,使用第一种一致性散列技术将对象id映射到服务器排列502。这种技术可以从maglev散列中导出,因为它依赖于服务器排列502将存储桶(bucket)分配给服务器。如概念性流程500中所示,存储桶可以包括多个服务器,而不是每个存储桶只有单个服务器。具体而言,根据maglev技术的本质,k个服务器排列被排列。变量k可以是存储桶的数量。
87.在概念性流程500的第二步,多样性参数α用于从排列中挑选服务器的子集。多样性越大,服务器子集就越大。此外,随着多样性参数的增加,不断增长的子集可以相互包括。例如,多样性可以是从1到n的“服务器数量”。
88.在概念性流程500的第三步,使用第二种一致性散列技术、例如基于流信息来将对象的流映射到所选的服务器子集。该第二种一致性散列技术也可以利用maglev散列。因此,可以基于对象流到所选服务器子集中的服务器的映射来生成候选服务器的有序列表。
89.回到图3所示的示例环境300,调度器304可以通过服务器池306的至少一部分来促进对对象的请求的分配。具体地,在调度器304识别出候选服务器的有序列表之后,调度器304可以通过服务器池306的至少一部分来促进对请求的分配。更具体地,调度器304可以使用候选服务器的有序列表,通过候选服务器的至少一部分来促进对请求的分配。如稍后将更详细讨论的,可以根据候选服务器的有序列表以顺序方式通过服务器池306的至少一部分来分配对对象的请求。可以使用适用的数据转发协议来分配请求。例如,请求可以使用适用的协议(例如,分段路由本地块(srlb0或多协议标签交换(mpls))通过http代理、顺序http请求以及网络级业务控制进行分配。具体地,可以使用协议来转发请求,此协议允许候选服务器基于其本地缓存许可算法来接受或拒绝请求,稍后将对此进行详细讨论。
90.在通过服务器池306来促进对对象的请求的分配时,调度器304可以将请求发送到候选服务器的有序列表中的第一个候选服务器。具体而言,在图3所示的示例环境300中,调度器304可以将请求发送到第三服务器s3。
91.服务器池306中的接收对对象的请求的每个候选服务器可以通过确定是接受还是拒绝请求来促进对对象的请求的分配。如果候选服务器决定接受该请求,则该候选服务器可以将该对象提供给客户端302。随后,如果该候选服务器接受该请求,则该候选服务器可以避免将该请求转发到另一个候选服务器。或者,如果候选服务器决定拒绝该请求,则可以将该请求转发到服务器池306中的另一个候选服务器。具体地,如果候选服务器设备拒绝该
请求,则该候选服务器可以将该请求转发给候选服务器的有序列表中的下一个候选服务器。这个过程本身可以重复,直到候选服务器的有序列表中的候选服务器接受该请求为止。在各种实施例中,由于候选服务器的有序列表中的最后一个候选服务器是在对象局部性权重较高的情况下选择的,所以最后一个候选服务器将对象存储在本地。因此,最后一个候选服务器可以提交对对象的请求,从而确保客户端302能够访问该对象。
92.服务器池306中的候选服务器可以基于候选服务器处的所请求对象的流行度特性来确定是否接受请求。具体地,服务器池306中的候选服务器可以基于候选服务器处的所请求对象的流行度特性来确定是否接受对对象的请求。流行度特性包括与在候选服务器处请求对象相关的适用特性。例如,所请求对象的流行度特性可以包括在候选服务器(例如,候选存储节点中的每一个)处接收到的对对象的请求的次数,候选服务器是否接受请求,以及候选服务器是否拒绝请求。可以按节点来维护流行度特性,并且可以按节点来执行是否接受对对象的请求的后续决定。例如,候选服务器可以基于在特定候选服务器处对对象请求的次数来确定是否接受对对象的请求。因此,可以跨服务器以分布式方式来执行是否接受对对象的请求的决定。如稍后将更详细讨论的,跨服务器池306中的候选服务器对对象的复制因此可以跨服务器以分布式方式进行控制。
93.服务器池306中的候选服务器可以使用它们的本地缓存许可策略来确定是否接受对对象的请求。本地缓存许可策略可以例如在候选服务器处包括最顶级请求对象的列表。此外,本地缓存许可策略可以包括用于基于包括所请求对象的对象的流行度特性来控制对所请求对象的缓存访问和缓存存储的适用策略。具体而言,缓存许可策略可以包括允许在候选服务器处缓存流行对象的适用策略,例如,基于对象请求,同时避免缓存不流行的对象。例如,本地缓存许可策略可以通过最少使用(lfu)缓存技术、2q缓存替换策略、lru

k页面替换技术,以及最近最少使用(lrfu)缓存技术来实现。
94.服务器池306中的候选服务器可以按节点来维护本地缓存许可策略。具体地,服务器池306中的候选服务器可以基于在候选服务器处接收到的对对象的请求并且可能基于候选服务器是否接受请求来维护本地缓存许可策略。例如,候选服务器可以接收针对特定对象的一百个请求。随后,候选服务器可以更新其本地缓存许可策略,以允许基于接收到一百个请求来缓存所请求对象。在各种实施例中,服务器池306中的候选服务器可以基于在候选服务器处接收到的对对象的所有请求来维护本地缓存许可策略。
95.如果服务器池306中的候选服务器接受对对象的请求,则它可以促进客户端对对象的访问,例如,将对象提供给客户端302。在提供对对象的访问时,候选服务器可以确定对象是否本地存储在候选服务器处,例如,存储在缓存中。如果候选服务器确定对象存储在本地,则候选服务器可以从本地存储装置向客户端302提供对象。
96.或者,如果候选服务器接受对对象的请求并且确定对象未本地存储在候选服务器处,则候选服务器可以从存储系统中的位置检索对象。随后,候选服务器可以将对象复制到候选服务器的本地存储装置中。例如,候选服务器可以从适用的位置(例如,候选服务器的有序列表中的最后一个候选服务器)检索对象,并将对象复制到候选服务器处的本地存储装置中。在检索对象并将对象复制到候选服务器处的本地存储装置中时,候选服务器可以有效地复制存储系统中的对象。由于候选服务器按节点来决定是否接受对对象的请求并随后检索和复制该对象,因此,可以按节点以分布式方式来控制对象复制。这可以解决先前描
述的以集中式方式来控制存储系统中的对象复制的缺陷。
97.关于图3所示的示例环境300,如前所述,第三服务器s3可以从调度器304接收对对象的请求。具体地,由于第三服务器s3是候选服务器的有序列表中的第一个候选服务器,所以第三服务器s3可以从调度器304接收对对象的请求。进而,第三服务器s3可以确定拒绝对对象的请求。具体地,第三服务器s3可以基于(基于在第三服务器s3处接收到的对对象的请求而维护的)第三服务器s3的本地缓存许可策略来确定拒绝对对象的请求。随后,第三服务器s3可以将对对象的请求转发到候选服务器的有序列表中的下一个候选服务器,即第七服务器s7。
98.第七服务器s7可以接收对对象的请求并确定是否接受该请求。具体地,第七服务器s7可以使用本地缓存许可策略、基于流行度来确定是否接受请求。在图3所示的示例环境300中,第七服务器s7接受请求。随后,第七服务器s7可以确定其本地存储装置中是否有对象。如果对象已经本地存储在第七服务器s7处,则第七服务器s7可以将对象提供给客户端302。或者,如果对象不在第七服务器s7处的本地存储装置中,则第七服务器s7可以对对象进行检索并将对象复制到本地存储装置中,从而有效地复制对象。随后,第七服务器s7可以将对象提供给客户端302。
99.图6示出了基于流行度来控制对象复制的示例方法的流程图。图6所示的方法是作为示例提供的,因为有多种方式来执行该方法。此外,虽然示例方法是用特定的步骤顺序来说明的,但本领域的普通技术人员将理解,图6和图6中所示的模块可以以任何顺序执行,并且可以包括比所示出的模块更少或更多的模块。图6中所示的每个模块表示方法中的一个或多个步骤、过程、方法或例程。
100.在步骤600,调度器304从客户端302接收对对象的请求。调度器304可以被实现为客户端302的一部分。或者,调度器304可以远离客户端302来实现,例如,作为缓存服务器。
101.在步骤602,调度器304识别存储系统中的用于向客户端提供对象的候选存储节点。具体地,调度器304可以通过使用二维一致性散列函数生成候选存储节点的有序列表来识别候选存储节点。更具体地,调度器304可以改变存储节点多样性作为二维一致性散列函数的输入,以便生成候选存储节点的有序列表。
102.在步骤604,根据候选存储节点的有序列表来促进对通过一个或多个候选存储节点的请求的分配,以便基于所请求对象的流行度特性来提交对对象的请求。具体地,调度器304可以向候选存储节点列表中的第一个候选存储节点发送对对象的请求。随后,包括第一个候选存储节点的候选存储节点可以基于候选存储节点是否接受请求,根据候选存储节点的有序列表来顺序发送请求。此外,候选存储节点之一,一旦接受请求,就可以将对象复制到本地存储装置中(如果对象不在本地存储装置中),从而有效地复制存储系统内的对象。因此,可以跨存储节点并按节点以分布式方式来控制对存储系统中的对象的复制。
103.本公开现在转向图7和图8,它们示出了示例网络设备和计算设备,诸如,交换机、路由器、负载平衡器、客户端设备等等。
104.图7示出了计算系统架构700,其中系统的组件使用连接705(诸如,总线)彼此电通信。示例性系统700包括处理单元(cpu或处理器)710和系统连接705,其将包括系统存储器715(诸如,只读存储器(rom)720和随机存取存储器(ram)625)的各种系统组件耦合到处理器710。系统700可以包括高速存储器的缓存712,其与处理器710直接连接、紧邻处理器710
或集成为处理器710的一部分。系统700可以从存储器715和/或存储设备730复制数据到缓存712,以供处理器710快速访问。以此方式,缓存712可以提供性能提升,这避免了处理器710在等待数据时产生延迟。这些和其他模块可以控制或被配置为控制处理器710执行各种动作。也可以使用其他系统存储器715。存储器715可以包括具有不同性能特性的多种不同类型的存储器。处理器710可以包括任何通用处理器和硬件或软件服务,诸如,存储在存储设备730中的服务1 732、服务2 734以及服务3 736,被配置为控制处理器710以及专用处理器,其中软件指令被合并到实际的处理器设计中。处理器710可以是完全独立的计算系统,包含多个核心或处理器、总线、存储器控制器、缓存等。多核心处理器可以是对称的或非对称的。
105.为了使用户能够与计算设备700交互,输入设备745可以表示任何数量的输入机件,诸如,用于语音的麦克风、用于手势或图形输入的触敏屏、键盘、鼠标、运动输入、语音等等。输出设备735也可以是本领域技术人员已知的多种输出机件中的一种或多种。在一些情况下,多模式系统可以使用户能够提供多种类型的输入,以与计算设备700进行通信。通信接口740总体可以支配和管理用户输入和系统输出。对在任何特定硬件布置上的操作没有限制,因此此处的基本特征可以很容易地替换为开发的改进的硬件或固件布置。
106.存储设备730是非易失性存储器,并且可以是硬盘或可以存储计算机可访问的数据的其他类型的计算机可读介质,诸如,磁带、闪存卡、固态存储器设备、数字多功能磁盘、盒式磁带、随机存取存储器(ram)725、只读存储器(rom)720及其混合。
107.存储设备730可以包括用于控制处理器710的服务732、734、736。可以设想其他硬件或软件模块。存储设备730可以连接到系统连接705。一方面,执行特定功能的硬件模块可以包括存储在计算机可读介质中的软件组件,该软件组件与必要的硬件组件(诸如,处理器710、连接705、输出设备735等等)连接,以执行功能。
108.图8示出了适合于执行交换、路由、负载平衡以及其他联网操作的示例网络设备800。网络设备800包括中央处理单元(cpu)804、接口802,以及总线810(例如,pci总线)。当在适当的软件或固件的控制下工作时,cpu 804负责执行分组管理、错误检测,和/或路由功能。cpu 804优选地在包括操作系统和任何适当的应用软件的软件的控制下完成所有这些功能。cpu 804可以包括一个或多个处理器808,诸如,来自intel x86系列微处理器的处理器。在一些情况下,处理器808可以是用于控制网络设备800的操作的专门设计的硬件。在一些情况下,存储器806(例如,非易失性ram、rom等)也形成cpu 804的一部分。然而,有许多不同的方式可以将存储器耦合到系统。
109.接口802通常被提供为模块化接口卡(有时称为“线卡”)。通常,它们控制通过网络发送和接收数据分组,有时还支持与网络设备800一起使用的其他外围设备。可以提供的接口包括以太网接口、帧中继接口、电缆接口、dsl接口、令牌环接口等。此外,可以提供各种超高速接口,诸如,快速令牌环接口、无线接口、以太网接口、千兆以太网接口、atm接口、hssi接口、pos接口、fddi接口、wifi接口、3g/4g/5g蜂窝接口、can bus、lora等。通常,这些接口可以包括适合与适当的介质进行通信的端口。在某些情况下,它们还可以包括独立处理器,并且在某些情况下,还包括易失性ram。独立处理器可以控制诸如分组交换、媒体控制、信号处理、密码处理以及管理之类的通信密集型任务。通过为通信密集型任务提供单独的处理器,这些接口允许主cpu 804有效地执行路由计算、网络诊断、安全功能等。
110.虽然图8所示的系统是本技术的一种特定网络设备,但它绝不是可以在其上实现本技术的唯一网络设备架构。例如,经常使用具有处理通信以及路由计算等的单个处理器的架构。此外,其他类型的接口和介质也可以与网络设备800一起使用。
111.无论网络设备的配置如何,它都可以采用一个或多个存储器或存储器模块(包括存储器806),这些存储器或存储器模块(包括存储器806)被配置为存储用于通用网络操作的程序指令以及本文所述的漫游、路由优化和路由功能的机制。例如,程序指令可以控制操作系统和/或一个或多个应用的操作。一个或多个存储器还可以被配置为存储诸如移动性绑定、注册以及关联表格等之类的表格。存储器806还可以保存各种软件容器和虚拟化的执行环境和数据。
112.网络设备800还可以包括专用集成电路(asic),其可以被配置为执行路由和/或交换操作。asic可以通过总线810与网络设备800中的其他组件进行通信,以交换数据和信号并协调网络设备800的各种类型的操作,诸如,路由、交换和/或数据存储操作。
113.为了解释的清楚起见,在一些情况下,本技术可以被呈现为包括单独的功能块,这些功能块包括包含设备、设备组件、以软件体现的方法中的步骤或例程,或者硬件和软件的组合的功能块。
114.在一些实施例中,计算机可读存储设备、介质和存储器可以包括包含比特流等的电缆或无线信号。然而,当提及时,非暂态计算机可读存储介质明确排除诸如能量、载波信号、电磁波以及信号本身之类的介质。
115.根据上述示例的方法可以使用计算机可执行指令来实现,这些计算机可执行指令从计算机可读介质存储或以其他方式可用。此类指令可以包括,例如,促使或以其他方式配置通用计算机、专用计算机或专用处理设备以执行特定功能或功能组的指令和数据。所使用的部分计算机资源可以通过网络访问。计算机可执行指令可以是,例如,二进制、中间格式指令,诸如,汇编语言、固件或源代码。可用于存储指令、所使用的信息和/或在根据所描述的示例的方法期间创建的信息的计算机可读介质的示例包括磁盘或光盘、闪存、具有非易失性存储器的usb设备、网络化存储设备等等。
116.实现根据这些公开内容的方法的设备可以包括硬件、固件和/或软件,并且可以采用多种形状因数中的任一种。此类形状因数的典型示例包括膝上型电脑、智能手机、小型个人计算机、个人数字助理、机架安装设备、独立设备等。本文描述的功能也可以体现在外围设备或附加卡中。作为进一步的示例,这样的功能也可以在电路板上的不同芯片或在单个设备中执行的不同过程之间实现。
117.指令、用于传送此类指令的介质、用于执行它们的计算资源,以及用于支持此类计算资源的其他结构是用于提供在这些公开内容中描述的功能的装置。
118.尽管使用各种示例和其他信息来说明所附权利要求范围内的各方面,但不应基于此类示例中的特定特征或布置来暗示对权利要求的限制,因为普通技术人员将能够使用这些示例来推导出各种各样的实现方式。此外,虽然一些主题可能已经以特定于结构特征和/或方法步骤的示例的语言进行了描述,但是应当理解,所附权利要求中限定的主题不一定限于这些描述的特征或动作。例如,这样的功能可以不同地分布在不同于本文所标识的那些组件的组件中或在不同于本文所标识的那些组件的组件中执行。相反,所描述的特征和步骤被公开为在所附权利要求范围内的系统的组件和方法的示例。
119.陈述“xxx中的至少一个”的权利要求语言是指一组中的至少一项,并表示此组中的一项或此组中的多项满足权利要求。例如,陈述“a和b中的至少一个”的权利要求语言是指a、b或a和b。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1