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