一种基于ILP模型的副本选择节点在网络设备上的布局方法与流程

文档序号:16096879发布日期:2018-11-27 23:41阅读:324来源:国知局

本发明属于分布式键值存储领域,更具体地,涉及一种基于ILP模型的副本选择节点在网络设备上的布局方法。



背景技术:

分布式键值存储是在现代Web应用程序的核心组件。考虑到现代Web应用的交互性,降低键值存储的响应延迟十分重要的。由于即便是一个终端用户的请求也会产生成百上千个存储访问,所以键值存储仅仅只是尾延迟较高也可能会对用户感知的延迟产生巨大的影响。

分布式键值存储为了实现高可用性和高可靠性,通常在多台服务器上存储数据副本。一个读请求可以从任意一个副本获取数据。但是由于服务器经常出现性能波动,副本选择会直接影响读请求的响应延迟。考虑到键值存储的工作负载主要以读为主,因此副本选择方案在减少响应延迟方面起着非常重要的作用。

由于可编程网络设备的出现,分布式键值存储系统将原来由客户端执行的副本选择操作交给网络设备执行以提高副本选择算法的有效性。一方面,使用网络设备作为副本选择节点可以提高对服务器状态估计的准确度;另一方面,使用网络设备执行副本选择算法可以降低在选择副本时“羊群效应”发生的概率。其中“羊群行为”指多个RSNodes(Replica Selection Nodes)同时选择一个副本,导致该副本性能降低的情况。

然而现代数据中心的网络拓扑结构非常复杂,而副本选择节点在网络设备上的布局会对副本选择的效果产生很大的影响。如何通过网络设备上的布局副本选择节点来提高副本选择算法的有效性,成为亟需解决的问题。



技术实现要素:

针对现有技术的缺陷,本发明的目的在于解决如何通过网络设备上的布局副本选择节点来提高副本选择算法的有效性,即提高对服务器状态估计的准确度并降低“羊群效应”发生概率的技术问题。

为实现上述目的,本发明实施例提供了一种基于ILP模型的副本选择节点在网络设备上的布局方法,该方法面向位于数据中心中的分布式键值存储系统,其中,数据中心使用基于树结构的多层网络拓扑,该方法包括以下步骤:

S1.按照键值存储请求的来源,将请求划分成不同的流量组;

S2.在各机架顶部交换机的出口采集各流量组的流量统计信息Tik;

S3.根据所述流量统计信息,求解ILP模型得到副本选择节点在网络中的布局,ILP模型表示如下:

优化目标:

约束条件:

约束条件1:

约束条件2:

约束条件3:

约束条件4:

约束条件5:

约束条件6:

其中,

Dj对应运算器oj,Dj=1表示存在请求在运算器oj上执行副本选择操作,Dj=0表示不存在请求在运算器oj上执行副本选择操作;

Pij对应流量组gi和运算器oj,Pij=1表示流量组gi的请求在运算器oj上执行副本选择操作;Pij=0表示流量组gi的请求不在运算器oj上执行副本选择操作;

Rij对应流量组gi和运算器oj,Rij=1表示流量组gi对应的终端主机与其他Pod中的终端主机通信时,运算器oj在其最短网络路径中;Rij=0表示流量组gi对应的终端主机与其他Pod中的终端主机通信时,运算器oj不在其最短网络路径中;

Tik表示流量组gi第k层的流量;

t(x)返回运算器ox或流量组gx的层ID值,流量组gx的层ID值与与其终端主机直接相连的运算器的层ID值相同;

h(i,j)=t(i)-t(j),表示运算器oj和流量组gi对应的终端主机连接的运算器的层ID差值,即跳数;

表示使用运算器oj执行副本选择的流量阈值;

E表示额外跳数总量阈值;

i=1,...,M,j=1,...,N,k=0,1,2,M为流量组的数量,N为运算器的数量。

具体地,步骤S1中流量分组的方式包括:

(1)主机级分组——来自同一个主机的请求作为一个流量组;

(2)机架级分组——来自同一个机架的请求作为一个流量组;

(3)介于主机级和机架级之间分组——来自同一机架中的多个主机的请求作为一个流量组。

具体地,运算器的层ID为运算器与核心交换机层中的任何节点之间的最小连接数。

具体地,根据请求流过最短网络路径的最高层,将流量组的请求分为3类:

(1)2层流量——在相同机架的终端主机间通讯;

(2)1层流量——在相同pod但是不同机架的终端主机间通讯;

(3)0层流量——在不同pod的终端主机间通讯。

具体地,在各机架顶部交换机的出口采集每个流量组中2层流量、1层流量和0层流量的数量。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:

