為了實現(xiàn)多層流量切分,我們的思路是先實現(xiàn)一種hash算法,這種hash算法的輸入是cookie、隨機值等信息,輸出是單次hash的結(jié)果,并且保證這種hash算法結(jié)果足夠的均勻和隨機,然后將這種hash進(jìn)行變換,擴(kuò)展出多個正交的hash算法。
為了驗證單個hash算法的隨機性和均勻性,我們進(jìn)行了實驗驗證,如下圖所示,每一行表示一個100%的全集,每一列表示從全集中抽取出10%,測試的全集是100w,從下面的測試數(shù)據(jù)來看,每個層中的流量切分結(jié)果是比較均勻和隨機的。
圖1.5 單hash算法均勻性、隨機性驗證實驗數(shù)據(jù)
有了單層hash算法,我們需要將單層hash擴(kuò)展成為多層,這里可以采用的方法很多,本文采用的是移位變換的方法將單層hash擴(kuò)展成為多層hash,多層實驗流量切分的真實環(huán)境測試數(shù)據(jù)如下文所示。
4. 實際數(shù)據(jù)測試
為了驗證其算法的可行性,我們進(jìn)行了實際數(shù)據(jù)測試,測試結(jié)果如下:
表1.2 均勻性驗證數(shù)據(jù)
by yangfangwei&huangjin&yaoshiyu