会员登录 | 会员注册 | 意见建议 | 网站地图

站长资源综合门户

当前位置:首页 > 站长学院 > 建站经验 > 基于hash计较的多层实验流量切分的实现

基于hash计较的多层实验流量切分的实现

时间:2012-07-13 18:23:38   作者:   来源:   点击:

图1.3 多层流量切分架构示意图

多层流量切分的另外一个优势是每一层我们可使用不合的切分体例进行,这样也极年夜的丰富了流量切分的多样性,那么,还有另外一个问题,每一个流量层中只能采取一种流量切分体例,如果同一层中有多种切分体例的需求又如何解决呢?谜底是通过层的嵌套来实现,层的嵌套是指在一个层中可以包含其他的层,如下图所示,矩形暗示层,圆形暗示切分出来的实验流量,其中,1号层包含了2、3、4三个层,4号层又包含9、10、11三个层,为了达到同一层内多种流量切分体例的目的,我们需要将该层切分成多个区间,例如,下图中的2号层就被分成了5、6两个层,可是这两个层也必须采取相同的切分体例,因为这两个层相当于把其父层的流量分成了两部分,因而这两部分的产生体例应该是一致的,最后,在5、6层中,我们又可以成立其他的层,这两个层便可以采取不合的流量切分体例了。

图1.4 流量切分多层嵌套示意图

理论上,多层流量切分架构的可切分层数是无限的,可以支持任意多的流量层,可是,从实现的角度来讲,层数做到无限是很难实现的,因为,为了包管层和层之间的正交性,我们必须要为每一层实现一套hash算法,包管每种hash算法的成果是正交的,要实现层数的无限,则需要实现无限多个包管正交的hash算法,hash算法的增多势必会致使正交性的下降,我们可以实现有限个正交的hash算法,hash算法的数目是要求可以满足所有的实验需求的。下面我们介绍一种多层流量切分架构的实现体例。

为了实现多层流量切分,我们的思路是先实现一种hash算法,这种hash算法的输入是cookie、随机值等信息,输出是单次hash的成果,并且包管这种hash算法成果足够的平均和随机,然后将这种hash进行变换,扩大出多个正交的hash算法。

为了验证单个hash算法的随机性和平均性,我们进行了实验验证,如下图所示,每一行暗示一个100%的全集,每一列暗示从全集中抽取出10%,测试的全集是100w,从下面的测试数据来看,每个层中的流量切分成果是比较平均和随机的。

图1.5 单hash算法平均性、随机性验证实验数据

有了单层hash算法,我们需要将单层hash扩大成为多层,这里可以采取的体例很多,本文采取的是移位变换的体例将单层hash扩大成为多层hash,多层实验流量切分的真实情况测试数据如下文所示。

4. 实际数据测试

为了验证其算法的可行性,我们进行了实际数据测试,测试成果如下:

表1.2 平均性验证数据

文章来历:百度搜索研发部官方博客

分享到:

网友评论

热门建站经验