本发明通过将键值存储系统的请求划分到不同的流量组,细粒度的流量组为副本选择提供了更大的灵活性。

本发明通过将布局问题转化为线性整数规划问题,通过求解ILP来确定副本选择节点的布局,让每个副本选择节点可根据更加新近的系统状态选择副本,从而提高副本选择效率,降低分布式键值存储系统的响应延时。

本发明将最小化RSNodes总个数作为优化目标,由于“羊群行为”的发生与RSNode的数量呈正相关,减少RSNode的数量可以更大程度上避免“羊群行为”。

附图说明

图1为本发明提供的数据中心网络拓扑结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

图1为本发明提供的数据中心网络拓扑结构示意图。如图1所示,数据中心使用基于树结构的多层网络拓扑。终端主机被组织在机架中,每个机架包含大约20到40个终端主机。一个机架中的终端主机连接到该机架顶部的ToR交换机(Top of Rack,机架顶部交换机)。ToR交换机连接到多个聚合交换机Ag,以实现更高的稳定性和性能。直接互连的ToR交换机和聚合交换机Ag属于同一个pod,连接到pod中的ToR交换机的终端主机也属于同一个pod。一个聚合交换机连接到多个核心交换机Core。冗余聚合交换机和冗余核心交换机在两个不在同一机架中的终端主机之间建立了多条网络路径。除此之外,还有一个集中的SDN控制器C,所述控制器通过低速链路连接到所有交换机。

执行副本选择操作的一个或一套网络设备为运算器,其中运算器按照数据中心的网络拓扑结构存在于数据中心的网络中,在本发明中,每个ToR交换机、聚合交换机Ag或核心交换机Core均视作一个运算器。

按照键值存储请求的来源,将请求划分成不同的流量组。流量分组的方式包括:

(1)主机级分组——来自同一个主机的请求作为一个流量组;

(2)机架级分组——来自同一个机架的请求作为一个流量组;

(3)介于主机级和机架级之间分组——来自同一机架中的多个主机的请求作为一个流量组。

使用细粒度的流量组为副本选择提供了更大的灵活性。

将运算器的层ID定义为运算器与核心交换机层中的任何节点之间的最小连接数。根据请求流过最短网络路径的最高层,将流量组的请求分为3类:

(1)2层流量——在相同机架的终端主机间通讯;

(2)1层流量——在相同pod但是不同机架的终端主机间通讯;

(3)0层流量——在不同pod的终端主机间通讯。

监视器为ToR交换机的出口处理流水线中的一组匹配操作规则,用于分别统计每个流量组中2层流量、1层流量和0层流量的数量。

每个ToR交换机都有一个由其在网络拓扑中所在的位置决定的来源标记。其中来源标记包括两部分:Pod ID和机架ID。ToR交换机可以通过比较数据包中的来源标记与本地数据包来确定数据包是否来自同一个Pod或同一个机架;属于相同机架则判定为2层流量,属于相同pod但是不同机架判定为1层流量;在不同pod判定为0层流量。

副本选择节点(RSNode,Replica Selection Node)在数据中心网络中的布局优化问题,理论描述如下:

优化目标包括优化目标求1和优化目标2,两者必须同时满足。

优化目标1:最大化RSNode的本地系统状态信息的新近性。

优化目标2:最大限度地减少“羊群行为”的发生。其中“羊群行为”指多个RSNodes同时选择一个副本的情况。

约束条件包括约束条件1-约束条件3,所有约束条件必须同时满足。

约束条件1:每个请求应该只有一个RSNode。

约束条件2:每个RSNode的利用率应该是有限的。

约束条件3:键值存储请求被转发到其对应RSNode所产生的额外跳数的总量应该是有限的。

约束条件1存在是因为副本选择算法通常依赖于一些与副本选择决定相关的指标,例如,服务器的等待请求的数量。因此,为一个请求多次执行副本选择可能会使RSNode使用错误的信息为之后的请求选择副本。此外,为一个请求在多个运算器上执行副本选择会引入不必要的延迟开销。

约束条件2可以根据一个运算器的计算能力限定其工作负载。运算器的高利用率会使请求在进行副本选择时等待更长时间。

约束条件3用于权衡副本选择方法的灵活性和使用网络设备进行副本选择造成的额外网络开销。额外网络开销来源于请求可能需要额外的跳数以到达其相应的RSNode所在的运算器。额外的跳数引入了延迟开销并占用了共享数据中心网络的网络资源。

为了求解副本选择节点在数据中心网络中的布局优化问题,本发明将该布局问题转化为整数线性规划(ILP,Integer Linear Programming)问题,并通过求解ILP问题来确定副本选择节点在数据中心网络中的布局。

