一种服务器调度方法及装置与流程

文档序号:31044861发布日期:2022-08-06 05:10阅读:119来源:国知局
一种服务器调度方法及装置与流程

1.本技术主要涉及视频播放领域,特别涉及一种服务器调度方法及装置。


背景技术:

2.随着优化视频播放体验的需求日益增长,对视频下载时间的优化非常关键。例如,在线视频的播放过程中,为了加载视频,经常需要将较长的视频分为多个片段,每次下载一个片段到缓存中,保证播放顺畅不卡顿。对于单次的下载过程,需要基于tcp(transmission control protocol,传输控制协议)连接获得传递数据。在提供tcp连接的服务器状态良好的情况下,下载完一个片段之后可以复用下载该片段时已经建立的tcp连接,继续下载后续的片段,这样能省去再次建立连接的时间,从而减少播放视频期间,下载多个片段的时间,优化播放视频的体验。
3.目前的视频播放中,往往采用为同一个客户端ip分配同一个服务器的方法,某个客户端ip的播放请求均由固定的服务器处理。然而,这种方法可能会造成各个服务器之间负载不均衡的问题;而且在某台服务器发生故障时,可能会产生某些客户端无法播放所有视频的风险。


技术实现要素:

4.有鉴于此,本技术提供了一种服务器调度方法及装置,降低了播放视频中tcp连接中断的可能性,避免服务器的负载不均衡,降低了单台服务器故障对客户端的影响。
5.一方面,本技术实施例提供了一种服务器调度方法,所述方法包括:
6.接收客户端发送的调度请求,所述调度请求用于请求为所述客户端分配与其建立传输控制协议tcp连接的服务器,所述调度请求包括所述客户端的ip和所述客户端播放的视频id;
7.根据所述客户端的ip和所述视频id,,确定为所述客户端分配的目标服务器。
8.可选的,所述根据所述客户端的ip和所述视频id,确定为所述客户端分配的目标服务器,包括:
9.根据所述客户端的ip和所述视频id,确定目标哈希值;
10.根据所述目标哈希值,确定为所述客户端分配的目标服务器。
11.可选的,所述根据所述目标哈希值,确定为所述客户端分配的目标服务器,包括:
12.根据所述目标哈希值,确定为所述客户端分配的目标机房;
13.在所述目标机房的服务器中,根据所述目标哈希值,确定为所述客户端分配的所述目标服务器。
14.可选的,所述根据所述目标哈希值,确定为所述客户端分配的目标机房,包括:
15.根据所述调度请求,从预设的机房的集合中,确定匹配所述调度请求的可用机房子集;
16.获取预先确定的机房虚拟节点的哈希值列表,所述机房虚拟节点的哈希值列表保
存有所述机房虚拟节点和所述机房虚拟节点的哈希值的对应关系,所述机房虚拟节点是由所述机房的集合中每个机房的物理节点复制而来的节点;
17.在所述机房虚拟节点的哈希值列表中查找目标机房虚拟节点,所述目标机房虚拟节点对应的机房属于所述可用机房子集;
18.确定目标虚拟机房节点对应的机房为所述目标机房。
19.可选的,所述机房虚拟节点的哈希值列表中的各机房虚拟节点按照所述机房虚拟节点的哈希值从小到大顺序排列;
20.所述在所述机房虚拟节点的哈希值列表中查找目标机房虚拟节点包括:
21.在所述机房虚拟节点的哈希值列表中查找到排在第k位的机房虚拟节点,第k位的机房虚拟节点对应的哈希值小于所述目标哈希值,并且第k+1位的机房虚拟节点对应的哈希值大于所述目标哈希值;
22.确定所述第k位的机房虚拟节点对应的机房是否属于所述可用机房子集;
23.若属于,则将所述第k位的机房虚拟节点作为所述目标机房虚拟节点;
24.若不属于,则在所述机房虚拟节点的哈希值列表中查找排在所述第k位的机房虚拟节点之后、且排序最靠前的机房虚拟节点作为所述目标机房虚拟节点,所述目标机房虚拟节点对应的机房属于所述可用机房子集。
25.可选的,所述机房虚拟节点的哈希值列表是根据以下方式确定的:
26.根据所述机房的集合中每个机房的负载能力,确定所述机房的集合中每个机房的负载权重;
27.根据所述负载权重,为每个所述机房分配机房虚拟节点,所述机房的机房虚拟节点的个数和所述机房的负载权重成正比,每个所述机房至少分配两个机房虚拟节点;
28.分别计算所述机房虚拟节点的哈希值,并根据所述机房虚拟节点和所述机房虚拟节点的哈希值的对应关系,得到所述机房虚拟节点的哈希值列表。
29.可选的,所述根据所述调度请求,从机房的集合中,确定匹配所述调度请求的可用机房子集,包括:
30.根据所述调度请求携带的信息和所述调度请求的特点中的至少一种,从机房的集合中,筛选出匹配所述调度请求的可用机房子集,所述调度请求的特点用于表征所述调度请求所使用的协议。
31.可选的,所述在所述目标机房的服务器中,根据所述目标哈希值,确定为所述客户端分配的所述目标服务器,包括:
32.获取预先确定的服务器虚拟节点的哈希值列表,所述服务器虚拟节点的哈希值列表保存有所述服务器虚拟节点和所述服务器虚拟节点的哈希值的对应关系,所述服务器虚拟节点是由所述目标机房的服务器的物理节点复制而来的节点;
33.在所述服务器虚拟节点的哈希值列表中查找目标服务器虚拟节点;
34.确定目标服务器虚拟节点对应的服务器为所述目标服务器。
35.可选的,所述服务器虚拟节点的哈希值列表中的各服务器虚拟节点按照所述服务器虚拟节点的哈希值从小到大顺序排列;
36.所述在所述服务器虚拟节点的哈希值列表中查找目标服务器虚拟节点包括:
37.在所述服务器虚拟节点的哈希值列表中查找到排在第p位的服务器虚拟节点,第p
位的服务器虚拟节点对应的哈希值小于所述目标哈希值,并且第p+1位的服务器虚拟节点对应的哈希值大于所述目标哈希值;
38.将所述第p位的服务器虚拟节点作为所述目标服务器虚拟节点。
39.可选的,所述服务器虚拟节点的哈希值列表是根据以下方式确定的:
40.为每个所述服务器分配至少两个服务器虚拟节点,且为每个所述服务器分配的服务器虚拟节点个数相等;
41.分别计算所述服务器虚拟节点的哈希值,并根据所述服务器虚拟节点和所述服务器虚拟节点的哈希值的对应关系,得到所述服务器虚拟节点的哈希值列表。
42.另一方面,本技术实施例还提供了一种服务器调度装置,所述装置包括:
43.调度请求接收单元,用于接收客户端发送的调度请求,所述调度请求用于请求为所述客户端分配与其建立传输控制协议tcp连接的服务器,所述调度请求包括所述客户端的ip和所述客户端播放的视频id;
44.目标服务器分配单元,用于根据所述客户端的ip和所述视频id,确定为所述客户端分配的目标服务器。
45.由此可见,本技术实施例有如下有益效果:
46.本技术提供了一种视频播放的服务器调度方法,接收客户端发送的调度请求,调度请求用于请求为客户端分配与其建立传输控制协议tcp连接的服务器,调度请求包括客户端的ip和客户端播放的视频id;根据客户端的ip和视频id,确定为客户端分配的目标服务器。本技术通过根据客户端ip和视频id,确定和客户端建立tcp连接的服务器,一方面,尽可能将客户端不同视频的播放请求调度到不同的服务器上,避免将同一客户端ip的所有播放请求均分配给同一服务器,有利于各个服务器占的负载均衡,降低了因某台服务器故障造成某些用户无法播放所有视频的风险;另一方面,同一客户端ip在播放同一视频id的视频时,尽可能连接到同一服务器上,保证在播放同一视频过程中tcp连接不中断。
附图说明
47.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
48.图1为本技术实施例提供的一种服务器调度方法流程图;
49.图2为本技术实施例提供的一种服务器调度装置示意图。
具体实施方式
50.为使本技术的上述目的、特征和优点能够更加明显易懂,下面结合附图对本技术的具体实施方式做详细的说明。
51.在下面的描述中阐述了很多具体细节以便于充分理解本技术,但是本技术还可以采用其它不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本技术内涵的情况下做类似推广,因此本技术不受下面公开的具体实施例的限制。
52.在线视频的播放过程中,一方面,为了节约视频片段的加载时间,需要保持tcp连
接不断,从而可以省去再次建立tcp连接的时间;另一方面,对于cdn(content delivery network,内容分发网络)来说,还需要兼顾各个服务器的负载问题。目前,一种常见的方法是为同一个客户端ip固定分配同一个服务器。这种方法可能会造成各个服务器之间负载不均衡的问题;而且在某台服务器发生故障时,可能会产生某些客户端无法播放所有视频的风险。
53.为解决上述问题,本技术提供了一种服务器调度方法及装置,通过根据客户端ip和视频id,确定和客户端建立tcp连接的服务器,降低了播放视频中tcp连接中断的可能性,并且有利于避免服务器的负载不均衡,减小了单台服务器故障对客户端的影响。
54.为了便于理解,下面结合附图对本技术实施例提供的一种服务器调度方法及装置进行详细的说明。
55.参考图1所示,为本技术实施例提供的一种服务器调度方法流程图,该方法可以包括以下步骤:
56.s101:接收客户端发送的调度请求。
57.其中,所述调度请求用于请求为所述客户端分配与其建立传输控制协议tcp连接的服务器,所述调度请求包括所述客户端的ip和所述客户端播放的视频id。
58.本技术实施例中,客户端发送的调度请求用于请求为客户端分配与其建立tcp连接的服务器。客户端在线播放视频是基于客户端和服务器之间的tcp连接进行的。客户端通过和服务器之间的tcp连接,将视频下载到缓存中,保证视频的流畅播放。
59.s102:根据所述客户端的ip和所述视频id,确定为所述客户端分配的目标服务器。
60.一种可能的实现方式中,所述根据所述客户端的ip和所述视频id,确定为所述客户端分配的目标服务器,包括:
61.根据所述客户端的ip和所述视频id,确定目标哈希值;
62.根据所述目标哈希值,确定为所述客户端分配的目标服务器。
63.本技术实施例中,根据客户端的ip和视频id确定目标哈希值,能够使得不同调度请求中,客户端ip一致,且视频id一致时,确定出相同的目标哈希值,从而能够为客户端分配到同一台服务器,即在同一客户端ip播放同一视频时,可以连接到同一服务器上。
64.具体地,可以对客户端的ip和视频id进行四则运算或其他的运算方式,得到一个值并计算其哈希值,作为目标哈希值。
65.一种可能的实现方式中,所述根据所述客户端的ip和所述视频id,确定目标哈希值,包括:
66.根据所述客户端的ip和所述视频id之和,计算所述和的哈希值作为所述目标哈希值。
67.本技术实施例中,一种可选的计算目标哈希值的算法为crc32(acyclic redundancy check 32,32位循环冗余校验)。
68.具体地,可将客户端的ip表示为client_ip,视频id表示为tv_id,目标哈希值记为h,则h=crc32(client_ip+tv_id)。
69.s103:根据所述目标哈希值,确定为所述客户端分配的目标服务器。
70.本技术实施例中,对于不同调度请求,当客户端的ip一致且视频id一致时,目标哈希值相同,因此根据目标哈希值,确定为客户端分配的目标服务器,能够实现在客户端的ip
一致且视频id一致时,为客户端分配同一服务器。一方面,在同一客户端播放同一视频时调度到同一服务器,可以避免播放视频的过程中tcp连接的中断,节约重新建立tcp连接的时间;另一方面,采取根据客户端的ip和视频id调度服务器,而不是将同一客户端调度到固定的服务器的方式,将负载压力分散到多个服务器上,避免各个服务器之间负载不均衡,同时也降低了因单台服务器故障造成客户端无法观看所有视频的风险。
71.一种可能的实现方式中,所述根据所述目标哈希值,确定为所述客户端分配的目标服务器,包括:
72.根据所述目标哈希值,确定为所述客户端分配的目标机房;
73.在所述目标机房的服务器中,根据所述目标哈希值,确定为所述客户端分配的所述目标服务器。
74.本技术实施例中,为客户端分配目标服务器可以分为两步,首先选择目标机房,然后在目标机房中,选择目标服务器。具体地,在一个区域中可能包括多个机房,在一个机房中可能包括多个服务器,在多个机房中选取目标机房和在目标机房的多个服务器中选取目标服务器,都是根据目标哈希值进行选取的。
75.一种可能的实现方式中,所述根据所述目标哈希值,确定为所述客户端分配的目标机房,包括:
76.根据所述调度请求,从预设的机房的集合中,确定匹配所述调度请求的可用机房子集;
77.获取预先确定的机房虚拟节点的哈希值列表,所述机房虚拟节点的哈希值列表保存有所述机房虚拟节点和所述机房虚拟节点的哈希值的对应关系,所述机房虚拟节点是由所述机房的集合中每个机房的物理节点复制而来的节点;;
78.在所述机房虚拟节点的哈希值列表中查找目标机房虚拟节点,所述目标虚拟机房节点对应的机房属于所述可用机房子集;
79.确定目标虚拟机房节点对应的机房为所述目标机房。
80.本技术实施例中,在确定为客户端分配的目标机房时,对于不同的调度请求,可能存在针对目标机房的不同约束条件。为了匹配客户端的调度请求,需要对机房进行筛选,即从机房的集合中,确定匹配调度请求的可用机房子集。
81.具体地,若机房的集合中机房的总数为n,则将机房的集合中的各个机房记为v1,v2,
……
vn,则在{v1,v2,
……
,vn}中,确定匹配调度请求的可用机房子集t,
82.一种可能的实现方式中,所述根据所述调度请求,从机房的集合中,确定匹配所述调度请求的可用机房子集,包括:
83.根据所述调度请求携带的信息和所述调度请求的特点中的至少一种,从机房的集合中,筛选出匹配所述调度请求的可用机房子集,所述调度请求的特点用于表征所述调度请求所使用的协议。
84.其中,调度请求携带的信息可以包括调度请求中的参数,如主机标识、用户代理等;调度请求的特点可以包括调度请求采用的传输协议等。
85.具体地,调度请求携带的信息可以包括免流参数;调度请求的特点可以包括https
(hyper text transfer protocol over secure socket layer,超文本传输安全协议)请求,等等。调度请求的约束条件可以是调度请求携带的信息和调度请求的特点的至少一种,用于从机房的集合中确定出可用机房子集。例如,在调度请求包括免流参数时,可以将支持免流播放的机房的集合确定为可用机房子集;在调度请求为https请求时,可以将支持https请求的机房确定为可用机房子集;在调度请求包括免流参数且调度请求为https请求时,可以将支持免流播放且支持https请求的机房确定为可用机房子集。
86.在选取目标机房中,由于不同的机房的负载能力可能不同,需要进行恰当的分配,使得机房的实际负载水平和预期负载水平尽可能一致。本技术实施例中,为机房的集合中的每个机房配置有虚拟节点,即机房虚拟节点。为每个机房配置多个机房虚拟节点,能够避免机房的实际负载和机房的预期负载相差过大,从而有利于各个服务器之间的负载均衡。
87.一种可能的实现方式中,所述机房虚拟节点的哈希值列表是根据以下方式确定的:
88.根据所述机房的集合中每个机房的负载能力,确定所述机房的集合中每个机房的负载权重;
89.根据所述负载权重,为每个所述机房分配机房虚拟节点,所述机房的机房虚拟节点的个数和所述机房的负载权重成正比,每个所述机房至少分配两个机房虚拟节点;
90.分别计算所述机房虚拟节点的哈希值,并根据所述机房虚拟节点和所述机房虚拟节点的哈希值的对应关系,得到所述机房虚拟节点的哈希值列表。
91.本技术实施例中,为每个机房分配的机房虚拟节点的个数是由机房的负载权重确定的,机房的负载权重则由机房的负载能力确定。机房的负载能力表征的是机房可承受的预期负载,具体地,机房的负载能力可以由机房的服务器数量等确定。
92.具体地,若机房的集合中机房的总数为n,则将机房的集合中的各个机房记为v1,v2,
……
vn,各个机房的负载权重记为w1,w2,
……
wn。为每个机房分配机房虚拟节点时,机房虚拟节点的个数和机房的负载权重成正比,且每个机房至少分配两个虚拟节点,即,为每个机房按照负载权重,分配相同倍数的机房虚拟节点,这一倍数为机房虚拟节点的基数,记为a。一种可能的实现方式中,机房虚拟节点的数量应该保持在适当的范围内,一方面,避免机房虚拟节点的数量过少,导致每个机房的实际负载水平和预期负载水平不一致的问题;另一方面,避免机房虚拟节点的数量过多,导致布置过多机房虚拟节点影响时间、空间复杂度的问题。
93.对于机房vq(q∈[1,n],q是整数),对应的负载权重为wq,分配的机房虚拟节点个数为a
×
wq,其中a
×
wq≥2。对于机房集合中的所有机房,令机房虚拟节点的总数为n,则
[0094]
本技术实施例中,分别计算机房虚拟节点的哈希值,一种可以采取的算法为crc32。需要说明的是,计算机房虚拟节点时采取的哈希值算法和计算目标哈希值时采取的哈希值算法应该保持一致。
[0095]
具体地,对于机房虚拟节点i,将机房虚拟节点的哈希值记为c[i],则c[i]=crc32(vi),i=1,2
……
n,其中vi可以为机房虚拟节点i的虚拟地址。根据机房虚拟节点i和机房虚拟节点的哈希值c[i]的对应关系,得到n对配对(vi,c[i]),i=1,2
……
n,由n对配对组成
的列表即为机房虚拟节点的哈希值列表。
[0096]
本技术实施例中,受限于前文所述的各种约束条件,不同的调度请求匹配的可用机房子集可能不同。一般的一致性哈希方法,将机房虚拟节点以二叉平衡查找树等查找树的结构进行组织,采用查找树查找目标机房虚拟节点,适用于可用机房子集不变时的查找;而在可用机房子集频繁发生更改时,为了使查找树上的机房虚拟节点与可用机房子集的机房虚拟节点相匹配,需要频繁地对查找树进行修改,这种实现的时间复杂度较高,查找的效率和性能都较低。
[0097]
为克服这一困难,本技术实施例中,机房虚拟节点的哈希值列表中的各机房虚拟节点可以是根据机房虚拟节点的哈希值的大小顺序排列的;采用预先确定顺序列表的方式代替查找树,在查找目标机房虚拟节点时无需对查找树进行修改,提高了查找效率,时间复杂度较低,性能较高。具体地,机房虚拟节点的哈希值列表的各机房虚拟节点可以按照所述机房虚拟节点的哈希值从小到大顺序排列,也可以按照所述机房虚拟节点的哈希值从大到小顺序排列。
[0098]
一种可能的实现方式中,所述机房虚拟节点的哈希值列表中的各机房虚拟节点按照所述机房虚拟节点的哈希值从小到大顺序排列;
[0099]
所述在所述机房虚拟节点的哈希值列表中查找目标机房虚拟节点包括:
[0100]
在所述机房虚拟节点的哈希值列表中查找到排在第k位的机房虚拟节点,第k位的机房虚拟节点对应的哈希值小于所述目标哈希值,并且第k+1位的机房虚拟节点对应的哈希值大于所述目标哈希值;
[0101]
确定所述第k位的机房虚拟节点对应的机房是否属于所述可用机房子集;
[0102]
若属于,则将所述第k位的机房虚拟节点作为所述目标机房虚拟节点;
[0103]
若不属于,则在所述机房虚拟节点的哈希值列表中查找排在所述第k位的机房虚拟节点之后、且排序最靠前的机房虚拟节点作为所述目标机房虚拟节点,所述目标机房虚拟节点对应的机房属于所述可用机房子集。
[0104]
本技术实施例中,具体地,可以将(vi,c[i]),i=1,2
……
n按照c[i]从小到大排序,得到列表v
list
=[(v_j1,c[j1]),(v_j2,c[j2]),
……
(v_jn,c[jn])],其中j1,j2,
……jn
为集合{1,2,
……
n}中两两不相同的序号,且c[j1]<c[j2]<
……
<c[jn]。
[0105]
具体地,在列表v
list
中查找到排在第k位的机房虚拟节点和机房虚拟节点的哈希值的配对和排在第k+1位的机房虚拟节点和机房虚拟节点的哈希值的配对其中c[jk]<h<c[j
k+1
]。再确定是否属于可用机房子集t,若则将作为目标虚拟节点;
[0106]
若则逐一递增k的值,直到为止,即查找到排在所述第k位的机房虚拟节点之后、且排序最靠前的属于可用机房子集t的机房虚拟节点作为所述目标机房虚拟节点。
[0107]
另一种可能的实现方式中,所述机房虚拟节点的哈希值列表中的各机房虚拟节点按照所述机房虚拟节点的哈希值从大到小顺序排列;
[0108]
所述在所述机房虚拟节点的哈希值列表中查找目标机房虚拟节点包括:
[0109]
在所述机房虚拟节点的哈希值列表中查找到排在第k位的机房虚拟节点,第k位的机房虚拟节点对应的哈希值大于所述目标哈希值,并且第k+1位的机房虚拟节点对应的哈希值小于所述目标哈希值;
[0110]
确定所述第k位的机房虚拟节点对应的机房是否属于所述可用机房子集;
[0111]
若属于,则将所述第k位的机房虚拟节点作为所述目标机房虚拟节点;
[0112]
若不属于,则在所述机房虚拟节点的哈希值列表中查找排在所述第k位的机房虚拟节点之后、且排序最靠前的机房虚拟节点作为所述目标机房虚拟节点,所述目标机房虚拟节点对应的机房属于所述可用机房子集。
[0113]
机房虚拟节点的哈希值列表中的各机房虚拟节点按照机房虚拟节点的哈希值从大到小顺序排列的具体实现方式与按照从小到大顺序排列的具体实现方式类似,在此不再赘述。
[0114]
一种可能的实现方式中,所述在所述目标机房的服务器中,根据所述目标哈希值,确定为所述客户端分配的所述目标服务器,包括:
[0115]
获取预先确定的服务器虚拟节点的哈希值列表,所述服务器虚拟节点的哈希值列表保存有所述服务器虚拟节点和所述服务器虚拟节点的哈希值的对应关系,所述服务器虚拟节点是由所述目标机房的服务器的物理节点复制而来的节点;
[0116]
在所述服务器虚拟节点的哈希值列表中查找目标服务器虚拟节点;
[0117]
确定目标服务器虚拟节点对应的服务器为所述目标服务器。
[0118]
本技术实施例中,在选取目标机房之后,再在目标机房中确定目标服务器。一般来说,同一个机房中的服务器能够匹配的调度请求的种类是相同的,因此匹配到目标机房之后,不需要再确定目标机房中的服务器是否匹配调度请求。
[0119]
本技术实施例中,为服务器分配服务器虚拟节点的原因和为机房分配机房虚拟节点的原因是类似的。
[0120]
为了使得各个服务器之间的负载尽可能均衡,本实施例中为目标机房中的每个服务器配置有虚拟节点,即服务器虚拟节点。为服务器配置多个服务器虚拟节点,能够避免各个服务器之间负载不均衡的问题。
[0121]
一种可能的实现方式中,所述服务器虚拟节点的哈希值列表是根据以下方式确定的:
[0122]
为每个所述服务器分配至少两个服务器虚拟节点,且为每个所述服务器分配的服务器虚拟节点个数相等;
[0123]
分别计算所述服务器虚拟节点的哈希值,并根据所述服务器虚拟节点和所述服务器虚拟节点的哈希值的对应关系,得到所述服务器虚拟节点的哈希值列表。
[0124]
本技术实施例中,若目标机房中服务器的总数为m,则各个服务器记为s1,s2,
……
,sm。若为每个服务器分配的服务器虚拟节点个数均为b,其中b≥2。对于目标机房中的所有服务器虚拟节点,令目标机房中服务器虚拟节点的总数为m,则m=b
×
m。
[0125]
本技术实施例中,分别计算服务器虚拟节点的哈希值,一种可以采取的算法为crc32。需要说明的是,计算服务器虚拟节点时采取的哈希值算法和计算目标哈希值时采取的哈希值算法应该保持一致。
[0126]
具体地,对于服务器虚拟节点l,将服务器虚拟节点的哈希值记为g[l],则g[l]=
crc32(s
l
),l=1,2
……
m,其中s
l
可以为服务器虚拟节点l的虚拟地址。根据服务器虚拟节点l和服务器虚拟节点的哈希值g[l]的对应关系,得到m对配对(s
l
,g[l]),l=1,2
……
m,由m对配对组成的列表即为服务器虚拟节点的哈希值列表。
[0127]
本技术实施例中,为了提高查找目标服务器虚拟节点的效率,服务器虚拟节点的哈希值列表中的各服务器虚拟节点可以是按照服务器虚拟节点的哈希值的大小顺序排列的。具体地,服务器虚拟节点的哈希值列表中的各服务器虚拟节点可以按照服务器虚拟节点的哈希值从小到大顺序排列,也可以按照服务器虚拟节点的哈希值从大到小顺序排列。
[0128]
一种可能的实现方式中,所述服务器虚拟节点的哈希值列表中的各服务器虚拟节点按照所述服务器虚拟节点的哈希值从小到大顺序排列;
[0129]
所述在所述服务器虚拟节点的哈希值列表中查找目标服务器虚拟节点包括:
[0130]
在所述服务器虚拟节点的哈希值列表中查找到排在第p位的服务器虚拟节点,第p位的服务器虚拟节点对应的哈希值小于所述目标哈希值,并且第p+1位的服务器虚拟节点对应的哈希值大于所述目标哈希值;
[0131]
将所述第p位的服务器虚拟节点作为所述目标服务器虚拟节点。
[0132]
本技术实施例中,具体地,可以将(s
l
,g[l]),l=1,2
……
m按照g[l]从小到大排序,得到列表s
list
=[(s_f1,g[f1]),(s_f2,g[f2]),
……
(s_fm,g[fm])],其中f1,f2,
……fm
为集合{1,2,
……
m}中两两不相同的序号,且g[f1]<g[f2]<
……
<g[fm]。
[0133]
具体地,在列表s
list
中查找到排在第p位的服务器虚拟节点和服务器虚拟节点的哈希值的配对(s_f
p
,g[f
p
])和排在第p+1位的服务器虚拟节点和服务器虚拟节点的哈希值的配对(s_f
p+1
,g[f
p+1
]),其中g[f
p
]<h<g[f
p+1
]。s_f
p
即为目标服务器虚拟节点。
[0134]
另一种可能的实现方式中,所述服务器虚拟节点的哈希值列表中的各服务器虚拟节点按照所述服务器虚拟节点的哈希值从大到小顺序排列;
[0135]
所述在所述服务器虚拟节点的哈希值列表中查找目标服务器虚拟节点包括:
[0136]
在所述服务器虚拟节点的哈希值列表中查找到排在第p位的服务器虚拟节点,第p位的服务器虚拟节点对应的哈希值大于所述目标哈希值,并且第p+1位的服务器虚拟节点对应的哈希值小于所述目标哈希值;
[0137]
将所述第p位的服务器虚拟节点作为所述目标服务器虚拟节点。
[0138]
服务器虚拟节点的哈希值列表中的各服务器虚拟节点按照服务器虚拟节点的哈希值从大到小顺序排列的具体实现方式与按照从小到大顺序排列的具体实现方式类似,在此不再赘述。
[0139]
本技术实施例提供了一种视频播放的服务器调度方法,接收客户端发送的调度请求,调度请求用于请求为客户端分配与其建立传输控制协议tcp连接的服务器,调度请求包括客户端的ip和客户端播放的视频id;根据客户端的ip和视频id,确定为客户端分配的目标服务器。本技术通过根据客户端ip和视频id,确定和客户端建立tcp连接的服务器,一方面,尽可能将客户端不同视频的播放请求调度到不同的服务器上,避免将同一客户端ip的所有播放请求均分配给同一服务器,有利于各个服务器占的负载均衡,降低了因某台服务器故障造成某些用户无法播放所有视频的风险;另一方面,同一客户端ip在播放同一视频时,尽可能连接到同一服务器上,保证在播放同一视频过程中tcp连接不中断。
[0140]
基于以上服务器调度方法,本技术实施例还提供了一种服务器调度装置200,参照
图2所示,为本技术实施例提供的一种服务器调度装置示意图,所述装置包括:
[0141]
调度请求接收单元201,用于接收客户端发送的调度请求,所述调度请求用于请求为所述客户端分配与其建立传输控制协议tcp连接的服务器,所述调度请求包括所述客户端的ip和所述客户端播放的视频id;
[0142]
目标服务器分配单元202,用于根据所述客户端的ip和所述视频id,确定为所述客户端分配的目标服务器。
[0143]
一种可能的实现方式中,所述目标服务器分配单元具体用于:
[0144]
根据所述客户端的ip和所述视频id,确定目标哈希值;
[0145]
根据所述目标哈希值,确定为所述客户端分配的目标服务器。
[0146]
一种可能的实现方式中,所述目标服务器分配单元包括目标机房分配子单元和目标服务器分配子单元;
[0147]
所述目标机房分配子单元用于根据所述目标哈希值,确定为所述客户端分配的目标机房;
[0148]
所述目标服务器分配子单元用于在所述目标机房的服务器中,根据所述目标哈希值,确定为所述客户端分配的所述目标服务器。
[0149]
一种可能的实现方式中,所述目标机房分配子单元具体用于:
[0150]
根据所述调度请求,从预设的机房的集合中,确定匹配所述调度请求的可用机房子集;
[0151]
获取预先确定的机房虚拟节点的哈希值列表,所述机房虚拟节点的哈希值列表保存有所述机房虚拟节点和所述机房虚拟节点的哈希值的对应关系,所述机房虚拟节点是由所述机房的集合中每个机房的物理节点复制而来的节点;
[0152]
在所述机房虚拟节点的哈希值列表中查找目标机房虚拟节点,所述目标机房虚拟节点对应的机房属于所述可用机房子集;
[0153]
确定目标虚拟机房节点对应的机房为所述目标机房。
[0154]
一种可能的实现方式中,所述机房虚拟节点的哈希值列表中的各机房虚拟节点按照所述机房虚拟节点的哈希值从小到大顺序排列;
[0155]
所述目标机房分配子单元具体用于:在所述机房虚拟节点的哈希值列表
[0156]
中查找到排在第k位的机房虚拟节点,第k位的机房虚拟节点对应的哈希值
[0157]
小于所述目标哈希值,并且第k+1位的机房虚拟节点对应的哈希值大于所述目标哈希值;
[0158]
确定所述第k位的机房虚拟节点对应的机房是否属于所述可用机房子集;
[0159]
若属于,则将所述第k位的机房虚拟节点作为所述目标机房虚拟节点;
[0160]
若不属于,则在所述机房虚拟节点的哈希值列表中查找排在所述第k位的机房虚拟节点之后、且排序最靠前的机房虚拟节点作为所述目标机房虚拟节点,所述目标机房虚拟节点对应的机房属于所述可用机房子集。
[0161]
一种可能的实现方式中,所述机房虚拟节点的哈希值列表是根据以下方式确定的:
[0162]
根据所述机房的集合中每个机房的负载能力,确定所述机房的集合中每个机房的负载权重;
[0163]
根据所述负载权重,为每个所述机房分配机房虚拟节点,所述机房的机房虚拟节点的个数和所述机房的负载权重成正比,每个所述机房至少分配两个机房虚拟节点;
[0164]
分别计算所述机房虚拟节点的哈希值,并根据所述机房虚拟节点和所述机房虚拟节点的哈希值的对应关系,得到所述机房虚拟节点的哈希值列表。
[0165]
一种可能的实现方式中,所述目标机房分配子单元具体用于:根据所述调度请求携带的信息和所述调度请求的特点中的至少一种,从机房的集合中,筛选出匹配所述调度请求的可用机房子集,所述调度请求的特点用于表征所述调度请求所使用的协议。
[0166]
一种可能的实现方式中,所述目标服务器分配子单元具体用于:获取预先确定的服务器虚拟节点的哈希值列表,所述服务器虚拟节点的哈希值列表保存有所述服务器虚拟节点和所述服务器虚拟节点的哈希值的对应关系,所述服务器虚拟节点是由所述目标机房的服务器的物理节点复制而来的节点;
[0167]
在所述服务器虚拟节点的哈希值列表中查找目标服务器虚拟节点;
[0168]
确定目标服务器虚拟节点对应的服务器为所述目标服务器。
[0169]
一种可能的实现方式中,所述服务器虚拟节点的哈希值列表中的各服务器虚拟节点按照所述服务器虚拟节点的哈希值从小到大顺序排列;
[0170]
所述目标服务器分配子单元具体用于:在所述服务器虚拟节点的哈希值列表中查找到排在第p位的服务器虚拟节点,第p位的服务器虚拟节点对应的哈希值小于所述目标哈希值,并且第p+1位的服务器虚拟节点对应的哈希值大于所述目标哈希值;将所述第p位的服务器虚拟节点作为所述目标服务器虚拟节点。
[0171]
一种可能的实现方式中,所述服务器虚拟节点的哈希值列表是根据以下方式确定的:
[0172]
为每个所述服务器分配至少两个服务器虚拟节点,且为每个所述服务器分配的服务器虚拟节点个数相等;
[0173]
分别计算所述服务器虚拟节点的哈希值,并根据所述服务器虚拟节点和所述服务器虚拟节点的哈希值的对应关系,得到所述服务器虚拟节点的哈希值列表。
[0174]
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0175]
应当理解,在本技术中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
[0176]
还需要说明的是,在本文中,诸如目标和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵
盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0177]
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
[0178]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1