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

  • 时间:
  • 浏览:2

         有了顶端的想法,亲们如可实现单层流量切分呢?如图1.1所示,亲们按照指定的流量切分最好的辦法 ,将所需要的输入参数先经过一次hash计算,产生结果的均匀性和随机性由hash算法来保证,有了hash产生的结果,流量切分的过程还越来越现在开始英语 英语 ,亲们还需要将hash结果对应到切分对象的全集顶端,实现最好的辦法 是将切分对象全集看作是一有有有有1个区间段,有时候将hash结果对应到区间段顶端,区间的大小是切分的最小粒度决定的,同类,有时候需要最小切分粒度为0.01%,则亲们取舍 的区间段为[0,9999],有了区间段的定义,亲们都需要将hash结果对一有有有有1个数值取模,你这个 数值等于区间段最大值加1,取模前一天的结果都需要唯一的对应到切分对象全集区间顶端,另一有有有有1个亲们就将所有的流量打到了流量切分对象全集顶端。

         理论上,多层流量切分架构的可切分层数是无限的,都需要支持任意多的流量层,有时候,从实现的角度来讲,层数做到无限是没能实现的,有时候,为了保证层和层之间的正交性,亲们需要要为每一层实现一套hash算法,保证帕累托图hash算法的结果是正交的,要实现层数的无限,则需要实现无限多个保证正交的hash算法,hash算法的增多势必会由于正交性的下降,亲们都需要实现有限个正交的hash算法,hash算法的数目是要求都需要满足所有的实验需求的。下面亲们介绍有一种多层流量切分架构的实现最好的辦法 。

         你这个 单层流量切分最好的辦法 是有一种独占式的流量切分最好的辦法 ,一有有有有1个子区间不到供给一有有有有1个实验使用,一有有有有1个请求不到命中一有有有有1个实验,优点是实验之间解藕,不相互影响,缺点是资源有限,流量分配完毕前一天,后续的需求将存在长期的等待时间与饥饿具体情况,你这个 独占式的流量切分最好的辦法 ,显然在实验需求不断增加的具体情况下是删改不到满足的,为了正确处理独占的问题图片,亲们都需要采用多层流量切分最好的辦法 。

本文转自百度技术51CTO博客,原文链接:http://blog.51cto.com/baidutech/1033689,如需转载请自行联系原作者

         为了实现多层流量切分,亲们的思路是先实现有一种hash算法,你这个 hash算法的输入是cookie、随机值等信息,输出是单次hash的结果,有时候保证你这个 hash算法结果足够的均匀和随机,有时候将你这个 hash进行变换,扩展出多个正交的hash算法。

表1.2 均匀性验证数据

         站点新功能有时候是站内新策略开发完毕前一天,在全流量上线前一天要评估新功能有时候新策略的优劣,常用的评估最好的辦法 是A-B测试,做法是在全量中抽样出两份小流量,分别走新策略分支和旧策略分支,通过对比这两份流量下的各指标的差异,亲们都需要评估出新策略的优劣,进而决定新策略是与否全流量。

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

图1.2 流量子区间的划分

by yangfangwei&huangjin&yaoshiyu

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

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

图1.1 单层流量切分架构示意图

         多层流量切分架构都需要将实验流量从50%扩展到50%*n,也有时候每层中的流量亲们都都需要用做于实验对比,一次请求都需要同时命中多个实验,实验流量是复用的,多层流量是满足不同层的实验之间的影响都是均匀、可预估的,开展多层实验的前提是保证你这个 实验间的影响是可接受的,有有些实验是不允许任何复用,同类,展现类的实验,有时候有有有有1个实验该人 指定了一套展现样式模板,而从展现模块的角度来讲一次请求不到展现有一种样式模板,有时候,这里不兼容的实验不到存在同一层中。

         多层流量切分的思想是将单层行态扩展为多层行态,如下图所示,多层之间需要满足正交性,这里多层之间的正交性是指某一层的任何一有有有有1个子区间都需要随机的、均匀的对应到有些层顶端,另一有有有有1个亲们就把一有有有有1个子区间对有些层的影响均匀的分散到整个层顶端。

         上文中提到的抽样是指按照有一种取舍 的随机化最好的辦法 ,对线上流量进行划分。抽样都需要指你这个 划分的最好的辦法 ,也都需要指划分得到的一有有有有1个流量子集。抽样是有一种特殊的小流量,要求对流量的划分需要保证均匀性和随机性,有时候都需要根据需求过滤掉不符合规范的帕累托图,亲们把抽样的过程分为流量切分和流量筛选有有有有1个步骤,流量切分是指把全流量进行均匀的打散,提取出其中固定的流量比例,流量筛选是对流量切分的辅助,筛选过程有时候从切分好的流量中过滤掉不符合规范的帕累托图,本文主要涉及的是流量切分的实现。

         多层流量切分的另一有有有有1个优势是每一层亲们都需要使用不同的切分最好的辦法 进行,另一有有有有1个也极大的雄厚了流量切分的多样性,越来越,还有另一有有有有1个问题图片,每一有有有有1个流量层中不到采用有一种流量切分最好的辦法 ,有时候同一层包含多种切分最好的辦法 的需求又如可正确处理呢?答案是通过层的嵌套来实现,层的嵌套是存在一有有有有1个层中都需要包含高些的层,如下图所示,矩形表示层,圆形表示切分出来的实验流量,其中,1号层包含了2、3、4有有有有1个层,4号层又包含9、10、11有有有有1个层,为了达到同一层内多种流量切分最好的辦法 的目的,亲们需要将该层切分成多个区间,同类,下图中的2号层就被分成了5、6有有有有1个层,有时候这有有有有1个层也需要采用相同的切分最好的辦法 ,有时候这有有有有1个层至少把其父层的流量分成了两帕累托图,因而这两帕累托图的产生最好的辦法 应该是一致的,最后,在5、6层中,亲们又都需要建立有些的层,这有有有有1个层就都需要采用不同的流量切分最好的辦法 了。

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

    有了单层hash算法,亲们需要将单层hash扩展成为多层,这里都需要采用的最好的辦法 很多很多,本文采用的是移位变换的最好的辦法 将单层hash扩展成为多层hash,多层实验流量切分的真实环境测试数据如下文所示。

         做到流量切分的常用的最好的辦法 是单层流量切分,流量切分需要以有一种最好的辦法 进行,即流量切分的打散最好的辦法 ,同类,亲们都需要最好的辦法 流量中的cookie打散,有时候是随机打散等,打散的最好的辦法 不同,切分的对象全集也就不同了,有时候亲们最好的辦法 cookie打散,越来越亲们的切分对象全集有时候所有的cookie,有时候是随机打散,越来越亲们的切分对象全集有时候该站点的所有的流量。

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

         最后,亲们再将区间段按照实验需求细分,划分成若干子区间,用作于实验对比,同类下图所示,将整个50%的区间分为多个子区间,每个子区间使用唯一的编号——sid,作为区间的唯一的标识,sid=1的子区间对应的流量为1%,越来越它的子区间有时候[0,99],同理,sid=2的第六个1%的子区间对应的区间值为[50,199],另一有有有有1个亲们就将一有有有有1个50%的删改区间划分成了若干个子区间,有有有有1个比例相同的子区间就都需要用作于实验策略对比。