二进制矩阵P用于描述流量组的请求是否在运算器上执行副本选择操作。矩阵元素Pij对应流量组gi和运算器oj,Pij=1,表示流量组gi的请求在运算器oj上执行副本选择操作;Pij=0,表示流量组gi的请求不在运算器oj上执行副本选择操作,其中,i=1,...,M,j=1,...,N,M为流量组的数量,N为运算器的数量。

二进制矩阵D用于描述运算器中RSNode的分布情况。矩阵元素Dj对应运算器oj,Dj=1,表示存在请求在运算器oj上执行副本选择操作,Dj=0,表示不存在请求在运算器oj上执行副本选择操作。

关系矩阵R用于描述流量组和运算器之间的关系。Rij对应流量组gi和运算器oj,Rij=1,表示流量组gi对应的终端主机与其他Pod中的终端主机通信时,运算器oj在其最短网络路径中;Rij=0,表示流量组gi对应的终端主机与其他Pod中的终端主机通信时,运算器oj不在其最短网络路径中。R由数据中心的网络拓扑结构确定。

矩阵T用于描述流量组每层的流量。Tik表示流量组gi第k层的流量,k=0,1,2。T由监视器负责采集到的流量组的统计信息确定。

本发明选择在响应离开网络的时收集数据。一方面,当一个请求初次进入网络时,尚无法确定用于服务该请求的副本(副本选择为发生);另一方面,离开网络的请求或者初次进入网络的响应都可能来自于任一流量组。相比之下,离开网络的响应只会属于ToR交换机对应机架包含的流量组。考虑到每个流量组需要单独的匹配操作规则(计数器),对于交换机来说,收集这些数据的开销更大。

监视器根据特殊字段过滤数据包。当键值存储的响应进入ToR交换机的出口管道时,监控器首先根据目标IP确定该响应对应的请求来自于哪个流量组。然后,监控器根据响应包头的来源标记判断流量组的请求的类型,更新该流量组该类型请求的计数器。

在转化为RSNodes在数据中心网络中的布局时,为了应对优化目标1和优化目标2,本发明使用最小化RSNodes总个数作为优化目标。首先,流经一个RSNode的平均流量将会随着RSNode数量的增加而增加。考虑到RSNode通常使用请求及其响应来更新本地信息,平均来说,RSNode可以获得更新近的本地信息。其次,由于“羊群行为”的发生与RSNode的数量呈正相关,减少RSNode的数量可以更大程度上避免“羊群行为”。

为了限制运算器oj的利用率,使用运算器oj执行副本选择的流量应不超过越大,请求在运算器oj中排队时间越长。本发明通过一个常数E来限制额外跳数的总量。E越大,请求转发延时越长。本发明基于在网络中执行副本选择的延时开销确定和E。

在计算额外跳数时,我们考虑请求从客户端出发通过RSNode和直接到达服务器之间的总转发跳数差。其中,客户端和服务器各自对应于一个终端主机。例如,对于2层流量,如果RSNode位于核心交换机层,那么对于一个请求的额外跳数的数量是4。一个请求通过默认网络路径到达服务器将被转发一次,然后转到RSNode将被转发5次。因此,请求的额外跳数是4=5-1。

函数t(x)返回运算器ox/流量组gx的层ID值,流量组gx的层ID值与与其终端主机直接相连的运算器的层ID值相同。函数h(i,j)=t(i)-t(j),表示运算器oj和流量组gi对应的终端主机连接的运算器的层ID差值,即跳数。

在求解ILP问题的过程中,需要确定流量组和运算器之间关系矩阵,对流量组中请求进行分类,以及计算额外跳数。

ILP问题的描述如下:

优化目标:

约束条件:

约束条件1:

约束条件2:

约束条件3:

约束条件4:

约束条件5:

约束条件6:

在ILP问题的约束条件之中,约束条件1表明P,D和R仅包含二进制元素,约束条件2当流量组gi的请求在运算器oj上执行副本选择操作时,避免Dj=0,保证如果一个运算器为任一流量组选择副本,则将该运算器视为RSNode,约束条件3保证流量组gi的RSNode位于流量组gi对应的终端主机与其他Pod中的终端主机通信的最短网络路径,通过在请求到达其RSNode之前禁止请求从高层流向低层以缩小解空间。这种限制有助于避免在层之间形成环路而引入额外的跳数。最后,约束条件4-6分别对应于理论中约束条件1-3。约束条件5表示流经运算器oj的流量是有限的,从而保证每个RSNode的利用率是有限的。除了图1所示的三层拓扑外,我们的算法还可以用于使用多层树形网络拓扑结构的数据中心。

以上,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。

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