所谓放量其实就是A/B测试,不过在咱们组内部喜欢叫“放量”。关于放量其实有不少种规则:时间、地区、用户区间、随机放量等。测试
放量只有在大流量的C端项目中才有这个需求,流量小的产品或者公司内部使用的管理系统一般不须要作放量。动画
这里衍生出一个问题“为何大流量C端项目须要作放量?”。网站
以某门户网站为例,假设去年日均PV是二个亿,一年的总收入是30亿人民币。code
那么能够推算出,若是不作任何改动的状况下,今年的收入和去年比不会有太多的波动;可是部门给规定的目标一般要高于去年的收入,因此产品须要作一些事情来增长收入。cdn
通过一系列调研与讨论,最终决定把图中红圈的位置作一个改动,但愿这个位置能够获得更好的商业化效果,提高一些收入。blog
但咱们并不知道这个改动的结果是正面的仍是负面的,若是这个改动上线以后致使了负面效果(用户很讨厌这个改动,疯狂骂咱们),不但没增长收入反而下降了收入,这个后果是很是严重的。开发
因此咱们一般会作一件事就是“放量”,先小规模放10%的量看看效果如何。产品
这里的放量一般又根据不一样的状况分好几种:it
地域放量与时间放量很容易理解,这里主要解释下什么是按用户区间放量。io
假设咱们的产品总共有10亿个用户,放量10%,那么咱们能够选择一个区间,是放给0~1亿
这个区间的用户仍是放给1亿~2亿
这个区间,这个就是用户区间。
固然,这个名字是我随便起的,只是为了朗朗上口。
这里你可能会有一个疑问,为何要按照用户区间放10%的量,直接随机放10%的量不行么?
答案是“也能够”,但随机放量没法知足下列需求。
咱们仍是举个例子,假设图1
的红圈位置通过一系列讨论,如今有两个升级方案,但不肯定哪一个效果好,最终决定将这两个版本都开发出来,而后对比下哪一个效果好就使用哪一个版本。
这时候随机放量就没法知足需求了,可是按用户区间放量能够知足需求。
咱们能够将方案一放量给0~1亿
这个区间的用户,把方案二投放给1亿~2亿
区间的用户。
任何产品都会为用户分配一个ID,假设为用户分配的ID是一个散列值MD5,那么当用户访问咱们的产品时,咱们就能够根据用户的ID来分辨该用户会命中哪一个版本(版本一?版本二?或者是未命中?)。
具体实现方案是,取用户ID的后三位(固然,后两位也行),而后用这个数除以三位的最大值,获得一个百分比。举个例子:
假设个人用户ID为4b3ab369fa40ca4faae404b2f8332b65
,这是一个MD5值,咱们取出后三位b65
,三位16进制的最大数转换成10进制为16^3 = 4096
,因此咱们将b65
转换成10进制后在除以4096
,最终得出的数字为:(b65 = 2917) / 4096 = 0.71
。
上述例子将“方案一”投放给0~1亿
这个区间的人,将“方案二”投放给1亿~2亿
这个区间的人,很显然,当我访问页面时,红圈位置会发现个人数值是0.71
,不在0~0.1
这个区间,也不在0.1~0.2
这个区间,因此我没有命中这一次的小规模放量测试,个人页面上该位置显示的是现有的稳定版。
这样实现的好处是:
相同的放量策略和实现方式能够放到服务端,也能够放到客户端;具体如何放量须要“具体状况,具体分析”。