網(wǎng)站測(cè)試系統(tǒng)中的用戶流量分配方法及裝置制造方法
【專利摘要】本申請(qǐng)公開了網(wǎng)站測(cè)試系統(tǒng)中的用戶流量分配方法及裝置,所述方法包括:接收到用戶流量后,根據(jù)所述用戶流量對(duì)應(yīng)的訪問(wèn)請(qǐng)求中攜帶的信息,確定所述用戶流量對(duì)應(yīng)的用戶標(biāo)識(shí),以及與所述用戶流量匹配的實(shí)驗(yàn)組;結(jié)合所述匹配的實(shí)驗(yàn)組的標(biāo)識(shí)以及所述用戶標(biāo)識(shí)進(jìn)行取模運(yùn)算,確定所述用戶流量在各個(gè)匹配的實(shí)驗(yàn)組中需進(jìn)入的分桶的標(biāo)識(shí);并且,上一實(shí)驗(yàn)組中進(jìn)入同一分桶的用戶流量平均分配到下一實(shí)驗(yàn)組的各個(gè)分桶中;將所述用戶流量分配到所述匹配的實(shí)驗(yàn)組對(duì)應(yīng)的分桶中。通過(guò)本申請(qǐng),能夠在實(shí)現(xiàn)會(huì)話粘連的同時(shí),降低各實(shí)驗(yàn)組中的實(shí)驗(yàn)對(duì)下層實(shí)驗(yàn)組中各實(shí)驗(yàn)的干擾度。
【專利說(shuō)明】網(wǎng)站測(cè)試系統(tǒng)中的用戶流量分配方法及裝置
【技術(shù)領(lǐng)域】
[0001]本申請(qǐng)涉及網(wǎng)站測(cè)試【技術(shù)領(lǐng)域】,特別是涉及網(wǎng)站測(cè)試系統(tǒng)中的用戶流量分配方法及裝置。
【背景技術(shù)】
[0002]網(wǎng)站在推出一項(xiàng)功能時(shí),一般在全量上線前都需要進(jìn)行算法調(diào)優(yōu)、用戶體驗(yàn)比較、頁(yè)面版本效果比較等實(shí)驗(yàn)。在最初的版本中,通常會(huì)設(shè)計(jì)多種方案,并對(duì)各種方案進(jìn)行測(cè)試,對(duì)比方案調(diào)整前后的用戶行為數(shù)據(jù),判斷哪個(gè)方案更合理、用戶體驗(yàn)更好等等,以此來(lái)不斷優(yōu)化設(shè)計(jì)方案。例如,某網(wǎng)站具有搜索功能,在搜索結(jié)果頁(yè)面中提供了篩選項(xiàng),目的是幫助用戶更快、更準(zhǔn)確找到所需信息。然而,各篩選項(xiàng)應(yīng)該使用怎樣的篩選條件,很大程度上取決于用戶在查找搜索結(jié)果的時(shí)候,更關(guān)注哪些維度的信息。因此,對(duì)于已經(jīng)上線的功能,在最初的版本中,可以多列舉一些篩選項(xiàng),然后通過(guò)用戶行為數(shù)據(jù)進(jìn)行分析,例如,發(fā)現(xiàn)用戶在使用篩選項(xiàng)功能時(shí),使用地區(qū)、排序、單價(jià)、經(jīng)營(yíng)模式等的比例較多,說(shuō)明用戶對(duì)這幾方面篩選需求較大,比較關(guān)注這幾個(gè)維度的信息,因此,通過(guò)優(yōu)化之后,在新的版本中,就可以基于這幾個(gè)維度來(lái)設(shè)置篩選項(xiàng)。
[0003]其中,在測(cè)試的過(guò)程中,需要用到大量的用戶行為數(shù)據(jù)進(jìn)行統(tǒng)計(jì),換言之,需要一定量的用戶流量實(shí)驗(yàn)樣本才能做有效的實(shí)驗(yàn)效果評(píng)估,因此,網(wǎng)站的用戶流量對(duì)于網(wǎng)站的測(cè)試方來(lái)說(shuō)是寶貴的。然而一個(gè)頁(yè)面內(nèi)需要進(jìn)行的測(cè)試一般是多方面的,針對(duì)不同的測(cè)試目的,需要設(shè)計(jì)不同的實(shí)驗(yàn)(所謂實(shí)驗(yàn),就是通過(guò)修改程序執(zhí)行時(shí)的一個(gè)或多個(gè)條件,來(lái)測(cè)試不同情形、版本、功能之間的效果對(duì)比),并且針對(duì)同一測(cè)試目的,一般還需要設(shè)置多個(gè)實(shí)驗(yàn),以便對(duì)比不同的實(shí)驗(yàn)分別獲得的效果。因此,對(duì)于同一個(gè)網(wǎng)頁(yè)來(lái)說(shuō),需要進(jìn)行的實(shí)驗(yàn)數(shù)量往往是非常多的,并且每個(gè)實(shí)驗(yàn)都需要大量的用戶流量。然而,網(wǎng)站單位時(shí)間內(nèi)的用戶流量是有限的,如果要在同樣長(zhǎng)的時(shí)間段內(nèi)做更多的實(shí)驗(yàn),就需要提高用戶流量的利用率。
[0004]現(xiàn)有技術(shù)中,在對(duì)Web頁(yè)面做效果對(duì)比實(shí)驗(yàn)時(shí),采用的是完全隔離的方法,即根據(jù)用戶id或隨機(jī)的方式,將流量分成η份,每份流量可以針對(duì)Web頁(yè)面的任意部分獨(dú)立做一個(gè)實(shí)驗(yàn)。也就是說(shuō),假設(shè)一個(gè)Web頁(yè)面設(shè)計(jì)了 η個(gè)實(shí)驗(yàn),則可以使得每個(gè)實(shí)驗(yàn)對(duì)應(yīng)一個(gè)分桶(對(duì)應(yīng)“流量”的概念),這樣,可以將頁(yè)面流量分配到各個(gè)分桶中,給分桶中的實(shí)驗(yàn)做流量樣本。例如,假設(shè)將頁(yè)面流量分成10份,即分到10個(gè)分桶,I個(gè)基準(zhǔn)桶用于效果對(duì)比不放置實(shí)驗(yàn),9個(gè)測(cè)試分桶中,每個(gè)分桶可放置一個(gè)實(shí)驗(yàn),并假設(shè)每個(gè)實(shí)驗(yàn)需1000萬(wàn)用戶流量樣本,這樣如果該網(wǎng)站每天的用戶流量是1000萬(wàn),則每個(gè)實(shí)驗(yàn)每天得到的用戶流量是100萬(wàn),需要10天時(shí)間來(lái)完成這9個(gè)實(shí)驗(yàn)。
[0005]這種實(shí)驗(yàn)方法的流量利用率很低,因?yàn)槊總€(gè)用戶流量只會(huì)進(jìn)入一個(gè)分桶,只給該分桶內(nèi)的實(shí)驗(yàn)做流量樣本。在總的用戶流量相對(duì)固定的前提下,要想在同樣的時(shí)間段內(nèi)做更多的實(shí)驗(yàn),方法就是讓一個(gè)用戶流量進(jìn)入多個(gè)分桶,能夠給多個(gè)實(shí)驗(yàn)做流量樣本。
[0006]然而,如果讓一個(gè)用戶流量多個(gè)實(shí)驗(yàn)做流量樣本,有很多問(wèn)題是需要解決的。其中一個(gè)問(wèn)題就是干擾問(wèn)題,也就是說(shuō)先進(jìn)入的分桶中實(shí)驗(yàn)可能會(huì)給后進(jìn)入的分桶中的實(shí)驗(yàn)帶來(lái)干擾。例如,假設(shè)某用戶流量先后進(jìn)入分桶2和分桶4,其中,分桶2是用于測(cè)試在使用不同圖片的情況下的效果,而分桶4是用于測(cè)試在使用同一圖片、不同圖片大小的情況下的效果,這樣,在完成分桶4中的實(shí)驗(yàn)之后,就會(huì)無(wú)法確定最終的效果是由于圖片不同引起的,還是由于圖片大小不同引起的,也就是說(shuō),分桶2中的實(shí)驗(yàn)結(jié)果對(duì)分桶4中的實(shí)驗(yàn)結(jié)果造成的干擾??梢?jiàn),需要盡可能的降低某個(gè)實(shí)驗(yàn)受其他實(shí)驗(yàn)干擾的干擾度。
[0007]另一個(gè)問(wèn)題就是會(huì)話粘連問(wèn)題。所謂的會(huì)話粘連,就是用戶短時(shí)間內(nèi)重新刷新頁(yè)面時(shí),刷新后會(huì)產(chǎn)生新的用戶流量,而新的用戶流量進(jìn)入的分桶應(yīng)該還是刷新前那次產(chǎn)生的用戶流量進(jìn)入的分桶,這樣才能使得給用戶展現(xiàn)的頁(yè)面版本、風(fēng)格等保持和上一次看到的一樣。
[0008]現(xiàn)有技術(shù)中的一些解決方案,一般都是僅解決上述某一方面的問(wèn)題,而不考慮另一方面的問(wèn)題。但是,顯然,以上兩個(gè)問(wèn)題都很重要,如果只解決其中一個(gè)方面的問(wèn)題,則仍然會(huì)使得各個(gè)實(shí)驗(yàn)的效果受到影響。因此,如何同時(shí)解決干擾問(wèn)題以及會(huì)話粘連問(wèn)題,是迫切需要本領(lǐng)域技術(shù)人員解決的技術(shù)問(wèn)題。
【發(fā)明內(nèi)容】
[0009]本申請(qǐng)?zhí)峁┝司W(wǎng)站測(cè)試系統(tǒng)中的用戶流量分配方法及裝置,能夠在實(shí)現(xiàn)會(huì)話粘連的同時(shí),降低各實(shí)驗(yàn)組中的實(shí)驗(yàn)對(duì)下層實(shí)驗(yàn)組中各實(shí)驗(yàn)的干擾度。
[0010]本申請(qǐng)?zhí)峁┝巳缦路桨?
[0011]一種網(wǎng)站測(cè)試系統(tǒng)中的用戶流量分配方法,所述網(wǎng)站測(cè)試系統(tǒng)中包括至少兩個(gè)實(shí)驗(yàn)組,每個(gè)實(shí)驗(yàn)組具有唯一的標(biāo)識(shí),每個(gè)實(shí)驗(yàn)組內(nèi)包括位于多個(gè)分桶內(nèi)的多個(gè)實(shí)驗(yàn),每個(gè)分桶具有實(shí)驗(yàn)組內(nèi)唯一的標(biāo)識(shí),不同實(shí)驗(yàn)組的實(shí)驗(yàn)之間相對(duì)獨(dú)立,所述方法包括:
[0012]接收到用戶流量后,根據(jù)所述用戶流量對(duì)應(yīng)的訪問(wèn)請(qǐng)求中攜帶的信息,確定所述用戶流量對(duì)應(yīng)的用戶標(biāo)識(shí),以及與所述用戶流量匹配的實(shí)驗(yàn)組;
[0013]結(jié)合所述匹配的實(shí)驗(yàn)組的標(biāo)識(shí)以及所述用戶標(biāo)識(shí)進(jìn)行取模運(yùn)算,確定所述用戶流量在各個(gè)匹配的實(shí)驗(yàn)組中需進(jìn)入的分桶的標(biāo)識(shí);其中,在同一實(shí)驗(yàn)組中,用戶流量需進(jìn)入的分桶的標(biāo)識(shí)僅由所述用戶標(biāo)識(shí)決定,以便同一用戶的用戶流量對(duì)于同一實(shí)驗(yàn)組而言,需進(jìn)入的分桶的標(biāo)識(shí)是固定的,且上一實(shí)驗(yàn)組中進(jìn)入同一分桶的用戶流量平均分配到下一實(shí)驗(yàn)組的各個(gè)分桶中;
[0014]根據(jù)所述用戶流量在各匹配的實(shí)驗(yàn)組中需進(jìn)入的分桶的標(biāo)識(shí),將所述用戶流量分配到所述匹配的實(shí)驗(yàn)組對(duì)應(yīng)的分桶中。
[0015]一種網(wǎng)站測(cè)試系統(tǒng)中的用戶流量分配裝置,所述網(wǎng)站測(cè)試系統(tǒng)中包括至少兩個(gè)實(shí)驗(yàn)組,每個(gè)實(shí)驗(yàn)組具有唯一的標(biāo)識(shí),每個(gè)實(shí)驗(yàn)組內(nèi)包括位于多個(gè)分桶內(nèi)的多個(gè)實(shí)驗(yàn),每個(gè)分桶具有實(shí)驗(yàn)組內(nèi)唯一的標(biāo)識(shí),不同實(shí)驗(yàn)組的實(shí)驗(yàn)之間相對(duì)獨(dú)立,所述裝置包括:
[0016]接收單元,用于接收到用戶流量后,根據(jù)所述用戶流量對(duì)應(yīng)的訪問(wèn)請(qǐng)求中攜帶的信息,確定所述用戶流量對(duì)應(yīng)的用戶標(biāo)識(shí),以及與所述用戶流量匹配的實(shí)驗(yàn)組;
[0017]分桶標(biāo)識(shí)確定單元,用于結(jié)合所述匹配的實(shí)驗(yàn)組的標(biāo)識(shí)以及所述用戶標(biāo)識(shí)進(jìn)行取模運(yùn)算,確定所述用戶流量在各個(gè)匹配的實(shí)驗(yàn)組中需進(jìn)入的分桶的標(biāo)識(shí);其中,在同一實(shí)驗(yàn)組中,用戶流量需進(jìn)入的分桶的標(biāo)識(shí)僅由所述用戶標(biāo)識(shí)決定,以便同一用戶的用戶流量對(duì)于同一實(shí)驗(yàn)組而言,需進(jìn)入的分桶的標(biāo)識(shí)是固定的,且上一實(shí)驗(yàn)組中進(jìn)入同一分桶的用戶流量平均分配到下一實(shí)驗(yàn)組的各個(gè)分桶中;
[0018]分配單元,用于根據(jù)所述用戶流量在各匹配的實(shí)驗(yàn)組中需進(jìn)入的分桶的標(biāo)識(shí),將所述用戶流量分配到所述匹配的實(shí)驗(yàn)組對(duì)應(yīng)的分桶中。
[0019]根據(jù)本申請(qǐng)?zhí)峁┑木唧w實(shí)施例,本申請(qǐng)公開了以下技術(shù)效果:
[0020]通過(guò)本申請(qǐng)實(shí)施例,可以結(jié)合實(shí)驗(yàn)組的標(biāo)識(shí)以及用戶流量對(duì)應(yīng)的用戶標(biāo)識(shí)進(jìn)行取模運(yùn)算,來(lái)確定用戶流量在各個(gè)實(shí)驗(yàn)組中需進(jìn)入的分桶的標(biāo)識(shí);其中,在同一實(shí)驗(yàn)組中,用戶流量需進(jìn)入的分桶的標(biāo)識(shí)僅由用戶標(biāo)識(shí)決定,以便同一用戶的用戶流量對(duì)于同一實(shí)驗(yàn)組而言,需進(jìn)入的分桶的標(biāo)識(shí)是固定的,這樣可以就可以達(dá)到會(huì)話粘連的目的;同時(shí),根據(jù)取模運(yùn)算,可以是上一實(shí)驗(yàn)組中進(jìn)入同一分桶的用戶流量平均分配到下一實(shí)驗(yàn)組的各個(gè)分桶中,達(dá)到離散分配的目的,降低各實(shí)驗(yàn)組中的實(shí)驗(yàn)對(duì)下層實(shí)驗(yàn)組中各實(shí)驗(yàn)的干擾度,并且同一實(shí)驗(yàn)組中的各實(shí)驗(yàn)受到的干擾度基本相同,因此,可以保證同一實(shí)驗(yàn)組內(nèi)各實(shí)驗(yàn)效果的可比性。
[0021]其中,為了獲得更好的平衡離散效果,還可以將用戶標(biāo)識(shí)、實(shí)驗(yàn)組標(biāo)識(shí)結(jié)合黃金比例質(zhì)數(shù)進(jìn)行哈希運(yùn)算之后,再將以實(shí)驗(yàn)組內(nèi)的分桶數(shù)為模數(shù)進(jìn)行取模運(yùn)算。進(jìn)一步的,還可以首先將實(shí)驗(yàn)組標(biāo)識(shí)加上一個(gè)長(zhǎng)整型數(shù)之后再參與到具體的運(yùn)算中,使得針對(duì)不同的實(shí)驗(yàn)組得到的相加結(jié)果之間的比值趨近于1,這樣也可以獲得更好的離散效果。
[0022]關(guān)于跨越多個(gè)實(shí)驗(yàn)組的關(guān)聯(lián)實(shí)驗(yàn),可以將關(guān)聯(lián)實(shí)驗(yàn)的標(biāo)識(shí)、跨越的實(shí)驗(yàn)組的標(biāo)識(shí)、在各實(shí)驗(yàn)組中關(guān)聯(lián)實(shí)驗(yàn)所在的分桶號(hào)等信息寫入到用戶流量的Cookie中,由于用戶流量在不同的應(yīng)用間流轉(zhuǎn)時(shí),Cookie信息可以隨用戶流量攜帶,因此能夠支持關(guān)聯(lián)實(shí)驗(yàn)跨越的實(shí)驗(yàn)組位于不同的應(yīng)用上的情形。
[0023]當(dāng)然,實(shí)施本申請(qǐng)的任一產(chǎn)品并不一定需要同時(shí)達(dá)到以上所述的所有優(yōu)點(diǎn)。
【專利附圖】
【附圖說(shuō)明】
[0024]為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本申請(qǐng)的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0025]圖1是本申請(qǐng)實(shí)施例提供的按照模塊劃分實(shí)驗(yàn)組的示意圖;
[0026]圖2是本申請(qǐng)實(shí)施例提供的按照模塊及其內(nèi)部的邏輯層次劃分實(shí)驗(yàn)組的示意圖;
[0027]圖3是本申請(qǐng)實(shí)施例中帶條件的實(shí)驗(yàn)的示意圖;
[0028]圖4是本申請(qǐng)實(shí)施例提供的帶條件的實(shí)驗(yàn)比對(duì)方式示意圖;
[0029]圖5是本申請(qǐng)實(shí)施例中跨越多個(gè)實(shí)驗(yàn)組的關(guān)聯(lián)實(shí)驗(yàn)的示意圖;
[0030]圖6是實(shí)驗(yàn)之間的干擾度示意圖;
[0031]圖7是另一實(shí)驗(yàn)之間的干擾度示意圖;
[0032]圖8是本申請(qǐng)實(shí)施例中提供的方法的流程圖;
[0033]圖9是本申請(qǐng)實(shí)施例中提供的裝置的示意圖。
【具體實(shí)施方式】
[0034]下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。
[0035]首先需要說(shuō)明的是,本申請(qǐng)實(shí)施例的目的是,在一個(gè)用戶流量能夠進(jìn)入多個(gè)分桶,給多個(gè)實(shí)驗(yàn)做流量樣本的情況下,能夠盡量降低實(shí)驗(yàn)之間的干擾度,并且能夠?qū)崿F(xiàn)會(huì)話粘連。為了更好地理解本申請(qǐng)實(shí)施例,首先對(duì)一些概念進(jìn)行簡(jiǎn)單的介紹。
[0036]( I)實(shí)驗(yàn)
[0037]實(shí)驗(yàn)是劃分出部分流量,通過(guò)修改程序執(zhí)行時(shí)的一個(gè)或多個(gè)條件,來(lái)測(cè)試不同情形、版本、功能之間的效果對(duì)比。例如,需要對(duì)某Web頁(yè)面中某頁(yè)面元素在被設(shè)置為不同的圖片樣式時(shí)產(chǎn)生的效果進(jìn)行實(shí)驗(yàn),則可以分別在不同的實(shí)驗(yàn)中設(shè)置不同的圖片樣式;例如,實(shí)驗(yàn)I對(duì)應(yīng)圖片樣式I,位于分桶I中,而實(shí)驗(yàn)2對(duì)應(yīng)圖片樣式2,位于分桶2中,則某用戶甲在瀏覽該Web網(wǎng)頁(yè)時(shí),如果其用戶流量進(jìn)入分桶1,則會(huì)按照實(shí)驗(yàn)I的條件對(duì)頁(yè)面的參數(shù)進(jìn)行配置,也即,將該頁(yè)面元素顯示為圖片樣式1,相應(yīng)的,用戶甲在頁(yè)面中看到的該頁(yè)面元素會(huì)按照?qǐng)D片樣式I進(jìn)行顯示;另外,如果還有一個(gè)用戶乙也在瀏覽該Web頁(yè)面,并且該用戶乙的用戶流量被分配到分桶2,則用戶乙在頁(yè)面中看到的該頁(yè)面元素會(huì)按照?qǐng)D片樣式2進(jìn)行顯示。也就是說(shuō),進(jìn)入不同分桶的用戶看到的頁(yè)面顯示效果會(huì)是不一樣的,相應(yīng)的,就可以對(duì)用戶在頁(yè)面中的操作行為進(jìn)行記錄,例如,包括用戶點(diǎn)擊了哪些鏈接、執(zhí)行了何種特定的行為(例如,預(yù)訂了某商品等等),并且還可以在監(jiān)測(cè)到某種特定行為時(shí),追溯該行為是由何引導(dǎo)的,例如,是否點(diǎn)擊了某頁(yè)面元素,如果是,則認(rèn)為該行為是由該頁(yè)面元素引導(dǎo)的,等等??傊?,可以根據(jù)進(jìn)入各個(gè)分桶的用戶流量,對(duì)各種實(shí)驗(yàn)條件下的用戶行為數(shù)據(jù)進(jìn)行分析,進(jìn)而進(jìn)行比對(duì),以便為系統(tǒng)優(yōu)化提供數(shù)據(jù)基礎(chǔ)。
[0038]另外,還可能存在多變量測(cè)試,在多變量測(cè)試中,每個(gè)可以改變的地方稱為“因素”,而每種因素的可能具有的狀態(tài)稱為“水平”。比如,想同時(shí)改變某個(gè)搜索產(chǎn)品的按鈕顏色、排序算法、索引數(shù)據(jù)這3個(gè)地方,那需要一個(gè)3因素的多變量測(cè)試。如果,按鈕的顏色為3種,那“按鈕顏色”這個(gè)因素是3水平的。多變量測(cè)試允許在同一時(shí)間測(cè)試多個(gè)因素處于不同水平時(shí)對(duì)于產(chǎn)品的影響。通過(guò)多變量測(cè)試,可以清楚的看到不同的變化組合對(duì)最終效果的影響。
[0039]例如,如果對(duì)某個(gè)搜索產(chǎn)品進(jìn)行測(cè)試的范圍為:3種按鈕顏色、2種排序算法和2種索引數(shù)據(jù),那么可以進(jìn)行排列組合,產(chǎn)生不同的版本,使得每個(gè)版本對(duì)應(yīng)一種水平的組合,也就是說(shuō),需要構(gòu)造3*2*2=12個(gè)實(shí)驗(yàn)來(lái)參加測(cè)試。接下來(lái)只要確定好每個(gè)實(shí)驗(yàn)的流量分配即可。
[0040](2)實(shí)驗(yàn)組
[0041]從原理上來(lái)看,用戶流量在任意的實(shí)驗(yàn)間都可以復(fù)用,但是,在實(shí)際應(yīng)用中,有些實(shí)驗(yàn)是針對(duì)相同的實(shí)驗(yàn)?zāi)繕?biāo)點(diǎn)設(shè)計(jì)的,例如,兩個(gè)實(shí)驗(yàn)都是為了測(cè)試搜索模塊中篩選項(xiàng)的設(shè)置,對(duì)于這兩個(gè)實(shí)驗(yàn)而言,一個(gè)用戶流量只能進(jìn)入其中一個(gè)實(shí)驗(yàn),因?yàn)橥瑫r(shí)給實(shí)驗(yàn)?zāi)繕?biāo)點(diǎn)相同的多個(gè)實(shí)驗(yàn)做樣本會(huì)毫無(wú)意義,并且根本無(wú)法知曉最終體現(xiàn)的是哪個(gè)實(shí)驗(yàn)的效果。而對(duì)于實(shí)驗(yàn)?zāi)繕?biāo)點(diǎn)不同的實(shí)驗(yàn)來(lái)說(shuō),比如針對(duì)搜索模塊的實(shí)驗(yàn)和針對(duì)推薦模塊的實(shí)驗(yàn),它們之間雖然存在一定干擾度(該概念后續(xù)會(huì)有介紹),但不是完全的干擾關(guān)系,可以進(jìn)行交叉流量的并行實(shí)驗(yàn),也就是可以讓一個(gè)用戶流量先后給這兩個(gè)實(shí)驗(yàn)做流量樣本。
[0042]為此,具體在進(jìn)行交叉流量的實(shí)驗(yàn)之前,首先可以對(duì)各個(gè)實(shí)驗(yàn)進(jìn)行分組,分組的原則是,不同實(shí)驗(yàn)組的實(shí)驗(yàn)之間具有相對(duì)獨(dú)立性。例如,在實(shí)際應(yīng)用中,往往是針對(duì)一個(gè)Web頁(yè)面進(jìn)行一系列的測(cè)試,而該Web頁(yè)面可能存在多個(gè)功能模塊,因此,可以將同一功能模塊下的各個(gè)實(shí)驗(yàn)作為一個(gè)實(shí)驗(yàn)組,換言之,不同功能模塊下的實(shí)驗(yàn)就位于不同的實(shí)驗(yàn)組中。例如,如圖1所示,某Web頁(yè)面中包括搜索模塊、推薦模塊以及廣告模塊這樣三個(gè)功能模塊,則可以根據(jù)各個(gè)實(shí)驗(yàn)分別是針對(duì)哪個(gè)模塊做的,來(lái)劃分為三個(gè)實(shí)驗(yàn)組。每個(gè)實(shí)驗(yàn)組內(nèi)可以包含多個(gè)實(shí)驗(yàn),每個(gè)實(shí)驗(yàn)可以對(duì)應(yīng)一個(gè)分桶(當(dāng)然也可能存在一個(gè)分桶中包括多個(gè)實(shí)驗(yàn)的情況,后續(xù)會(huì)有介紹),用戶訪問(wèn)該Web頁(yè)面時(shí),用戶流量將穿過(guò)每個(gè)模塊的其中一個(gè)分桶,分別為這幾個(gè)分桶中的實(shí)驗(yàn)作為流量樣本進(jìn)行測(cè)試。
[0043]當(dāng)然,一個(gè)頁(yè)面中的功能模塊數(shù)量一般可能就是少數(shù)的幾個(gè),甚至只有一個(gè),因此,在實(shí)際應(yīng)用中,為了進(jìn)一步提高用戶流量的復(fù)用度,還可以在模塊劃分為多個(gè)邏輯上的層次,這樣,每個(gè)層次都可以對(duì)應(yīng)一個(gè)實(shí)驗(yàn)組。例如,如圖2所示,可以將模塊劃分為Π、BizLogic、Data 等多層。
[0044]需要說(shuō)明的是,也可以是對(duì)部分模塊進(jìn)行層次的劃分,而部分模塊不進(jìn)行劃分,或者,還可以對(duì)某模塊進(jìn)行更細(xì)的劃分,等等,只要保證不同實(shí)驗(yàn)組中的實(shí)驗(yàn)之間相對(duì)獨(dú)立即可。另外,在按照層次劃分實(shí)驗(yàn)組的情況下,可以將程序執(zhí)行的條件提煉成參數(shù),并定義在層上,此時(shí),具體的實(shí)驗(yàn)就是通過(guò)對(duì)層的參數(shù)值的修改并將修改值注入到程序執(zhí)行上下文中,來(lái)實(shí)現(xiàn)測(cè)試的目標(biāo)。并且,每個(gè)層可以定義一個(gè)或多個(gè)參數(shù),每個(gè)參數(shù)有默認(rèn)值。層上的一個(gè)實(shí)驗(yàn)可以對(duì)層的一個(gè)或多個(gè)參數(shù)設(shè)置成和默認(rèn)值不一樣的值。
[0045]另外需要說(shuō)明的是,每個(gè)層對(duì)應(yīng)一個(gè)應(yīng)用,同一模塊的不同的層可能對(duì)應(yīng)到不同的應(yīng)用。比如圖2中推薦模塊的Π層對(duì)應(yīng)的應(yīng)用是TmallSearch,但是Data層對(duì)應(yīng)的應(yīng)用是Aladdin。其中,應(yīng)用指的是一個(gè)Web服務(wù)器集群,對(duì)用戶流量的解析、分流、參數(shù)值處理是在具體應(yīng)用的機(jī)器上執(zhí)行的。
[0046]( 3 )流量分桶測(cè)試
[0047]所謂的分桶測(cè)試,是讓不同的用戶在訪問(wèn)特定的互聯(lián)網(wǎng)產(chǎn)品的時(shí)候,由系統(tǒng)來(lái)決定用戶的分組號(hào),然后根據(jù)分組號(hào),令用戶看到的是不同的產(chǎn)品版本,用戶在不同版本產(chǎn)品下的行為將被記錄下來(lái),這些行為數(shù)據(jù)通過(guò)數(shù)據(jù)分析形成一系列指標(biāo),而通過(guò)這些指標(biāo)的比較,最后就形成了各版本之間孰優(yōu)孰劣的結(jié)論。這里所說(shuō)的用戶的分組號(hào),就被形象地稱為分桶號(hào),每個(gè)分桶中設(shè)置一個(gè)實(shí)驗(yàn),被分到同一個(gè)桶中的用戶流量共同作為該實(shí)驗(yàn)的流量樣本。
[0048]在本申請(qǐng)實(shí)施例中,每個(gè)實(shí)驗(yàn)組內(nèi)都可以有自己的分桶方式。其中,在圖2所示的方式中,同一模塊內(nèi)的各層的分桶數(shù)需要是相同的,而不同模塊之間的層的分桶數(shù)可以相同也可以不同(當(dāng)然最好同一頁(yè)面所有的層的分桶數(shù)都相同,這樣更有利于獲得更好的離散效果,后文會(huì)有詳細(xì)的介紹)。
[0049]其中,每個(gè)實(shí)驗(yàn)組的分桶中,有一個(gè)基準(zhǔn)桶,里面不放置實(shí)驗(yàn),其他都是測(cè)試桶,測(cè)試桶里可以放置實(shí)驗(yàn)?;鶞?zhǔn)桶是不放置實(shí)驗(yàn)的,反映的是現(xiàn)有版本的效果,是用來(lái)和測(cè)試桶進(jìn)行效果對(duì)比的,可以對(duì)比出測(cè)試桶里的實(shí)驗(yàn)的效果。
[0050]一個(gè)用戶流量進(jìn)入頁(yè)面后,會(huì)進(jìn)入各個(gè)實(shí)驗(yàn)組,到達(dá)某實(shí)驗(yàn)組時(shí),進(jìn)入該實(shí)驗(yàn)組的一個(gè)分桶,獲取該分桶里的實(shí)驗(yàn)信息。對(duì)應(yīng)到圖2中,就相當(dāng)于用戶流量會(huì)進(jìn)入到各個(gè)模塊和模塊內(nèi)的各層,到達(dá)某一層時(shí)進(jìn)入該層的一個(gè)分桶,獲取分桶里的實(shí)驗(yàn)信息。其中,流量進(jìn)入各實(shí)驗(yàn)組是有先后順序的,比如某搜索頁(yè)面的流量先進(jìn)入搜索模塊,然后再分別同時(shí)進(jìn)入推薦模塊和廣告模塊。進(jìn)入推薦模塊時(shí),先進(jìn)入Π層,再進(jìn)入Data層,等等。先前的層的運(yùn)行邏輯可能導(dǎo)致流量不再進(jìn)入后續(xù)的層,或跳過(guò)某幾層。比如進(jìn)入推薦模塊的Π層后,可能UI層代碼邏輯認(rèn)為該流量無(wú)需進(jìn)行Data層的處理,從而流量不再進(jìn)入Data層。當(dāng)然,這種用戶流量進(jìn)入模塊和層的次序、是否進(jìn)入模塊和層的處理是由頁(yè)面本身的代碼來(lái)控制的,不由實(shí)驗(yàn)系統(tǒng)控制。
[0051](4)帶條件的實(shí)驗(yàn)
[0052]如前文所述,一般情況下,一個(gè)分桶會(huì)對(duì)應(yīng)一個(gè)實(shí)驗(yàn),但在實(shí)際應(yīng)用中,可能會(huì)存在一些特殊的實(shí)驗(yàn)。例如,如果實(shí)驗(yàn)是針對(duì)一些特定用戶的,那么需要加上實(shí)驗(yàn)條件,比如用戶的性別、年齡、地域、使用設(shè)備、瀏覽器類型、操作系統(tǒng)類型等等。對(duì)于帶條件的實(shí)驗(yàn)來(lái)說(shuō),分桶里的流量并不是全部都會(huì)穿過(guò)實(shí)驗(yàn),例如,某分桶中設(shè)置了一個(gè)帶條件的實(shí)驗(yàn),該實(shí)驗(yàn)的條件是用戶所處的地域?yàn)檎憬?,則當(dāng)一個(gè)用戶流量進(jìn)入該分桶之后,會(huì)首先判斷該用戶流量是否符合該條件,如果不符合,不會(huì)真正按照該實(shí)驗(yàn)的值對(duì)相關(guān)的參數(shù)進(jìn)行配置。此時(shí),為了充分利用用戶流量,可以在一個(gè)分桶里放置多個(gè)實(shí)驗(yàn)條件互斥的實(shí)驗(yàn)。如圖3所示,一個(gè)分桶中可以放置三個(gè)帶條件的實(shí)驗(yàn),三個(gè)條件分別為“浙江地區(qū)用戶”、“江蘇地區(qū)用戶”、“其他地區(qū)用戶”,一個(gè)用戶流量進(jìn)入一個(gè)分桶時(shí),實(shí)驗(yàn)系統(tǒng)可以先判斷是否和其中的一個(gè)實(shí)驗(yàn)的實(shí)驗(yàn)條件相匹配,如果有條件匹配的實(shí)驗(yàn)則穿過(guò)該實(shí)驗(yàn),如果沒(méi)有條件匹配的實(shí)驗(yàn)則不穿過(guò)實(shí)驗(yàn),即會(huì)穿過(guò)其中一個(gè)實(shí)驗(yàn)或者不穿過(guò)實(shí)驗(yàn)。其中,如果某用戶流量進(jìn)入了某分桶,但是沒(méi)有穿過(guò)任何實(shí)驗(yàn),可以采用默認(rèn)值對(duì)相關(guān)的參數(shù)進(jìn)行配置。
[0053]可見(jiàn),對(duì)于一個(gè)分桶來(lái)說(shuō),如果存在帶條件的實(shí)驗(yàn),那么穿過(guò)每個(gè)帶條件實(shí)驗(yàn)的流量都只是所在分桶的一部分流量。對(duì)于帶條件的實(shí)驗(yàn)而言,不能直接和基準(zhǔn)桶進(jìn)行效果對(duì)t匕,因?yàn)榛鶞?zhǔn)桶是不帶條件的,兩者的流量樣本不平等。如果需要做帶條件的實(shí)驗(yàn)同時(shí)又想和現(xiàn)有版本做效果對(duì)比,可以在同一層的另一個(gè)分桶內(nèi)創(chuàng)建一個(gè)帶同樣條件的對(duì)比實(shí)驗(yàn),對(duì)比實(shí)驗(yàn)采用的是現(xiàn)有版本。如圖4,實(shí)驗(yàn)4是實(shí)驗(yàn)I的對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)5是實(shí)驗(yàn)2的對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)6是實(shí)驗(yàn)3的對(duì)比實(shí)驗(yàn)。
[0054](5)跨實(shí)驗(yàn)組的關(guān)聯(lián)實(shí)驗(yàn)
[0055]雖然之前提到不同實(shí)驗(yàn)組之間的實(shí)驗(yàn)具有相對(duì)獨(dú)立性,但是,也可能存在一些實(shí)驗(yàn)需要跨越不同的實(shí)驗(yàn)組。例如,雖然模塊與模塊之間是獨(dú)立的,模塊內(nèi)部的層與層之間是相對(duì)獨(dú)立的,但也可能會(huì)存在較大的關(guān)聯(lián)度,這時(shí)可能需要做跨層的關(guān)聯(lián)實(shí)驗(yàn)。例如,參見(jiàn)圖5,假設(shè)一個(gè)模塊包括了層A、層B、層C,一個(gè)新增加的功能跨越了層A和層B,實(shí)驗(yàn)5用于評(píng)估該新功能的效果,該實(shí)驗(yàn)占用了層A的分桶6和層B的分桶5。
[0056](6)不同實(shí)驗(yàn)組的實(shí)驗(yàn)間的干擾度
[0057]如前文所述,用戶流量的復(fù)用是在不同的實(shí)驗(yàn)組之間進(jìn)行的,因?yàn)椴煌瑢?shí)驗(yàn)組之間的實(shí)驗(yàn)相對(duì)獨(dú)立,但是,這種獨(dú)立只是相對(duì)同一實(shí)驗(yàn)組內(nèi)的實(shí)驗(yàn)而言的,其實(shí)仍然可能存在一定的關(guān)聯(lián),因此,當(dāng)用戶流量穿過(guò)多個(gè)實(shí)驗(yàn)時(shí),先穿過(guò)的實(shí)驗(yàn)仍然有可能會(huì)對(duì)后穿過(guò)的實(shí)驗(yàn)造成干擾。當(dāng)然,這只是一種可能,也有可能先穿過(guò)的實(shí)驗(yàn)不會(huì)對(duì)后穿過(guò)的實(shí)驗(yàn)造成干擾。
[0058]例如,當(dāng)流量穿過(guò)多個(gè)層時(shí),如果穿過(guò)了多個(gè)實(shí)驗(yàn),那么這幾個(gè)實(shí)驗(yàn)之間就存在干擾。如圖6,一個(gè)用戶流量穿過(guò)了層A的分桶6、層B的分桶4,層A的分桶6里有實(shí)驗(yàn)5,層B的分桶4里有實(shí)驗(yàn)12,那么對(duì)于這個(gè)用戶流量樣本而言,實(shí)驗(yàn)5和實(shí)驗(yàn)12相互之間可能存在干擾。同理,實(shí)驗(yàn)5和實(shí)驗(yàn)16相互之間存在干擾。
[0059]為了評(píng)判一個(gè)系統(tǒng)在對(duì)抗干擾方面的能力,一般會(huì)引入干擾度的概念。例如,實(shí)驗(yàn)5對(duì)實(shí)驗(yàn)12的干擾度為:同時(shí)穿過(guò)實(shí)驗(yàn)5和實(shí)驗(yàn)12的流量樣本數(shù)/穿過(guò)實(shí)驗(yàn)12的流量樣本數(shù)。如果這個(gè)比值很小,可以認(rèn)為穿過(guò)層B分桶4的流量主要體現(xiàn)的是實(shí)驗(yàn)12的效果而不是實(shí)驗(yàn)5的效果,也即,層A分桶6中的實(shí)驗(yàn)5對(duì)層B分桶4中的實(shí)驗(yàn)12的干擾度比較低。對(duì)于其他實(shí)驗(yàn)對(duì)層B分桶4的干擾度計(jì)算和實(shí)驗(yàn)效果的評(píng)估也是同樣的原理。
[0060]例如,假設(shè)穿過(guò)層A分桶6中的實(shí)驗(yàn)5的用戶流量數(shù)為100個(gè),假設(shè)這100個(gè)用戶流量中有10個(gè)被分配到了層B分桶4中(其他的90個(gè)被分配到層B的其他各分桶中),則層A分桶6中的實(shí)驗(yàn)5對(duì)層B分桶4中的實(shí)驗(yàn)12的干擾度就是10/100=10%,如果該比值小于一定的閾值,則證明這種干擾度是可容忍的。相反,如果穿過(guò)層A分桶6中的實(shí)驗(yàn)5的100個(gè)用戶流量全部都進(jìn)入層B分桶4中,則該層A分桶6中的實(shí)驗(yàn)5對(duì)層B分桶4中的實(shí)驗(yàn)12的干擾度就是100%,這些用戶流量穿過(guò)層B分桶4中的實(shí)驗(yàn)12之后,可能完全無(wú)法分辨其效果是由實(shí)驗(yàn)5帶來(lái)的,還是由實(shí)驗(yàn)12帶來(lái)的。當(dāng)然,這種干擾度應(yīng)該被看作“最大干擾度”,因?yàn)槿绻麑?shí)驗(yàn)5和實(shí)驗(yàn)12之間完全不相關(guān),則即使穿過(guò)層A分桶6中的實(shí)驗(yàn)5的100個(gè)用戶流量全部都進(jìn)入層B分桶4中,實(shí)際上最終用戶流量穿過(guò)層B分桶4中的實(shí)驗(yàn)12之后,也可以分辨出實(shí)驗(yàn)5及實(shí)驗(yàn)12分別帶來(lái)的效果。當(dāng)然,為了適應(yīng)所有可能的情況,需要盡量將可能的最大干擾度降到最低。
[0061 ] 從以上介紹可見(jiàn),對(duì)于層B分桶4中的實(shí)驗(yàn)12,其用戶流量來(lái)自于層A中的各個(gè)分桶,如果層A中的各個(gè)分桶對(duì)層B分桶4中的實(shí)驗(yàn)12的干擾度都不高,則穿過(guò)該實(shí)驗(yàn)12的所有用戶流量就都能主要體現(xiàn)實(shí)驗(yàn)12的效果。因此,如果能夠找到一種方式能夠達(dá)到以下效果,則整個(gè)系統(tǒng)的抗干擾性能就會(huì)得到提高:上一層中進(jìn)入同一分桶的用戶流量平均分配到下一層的各個(gè)分桶中。例如,在圖6中,層A中有10個(gè)分桶,層B中也有10個(gè)分桶,假設(shè)層A的分桶I中進(jìn)入了 100個(gè)用戶流量,則在這些用戶流量進(jìn)入到層B時(shí),會(huì)平均分配到層B的各個(gè)分桶中,例如,層B的每個(gè)分桶中分配10個(gè)用戶流量;類似的層A中的其他分桶中的用戶流量也按照這種方式進(jìn)行平均分配。這樣,層B的某分桶中的流量就是分別來(lái)自于層A中的各個(gè)分桶,并且數(shù)目也比較平均,這樣,就使得層A各個(gè)分桶中的實(shí)驗(yàn)對(duì)層B的各個(gè)分桶中的實(shí)驗(yàn)的干擾度都不會(huì)太大。
[0062]也就是說(shuō),上一實(shí)驗(yàn)組中進(jìn)入到同一分桶的用戶流量在進(jìn)入下一實(shí)驗(yàn)組層時(shí),進(jìn)行了離散處理。通過(guò)這種離散處理,降低了上一實(shí)驗(yàn)組的實(shí)驗(yàn)對(duì)下一實(shí)驗(yàn)組的實(shí)驗(yàn)的干擾度,并且,通過(guò)這種離散,還使得同一實(shí)驗(yàn)組內(nèi)各個(gè)實(shí)驗(yàn)受到的干擾程度基本相當(dāng),這樣,可以保證同一實(shí)驗(yàn)組內(nèi)各個(gè)實(shí)驗(yàn)之間的可比性。也就是說(shuō),如前文所述,最終的測(cè)試效果是通過(guò)同一實(shí)驗(yàn)組內(nèi)各個(gè)實(shí)驗(yàn)間的測(cè)試結(jié)果進(jìn)行比對(duì)得出的,如果同一組內(nèi)的各個(gè)實(shí)驗(yàn)受到的干擾程度相差比較大,則測(cè)試結(jié)果的可比性會(huì)受到影響。而如果按照上述方式在實(shí)驗(yàn)組之間對(duì)用戶流量進(jìn)行平衡的離散處理(即任意一實(shí)驗(yàn)組的任意一個(gè)分桶內(nèi)的用戶流量,在進(jìn)入到其他實(shí)驗(yàn)組時(shí),會(huì)分別分配到各個(gè)分桶,且進(jìn)入每個(gè)分桶的數(shù)量是相等的),使得同一實(shí)驗(yàn)組內(nèi)的各個(gè)實(shí)驗(yàn)受其他實(shí)驗(yàn)組的任一實(shí)驗(yàn)的干擾度相同,則可以保證同一實(shí)驗(yàn)組內(nèi)各個(gè)實(shí)驗(yàn)之間的可比性。
[0063]圖7是平衡離散的示意圖,干擾層是N個(gè)分桶,被干擾層是M個(gè)分桶,干擾層的每個(gè)分桶的流量是1/N,干擾層的每個(gè)分桶的流量對(duì)應(yīng)到被干擾層的所有分桶的流量是平衡的,即都為1/(NM)。干擾層的任意一個(gè)分桶內(nèi)的一個(gè)實(shí)驗(yàn)對(duì)被干擾層的任意一個(gè)分桶內(nèi)的一個(gè)實(shí)驗(yàn)的干擾度不超過(guò)干擾層的分桶數(shù)的倒數(shù)1/N(對(duì)于帶條件的實(shí)驗(yàn)而言,分桶內(nèi)的流量只有部分穿過(guò)實(shí)驗(yàn))。實(shí)踐證明,將每一層的分桶數(shù)都設(shè)置為100時(shí),可以有效降低干擾度。
[0064]當(dāng)然,關(guān)于具體如何實(shí)現(xiàn)上述平衡離散,最簡(jiǎn)單的,可以采用隨機(jī)分配的方式,例如,對(duì)于層A分桶5中的100個(gè)用戶流量,在進(jìn)入層B時(shí),隨機(jī)從中選擇10個(gè)用戶流量進(jìn)入層B的分桶I,再隨機(jī)選擇10個(gè)進(jìn)入層B的分桶2,以此類推。但是,此時(shí),有一個(gè)重要的問(wèn)題需要考慮,就是會(huì)話粘連。
[0065](7)會(huì)話粘連
[0066]如本申請(qǐng)【背景技術(shù)】部分所述,所謂的會(huì)話粘連是指:當(dāng)用戶進(jìn)入一 Web頁(yè)面時(shí),系統(tǒng)會(huì)為該用戶創(chuàng)建一會(huì)話,并產(chǎn)生一次用戶流量,將該用戶流量分配到某分桶η之后,該用戶會(huì)看到該分桶η內(nèi)的實(shí)驗(yàn)所定義的頁(yè)面顯示效果;之后如果該用戶執(zhí)行了刷新頁(yè)面的操作,則會(huì)產(chǎn)生一次新的用戶流量,重新為該流量分配分桶,此時(shí),需要將該新的用戶流量分配到分桶η中,這樣,才能使得用戶在刷新之后看到的頁(yè)面顯示效果與刷新之前相同。
[0067]但是,結(jié)合到本申請(qǐng)實(shí)施例中的同一用戶流量穿過(guò)多個(gè)實(shí)驗(yàn)的情況,如果同時(shí)還需要考慮實(shí)驗(yàn)間的干擾度問(wèn)題,則像前文所述的那樣通過(guò)隨機(jī)分配的方式在不同的實(shí)驗(yàn)組之間進(jìn)行平衡離散就不行了,因?yàn)闊o(wú)法滿足會(huì)話粘連的要求。例如,假設(shè)某用戶流量進(jìn)入了層A分桶5,在進(jìn)入層B時(shí),進(jìn)行隨機(jī)分配,將其分配到了層B分桶4 ;而如果該用戶執(zhí)行刷新產(chǎn)生了一個(gè)新的用戶流量,則隨機(jī)分配的方案則不一定再將該用戶流量分配到層A的分桶5,即使在層A可以被分到分桶5,在向?qū)覤進(jìn)行平衡離散分配時(shí),也很可能不會(huì)被分到分桶4,這就會(huì)使得用戶刷新頁(yè)面前后看到的不是同一套實(shí)驗(yàn)方案對(duì)應(yīng)的頁(yè)面效果,影響用戶體驗(yàn)。
[0068]因此,如何在達(dá)到平衡離散效果的同時(shí),還能做到會(huì)話粘連,就是本申請(qǐng)實(shí)施例重點(diǎn)需要解決的技術(shù)問(wèn)題。下面就對(duì)本申請(qǐng)實(shí)施例提供的實(shí)現(xiàn)方案進(jìn)行詳細(xì)地介紹。
[0069]本申請(qǐng)實(shí)施例首先提供了一種網(wǎng)站測(cè)試系統(tǒng)中的用戶流量分配方法,如前文所述,其中的網(wǎng)站測(cè)試系統(tǒng)中包括至少兩個(gè)實(shí)驗(yàn)組,每個(gè)實(shí)驗(yàn)組具有唯一的標(biāo)識(shí),每個(gè)實(shí)驗(yàn)組內(nèi)包括位于多個(gè)分桶內(nèi)的多個(gè)實(shí)驗(yàn),每個(gè)分桶具有實(shí)驗(yàn)組內(nèi)唯一的標(biāo)識(shí),以上這些信息都是可以在設(shè)計(jì)實(shí)驗(yàn)的同時(shí)進(jìn)行設(shè)置的,其中,不同實(shí)驗(yàn)組的實(shí)驗(yàn)之間相對(duì)獨(dú)立,參見(jiàn)圖8,該用戶流量分配方法可以包括以下步驟:
[0070]S801:接收到用戶流量后,根據(jù)所述用戶流量對(duì)應(yīng)的訪問(wèn)請(qǐng)求中攜帶的信息,確定所述用戶流量對(duì)應(yīng)的用戶標(biāo)識(shí),以及與所述用戶流量匹配的實(shí)驗(yàn)組;
[0071]這里需要說(shuō)明的是,在實(shí)際應(yīng)用中,可以由實(shí)驗(yàn)人員在管理平臺(tái)上創(chuàng)建、管理頁(yè)面、實(shí)驗(yàn)組(包括模塊和/或?qū)拥?、實(shí)驗(yàn)等,并將各實(shí)驗(yàn)組的標(biāo)識(shí)、各實(shí)驗(yàn)組中包括的分桶數(shù)及各分桶的標(biāo)識(shí)、各分桶與實(shí)驗(yàn)的對(duì)應(yīng)關(guān)系等數(shù)據(jù)保存在數(shù)據(jù)庫(kù)中。管理平臺(tái)上有權(quán)限管理系統(tǒng),可以實(shí)現(xiàn)對(duì)頁(yè)面、模塊、層各級(jí)的實(shí)驗(yàn)權(quán)限進(jìn)行控制。另外,通過(guò)實(shí)驗(yàn)管理平臺(tái),還可以進(jìn)入實(shí)驗(yàn)效果數(shù)據(jù)報(bào)表系統(tǒng)查看實(shí)驗(yàn)的效果數(shù)據(jù)報(bào)表(其中,實(shí)驗(yàn)效果數(shù)據(jù)報(bào)表系統(tǒng)通過(guò)對(duì)流量攜帶的實(shí)驗(yàn)信息和流量帶來(lái)的效果進(jìn)行關(guān)聯(lián)分析計(jì)算,得出實(shí)驗(yàn)的效果,將效果數(shù)據(jù)整理成數(shù)據(jù)報(bào)表)。
[0072]具體實(shí)現(xiàn)時(shí),對(duì)用戶流量的解析、分流、參數(shù)值處理是在應(yīng)用的機(jī)器上執(zhí)行的,實(shí)驗(yàn)系統(tǒng)提供了分流器組件,應(yīng)用接入實(shí)驗(yàn)系統(tǒng)時(shí),需要集成分流器組件。實(shí)驗(yàn)管理平臺(tái)發(fā)布實(shí)驗(yàn)時(shí),可以把實(shí)驗(yàn)配置文件通過(guò)文件同步系統(tǒng)(例如Zookeeper等)發(fā)送到應(yīng)用所在的機(jī)器上(一個(gè)應(yīng)用往往有多臺(tái)機(jī)器),分流器組件可以讀取實(shí)驗(yàn)配置文件,把實(shí)驗(yàn)相關(guān)的實(shí)驗(yàn)組信息(包括模塊信息、層信息等)、分桶信息、分桶的實(shí)驗(yàn)分配信息、參數(shù)信息存放在緩存中。當(dāng)用戶流量訪問(wèn)應(yīng)用機(jī)器上的Web服務(wù)器時(shí),用戶流量可以被Web服務(wù)器上的攔截器攔截下來(lái),先交給分流器組件進(jìn)行處理。該圖8中所述的各個(gè)步驟的執(zhí)行主體就可以看作是該分流器組件。
[0073]在本申請(qǐng)實(shí)施例中,分流器組件在接收到一個(gè)用戶流量之后,可以首先從中提取出對(duì)應(yīng)的用戶標(biāo)識(shí)信息。其中,用戶標(biāo)識(shí)信息可以是指用戶ID等能夠唯一標(biāo)識(shí)用戶身份的信息。對(duì)于在系統(tǒng)中注冊(cè)過(guò)的用戶,系統(tǒng)一般都會(huì)為用戶生成確定的ID,因此,可以優(yōu)先采用用戶在Web頁(yè)面所在業(yè)務(wù)系統(tǒng)里的身份ID,如果獲取不到這種身份ID,也可以采用用戶訪問(wèn)Web頁(yè)面時(shí)的機(jī)器IP的字符串哈希值作為用戶標(biāo)識(shí)信息。當(dāng)然,為了便于后續(xù)的計(jì)算,用戶標(biāo)識(shí)信息一般是數(shù)字類型的信息。其中,用戶標(biāo)識(shí)的大小對(duì)離散效果沒(méi)有影響,但用戶數(shù)量多少對(duì)離散效果會(huì)有一定影響。
[0074]另外,一個(gè)應(yīng)用中可能包含多個(gè)實(shí)驗(yàn)組,但是對(duì)于一個(gè)用戶流量而言,可能并不需要每個(gè)實(shí)驗(yàn)組都進(jìn)入,因此,可以預(yù)先為各個(gè)實(shí)驗(yàn)組定義地址,這種地址與用戶訪問(wèn)Web頁(yè)面時(shí)各個(gè)網(wǎng)頁(yè)的地址是對(duì)應(yīng)的,這樣,當(dāng)接收到一個(gè)用戶流量之后,可以首先取出該用戶流量對(duì)應(yīng)的請(qǐng)求訪問(wèn)的地址(例如網(wǎng)頁(yè)的URL),然后將該URL與各個(gè)實(shí)驗(yàn)組的URL進(jìn)行匹配,匹配成功的就是與當(dāng)前用戶流量相匹配的實(shí)驗(yàn)組。
[0075]在獲知了相匹配的實(shí)驗(yàn)組之后,還可以根據(jù)業(yè)務(wù)系統(tǒng)中的定義,獲知用戶流量在進(jìn)入各個(gè)實(shí)驗(yàn)組的先后順序。例如,相匹配的實(shí)驗(yàn)組分別為實(shí)驗(yàn)組A、實(shí)驗(yàn)組B和實(shí)驗(yàn)組C,則可以根據(jù)頁(yè)面本身的代碼等信息,確定出各個(gè)實(shí)驗(yàn)組的先后順序,例如需要先進(jìn)入實(shí)驗(yàn)組A,再進(jìn)入實(shí)驗(yàn)組B,最后再進(jìn)入實(shí)驗(yàn)組C,等等。
[0076]S802:結(jié)合所述匹配的實(shí)驗(yàn)組的標(biāo)識(shí)以及所述用戶標(biāo)識(shí)進(jìn)行取模運(yùn)算,確定所述用戶流量在各個(gè)匹配的實(shí)驗(yàn)組中需進(jìn)入的分桶的標(biāo)識(shí);其中,在同一實(shí)驗(yàn)組中,用戶流量需進(jìn)入的分桶的標(biāo)識(shí)僅由所述用戶標(biāo)識(shí)決定,以便同一用戶的用戶流量對(duì)于同一實(shí)驗(yàn)組而言,需進(jìn)入的分桶的標(biāo)識(shí)是固定的,且上一實(shí)驗(yàn)組中進(jìn)入同一分桶的用戶流量平均分配到下一實(shí)驗(yàn)組的各個(gè)分桶中;
[0077]在獲知了用戶標(biāo)識(shí)以及需要按照怎樣的順序進(jìn)入哪些實(shí)驗(yàn)組之后,就可以分別確定在各個(gè)實(shí)驗(yàn)組中分別需要進(jìn)入哪個(gè)分桶。其中,在本申請(qǐng)實(shí)施例中,具體在確定需要進(jìn)入哪個(gè)分桶時(shí),可以考慮實(shí)驗(yàn)組的標(biāo)識(shí)以及用戶標(biāo)識(shí)這兩方面的信息。具體實(shí)現(xiàn)時(shí),可以預(yù)先建立一個(gè)公式,在該公式中,每一實(shí)驗(yàn)組的流量分桶分配處理只有兩個(gè)變量:用戶ID(Uid)和實(shí)驗(yàn)組ID(Iid),即處理函數(shù)為f (uid,lid),帶入具體的用戶標(biāo)識(shí)以及實(shí)驗(yàn)組標(biāo)識(shí)之后,得到的就是在該實(shí)驗(yàn)組中,該用戶流量需要進(jìn)入的分桶的分桶號(hào)。
[0078]也就是說(shuō),通過(guò)這種方式,在同一實(shí)驗(yàn)組中,用戶流量需進(jìn)入的分桶的標(biāo)識(shí)僅由所述用戶標(biāo)識(shí)決定,這樣,同一用戶的用戶流量對(duì)于同一實(shí)驗(yàn)組而言,需進(jìn)入的分桶的標(biāo)識(shí)就是固定的。也就是說(shuō),無(wú)論用戶是新打開頁(yè)面發(fā)起的一起訪問(wèn),還是對(duì)頁(yè)面進(jìn)行刷新或者翻頁(yè)等重新發(fā)起的訪問(wèn),只要用戶標(biāo)識(shí)不變,對(duì)應(yīng)產(chǎn)生的用戶流量在每一實(shí)驗(yàn)組中都會(huì)進(jìn)入確定的一個(gè)分桶中,顯然,就能達(dá)到會(huì)話粘連的效果。
[0079]另外,在做到會(huì)話粘連的同時(shí),本申請(qǐng)實(shí)施例還可以通過(guò)取模運(yùn)算,使得上一實(shí)驗(yàn)組中進(jìn)入同一分桶的用戶流量能夠平均分配到下一實(shí)驗(yàn)組的各個(gè)分桶中。其中,所謂的取模運(yùn)算也就是求余運(yùn)算,也就是說(shuō),在根據(jù)用戶標(biāo)識(shí)以及實(shí)驗(yàn)組標(biāo)識(shí)來(lái)確定需要進(jìn)入的分桶號(hào)時(shí),可以通過(guò)對(duì)這兩方面信息的某種運(yùn)算結(jié)果(例如,先將兩者相乘,等等)進(jìn)行取模的方式來(lái)確定。其中,取模運(yùn)算時(shí)的模數(shù)可以是實(shí)驗(yàn)組內(nèi)包含的分桶數(shù),也就是說(shuō),如果某實(shí)驗(yàn)組中包含是個(gè)分桶,則就可以對(duì)用戶標(biāo)識(shí)與該實(shí)驗(yàn)組標(biāo)識(shí)相乘所得結(jié)果進(jìn)行模10運(yùn)算,得到的結(jié)果則可以作為對(duì)應(yīng)的用戶流量需要進(jìn)行的分桶號(hào)。通過(guò)取模運(yùn)算,不僅可以使得上一實(shí)驗(yàn)組中同一桶內(nèi)的用戶流量在進(jìn)入下一實(shí)驗(yàn)組時(shí),被分配到各個(gè)不同的分桶內(nèi),而且,還可以使得分配到各個(gè)分桶的用戶流量數(shù)目比較平均,也就是達(dá)到平衡離散的目的。
[0080]需要說(shuō)明的是,在計(jì)算分桶號(hào)的函數(shù)中,雖然需要進(jìn)行取模運(yùn)算,但是使用的模數(shù)一般是實(shí)驗(yàn)組內(nèi)包含的分桶數(shù)量,至少在同一實(shí)驗(yàn)組內(nèi)是個(gè)常數(shù),因此,在同一實(shí)驗(yàn)組內(nèi),仍然只有用戶標(biāo)識(shí)這一個(gè)變量。
[0081]其中,為了獲得更好的平衡離散效果,將用戶標(biāo)識(shí)、實(shí)驗(yàn)組標(biāo)識(shí)結(jié)合黃金比例質(zhì)數(shù)進(jìn)行哈希運(yùn)算后,再對(duì)分桶數(shù)取模運(yùn)算。
[0082]例如,流量分桶分配處理公式可以為以下公式(I):
[0083]f (uid, lid)= (int) [(uidXlid) X G0LDEN_RAT10_PRIME) ? (CPU_BIT-8) ] MODN+I (I)
[0084]其中:
[0085]uid 是用戶 ID;
[0086]lid是層ID (每個(gè)層有唯一的ID),類型為int (整型),范圍為[1,100000];
[0087]G0LDEN_RAT10_PRIME為黃金比例質(zhì)數(shù),在32位機(jī)器上是0x9e370001UL (十進(jìn)制數(shù)值為:2~31+2~29-2~25+2~22-2~19-2~16+1),在 64 位機(jī)器上是 0x9e37fffffffc0001UL (十進(jìn)制數(shù)值為:2~63+2~61-2~57+2~54-2~51-2~18+1);
[0088]CPU_BIT是CPU位數(shù),32位機(jī)器為32,64位機(jī)器為64 ;
[0089]?是位移運(yùn)算,右移;
[0090]MOD是取模運(yùn)算;
[0091](int)是類型強(qiáng)制轉(zhuǎn)換,將長(zhǎng)整型long值轉(zhuǎn)為整型int值;
[0092]I I是取絕對(duì)值,從long強(qiáng)轉(zhuǎn)為int時(shí),可能會(huì)變成負(fù)數(shù),需要取絕對(duì)值;
[0093]N是實(shí)驗(yàn)組內(nèi)的分桶數(shù),分桶的數(shù)量對(duì)離散效果有影響,具體的,分桶數(shù)范圍在[100,1000]區(qū)間比較合適,并且頁(yè)面中所有實(shí)驗(yàn)組的分桶數(shù)都相同時(shí)離散效果最好。
[0094]需要說(shuō)明的是,引入黃金比例質(zhì)數(shù)是為了使得平衡離散的效果更好,對(duì)會(huì)話粘連沒(méi)有影響,也就是說(shuō),由于黃金比例質(zhì)數(shù)在相同位數(shù)的機(jī)器中是一個(gè)固定的常數(shù),因此,只要是在相同位數(shù)的機(jī)器中,對(duì)于同一實(shí)驗(yàn)組,公式中的變量仍然只有用戶標(biāo)識(shí)。另外,由于Web應(yīng)用服務(wù)器往往是集群,因此,還需要考慮同一用戶對(duì)頁(yè)面的不同次請(qǐng)求被分配到不同的Web服務(wù)器進(jìn)行處理的情況。不過(guò)由于頁(yè)面的分桶配置在同一集群的所有機(jī)器上都是相同的,也就是說(shuō),實(shí)際中Web應(yīng)用服務(wù)器的集群里的機(jī)器的CPU位數(shù)一般都是相同的,所以一般來(lái)說(shuō)機(jī)器位數(shù)的因素并不會(huì)影響該公式。
[0095]另外,為了進(jìn)一步使得平衡離散的效果更好,在前述公式(I)的基礎(chǔ)上,還可以進(jìn)一步優(yōu)化。具體的,可以在將實(shí)驗(yàn)組的標(biāo)識(shí)、所述用戶標(biāo)識(shí)結(jié)合黃金比例質(zhì)數(shù)進(jìn)行哈希運(yùn)算之前,將實(shí)驗(yàn)組的標(biāo)識(shí)加上一預(yù)置的第一長(zhǎng)整型數(shù)據(jù),得到相加結(jié)果,然后再將所述相加結(jié)果、所述用戶標(biāo)識(shí)結(jié)合黃金比例質(zhì)數(shù)進(jìn)行哈希運(yùn)算。其中,該預(yù)置的第一長(zhǎng)整型數(shù)據(jù)遠(yuǎn)大于實(shí)驗(yàn)組的標(biāo)識(shí),以使得針對(duì)不同的實(shí)驗(yàn)組得到的相加結(jié)果之間的比值趨近于1,因?yàn)樵摫戎祬s接近于1,平衡離散的效果就越好。類似的,將用戶的標(biāo)識(shí)加上一預(yù)置的第二長(zhǎng)整型數(shù)據(jù),得到用戶標(biāo)識(shí)相加結(jié)果;其中,針對(duì)不同的用戶,第二長(zhǎng)整型數(shù)據(jù)相等,且第二長(zhǎng)整型數(shù)據(jù)遠(yuǎn)大于用戶的標(biāo)識(shí),以使得針對(duì)不同的用戶得到的相加結(jié)果之間的比值趨近于I。
[0096]也就是說(shuō),優(yōu)化后的公式可以是如下公式(2):
[0097]f (uid, lid) = | (int) [( (BIG_BASE_NUMBER_UID+uid) X (BIG_BASE_NUMBER_LID+lid)XG0LDEN_RAT10_PRIME)?(CPU_BIT_8)] MOD N+1(2)
[0098]其中,BIG_BASE_NUMBER_UID和 BIG_BASE_NUMBER_LID 就是前述第一、第二長(zhǎng)整型數(shù)據(jù),其他參數(shù)與公式(I)中的各個(gè)參數(shù)相同。BIG_BASE_NUMBER_LID用來(lái)使得(BIG_BASE_NUMBER_LID+lidl)/(BIG_BASE_NUMBER_LID+lid2)比值接近 1,并且,比值越接近 I,平衡離散效果越好,當(dāng)(BIG_BASE_NUMBER_LID+lidl)與(BIG_BASE_NUMBER_LID+lid2)成倍數(shù)關(guān)系時(shí),平衡離散效果最差。同理,BIG_BASE_NUMBER_UID用來(lái)使得(BIG_BASE_NUMBER_UID+uidl) / (BIG_BASE_NUMBER_UID+uid2)比值接近 I。另夕卜,BIG_BASE_NUMBER_UID 和BIG_BASE_NUMBER_LID 的大小對(duì)離散效果有影響,當(dāng) BIG_BASE_NUMBER_UID 和 BIG_BASE_NUMBER_LID為10000000000L左右時(shí),平衡離散效果較好,不同實(shí)驗(yàn)組之間的離散度可以達(dá)到90%以上,有些情況下可以達(dá)到98%以上。
[0099]總之,對(duì)于一臺(tái)機(jī)器,分桶號(hào)的計(jì)算公式中只有uid、lid、N是變量,具體到某個(gè)實(shí)驗(yàn)組來(lái)說(shuō),只有uid是變量,因?yàn)閷?shí)驗(yàn)組的ID和分桶數(shù)是固定的。這就可以使得任意一個(gè)用戶對(duì)于任意一個(gè)實(shí)驗(yàn)組來(lái)說(shuō),所進(jìn)入的分桶號(hào)是固定的,從而達(dá)到會(huì)話粘連的目的。同時(shí),通過(guò)取模運(yùn)算,達(dá)到離散的目的。
[0100]S803:根據(jù)所述用戶流量在各匹配的實(shí)驗(yàn)組中需進(jìn)入的分桶的標(biāo)識(shí),將所述用戶流量分配到所述匹配的實(shí)驗(yàn)組對(duì)應(yīng)的分桶中。
[0101]通過(guò)步驟S803中給出的確定需要進(jìn)入分桶的分桶號(hào)的實(shí)現(xiàn)方式,能夠同時(shí)滿足會(huì)話粘連以及離散的目的,因此,在進(jìn)入某實(shí)驗(yàn)組時(shí),只要通過(guò)上述方式得到該實(shí)驗(yàn)組中對(duì)應(yīng)的分桶號(hào)之后,就可以直接將用戶流量分配到該實(shí)驗(yàn)組的對(duì)應(yīng)分桶中。當(dāng)然,不同的實(shí)驗(yàn)組之間具有先后順序關(guān)系,因此,還可以根據(jù)這種先后順序確定先進(jìn)入哪個(gè)實(shí)驗(yàn)組,后進(jìn)入哪個(gè)分組。系統(tǒng)中全部的用戶流量都可以按照上述方式進(jìn)行分配,這樣,就可以在實(shí)現(xiàn)會(huì)話粘連的同時(shí),一實(shí)驗(yàn)組內(nèi)各實(shí)驗(yàn)受到其他實(shí)驗(yàn)組內(nèi)各實(shí)驗(yàn)的干擾都會(huì)比較低且基本相等,因此,還可以保證同一實(shí)驗(yàn)組內(nèi)各實(shí)驗(yàn)之間的可比性。
[0102]其中,對(duì)每一實(shí)驗(yàn)組,在用戶流量分配到的分桶里,如果該分桶中包括多個(gè)帶條件的實(shí)驗(yàn),則取實(shí)驗(yàn)條件與該用戶流量相匹配的實(shí)驗(yàn)。對(duì)于此用戶流量來(lái)說(shuō),如果有匹配的實(shí)驗(yàn),則實(shí)驗(yàn)組上定義的參數(shù)將采用該實(shí)驗(yàn)里設(shè)置的值;如果沒(méi)有匹配的實(shí)驗(yàn),則實(shí)驗(yàn)組上定義的參數(shù)將采用參數(shù)的默認(rèn)值。
[0103]由于在本申請(qǐng)實(shí)施例中,一個(gè)用戶流量會(huì)穿過(guò)多個(gè)實(shí)驗(yàn)組中的多個(gè)實(shí)驗(yàn),每個(gè)實(shí)驗(yàn)都會(huì)針對(duì)一些參數(shù)設(shè)置一些具體的值,因此,最后在向用戶顯示W(wǎng)eb頁(yè)面時(shí),可以將各個(gè)實(shí)驗(yàn)中的值都帶入到對(duì)應(yīng)的參數(shù)中。當(dāng)然,用戶流量在穿過(guò)各個(gè)實(shí)驗(yàn)組時(shí)是有先后順序的,因此,一般可能不會(huì)同時(shí)獲得各個(gè)實(shí)驗(yàn)中的值。這樣,在用戶流量依次穿過(guò)各個(gè)實(shí)驗(yàn)組的同時(shí),可以將用戶流量分別穿過(guò)的實(shí)驗(yàn)的標(biāo)識(shí)、分桶的標(biāo)識(shí)、各實(shí)驗(yàn)組(例如各層)參數(shù)的值保存到該用戶流量所在線程的會(huì)話存儲(chǔ)(內(nèi)存)中,這樣程序在執(zhí)行過(guò)程中,可以到該會(huì)話存儲(chǔ)中讀取各參數(shù)的取值,并根據(jù)這些取值進(jìn)行頁(yè)面的顯示。
[0104]另外,如前文所述,在實(shí)際應(yīng)用中,還可能存在跨實(shí)驗(yàn)組的關(guān)聯(lián)實(shí)驗(yàn),對(duì)于這種特殊的實(shí)驗(yàn),在本申請(qǐng)實(shí)施例中可以進(jìn)行特殊的處理。具體的,對(duì)于這類關(guān)聯(lián)實(shí)驗(yàn),可以將不同實(shí)驗(yàn)組之間的關(guān)聯(lián)實(shí)驗(yàn)所在分桶(為便于描述,可以將這種分桶稱為具有關(guān)聯(lián)關(guān)系的分桶)的用戶流量對(duì)應(yīng)起來(lái),即在圖5中,層A分桶6與層B分桶5就屬于具有關(guān)聯(lián)關(guān)系的分桶,其中包含相同的實(shí)驗(yàn),因此,可以將層A分桶6的流量要完全對(duì)應(yīng)到層B分桶5的流量。正是因?yàn)橐軐?shí)現(xiàn)層與層之間相關(guān)分桶的流量可完全對(duì)應(yīng),同一模塊內(nèi)的各層的分桶數(shù)才要求一致,而不同模塊之間的層的分桶數(shù)是可以不同的。
[0105]為了能夠?qū)崿F(xiàn)上述將具有關(guān)聯(lián)關(guān)系的分桶中的用戶流量完全對(duì)應(yīng),一種簡(jiǎn)單的方式可以是,強(qiáng)制關(guān)聯(lián)實(shí)驗(yàn)在不同的實(shí)驗(yàn)組中只能定義在相同編號(hào)的分桶中,比如,實(shí)驗(yàn)5如果是跨越層A和層B的關(guān)聯(lián)實(shí)驗(yàn),則在層A和層B上都位于分桶6。這樣,如果用戶流量在進(jìn)入層A時(shí)被分配到分桶6,之后只需要判斷出實(shí)驗(yàn)5是關(guān)聯(lián)實(shí)驗(yàn)并且跨越了層A和層B,就可以在用戶流量進(jìn)入層B時(shí)將之分配到和層A相同編號(hào)的分桶中,從而實(shí)現(xiàn)關(guān)聯(lián)的分桶的用戶流量相對(duì)應(yīng)。
[0106]這種實(shí)現(xiàn)方式在有些情況下可能會(huì)存在缺陷,首先,由于不同的實(shí)驗(yàn)組一般是分開做實(shí)驗(yàn)的,當(dāng)需要做跨實(shí)驗(yàn)組的關(guān)聯(lián)實(shí)驗(yàn)時(shí),不一定剛好有對(duì)應(yīng)桶號(hào)的分桶是空閑(因?yàn)橐话阋粋€(gè)分桶只能放置一個(gè)實(shí)驗(yàn));其次,不同的實(shí)驗(yàn)組可能是位于不同的應(yīng)用上的,當(dāng)用戶流量從上游應(yīng)用流轉(zhuǎn)到下游應(yīng)用時(shí),實(shí)驗(yàn)系統(tǒng)將無(wú)從知曉用戶流量在上游應(yīng)用的實(shí)驗(yàn)組中位于哪個(gè)分桶、是否剛剛穿過(guò)了關(guān)聯(lián)實(shí)驗(yàn),因此也就無(wú)法處理流量對(duì)應(yīng)。
[0107]為了彌補(bǔ)上述缺陷,在另一種實(shí)現(xiàn)方式中,可以通過(guò)將關(guān)聯(lián)實(shí)驗(yàn)的信息攜帶在用戶流量的Cookie (指某些網(wǎng)站為了辨別用戶身份、進(jìn)行會(huì)話跟蹤等而儲(chǔ)存在用戶本地終端上的數(shù)據(jù))中,以達(dá)到可判斷用戶流量來(lái)向的目的。
[0108]具體的,可以在定義各實(shí)驗(yàn)組、分桶、實(shí)驗(yàn)等時(shí),在配置文件中記錄下關(guān)于關(guān)聯(lián)實(shí)驗(yàn)的信息,包括關(guān)聯(lián)實(shí)驗(yàn)需要跨越的實(shí)驗(yàn)組的標(biāo)識(shí)、關(guān)聯(lián)實(shí)驗(yàn)在各個(gè)實(shí)驗(yàn)組中所在的分桶的標(biāo)識(shí)(可以相同也可以不同)。這樣,當(dāng)用戶流量進(jìn)入某實(shí)驗(yàn)組時(shí)的某分桶時(shí),分流器組件就可以讀取配置文件,根據(jù)配置文件中記錄的信息,判斷該分桶中的實(shí)驗(yàn)是否為關(guān)聯(lián)實(shí)驗(yàn),如果是,則將配置文件中記錄的信息寫入到用戶流量的Cookie中,包括關(guān)聯(lián)實(shí)驗(yàn)標(biāo)識(shí),以及在各個(gè)實(shí)驗(yàn)組中所在的分桶號(hào)。這樣,當(dāng)該用戶流量到達(dá)下一實(shí)驗(yàn)組時(shí),就可以通過(guò)讀取Cookie中的信息,確定出該用戶流量在下一實(shí)驗(yàn)組需進(jìn)入的分桶號(hào)。
[0109]例如,關(guān)于圖5中所示的例子,可以在配置文件中記錄以下信息:
[0110]實(shí)驗(yàn)5是關(guān)聯(lián)實(shí)驗(yàn);
[0111]實(shí)驗(yàn)跨越了層A和層B;
[0112]實(shí)驗(yàn)在層A中位于分桶6 ;
[0113]實(shí)驗(yàn)在層B中位于分桶5。
[0114]這樣,當(dāng)用戶流量進(jìn)入層A分桶6的實(shí)驗(yàn)5時(shí),實(shí)驗(yàn)系統(tǒng)分流器組件就可以根據(jù)實(shí)驗(yàn)配置文件的信息獲取到以上信息,并在該用戶流量的Cookie中加上關(guān)聯(lián)實(shí)驗(yàn)的標(biāo)識(shí),表明該流量正處于關(guān)聯(lián)實(shí)驗(yàn)中,并記錄該關(guān)聯(lián)實(shí)驗(yàn)在所有實(shí)驗(yàn)組中的分桶號(hào)。
[0115]當(dāng)流量進(jìn)入到層B時(shí),分流器組件讀取用戶流量的Cookie,判斷出用戶流量處于關(guān)聯(lián)實(shí)驗(yàn)中,并根據(jù)Cookie里記錄的關(guān)聯(lián)實(shí)驗(yàn)所有實(shí)驗(yàn)組的分桶號(hào),判斷出在本實(shí)驗(yàn)組應(yīng)該將該用戶流量分配到分桶5。
[0116]由于用戶流量穿過(guò)層B之后,已經(jīng)穿過(guò)了關(guān)聯(lián)實(shí)驗(yàn)跨越的所有實(shí)驗(yàn)組,因此,分流器組件就可以從流量的Cookie中刪除關(guān)聯(lián)實(shí)驗(yàn)的標(biāo)識(shí)以及相關(guān)的分桶信息。
[0117]這樣,當(dāng)該用戶流量進(jìn)入到后續(xù)的層C時(shí),分流器組件讀取用戶流量的Cookie,判斷出用戶流量沒(méi)有處于關(guān)聯(lián)實(shí)驗(yàn)中,于是將按照?qǐng)D8中所述的方式對(duì)用戶流量進(jìn)行會(huì)話粘連以及離散處理后,再分配到層C 一個(gè)沒(méi)有關(guān)聯(lián)實(shí)驗(yàn)的分桶中。
[0118]通過(guò)上述這種方式能夠支持關(guān)聯(lián)實(shí)驗(yàn)跨越的實(shí)驗(yàn)組位于不同的應(yīng)用上的情形,因?yàn)橛脩袅髁吭诓煌膽?yīng)用間流轉(zhuǎn)時(shí),Cookie信息是可以隨用戶流量攜帶的。同時(shí),此技術(shù)降低了創(chuàng)建關(guān)聯(lián)實(shí)驗(yàn)時(shí)分桶資源的分配難度,只要跨越的實(shí)驗(yàn)組中有足夠的分桶可用,即可創(chuàng)建跨實(shí)驗(yàn)組的關(guān)聯(lián)實(shí)驗(yàn),對(duì)分桶的編號(hào)無(wú)要求。
[0119]與本申請(qǐng)實(shí)施例提供的網(wǎng)站測(cè)試系統(tǒng)中的用戶流量分配方法相對(duì)應(yīng),本申請(qǐng)實(shí)施例還提供了一種網(wǎng)站測(cè)試系統(tǒng)中的用戶流量分配裝置,該網(wǎng)站測(cè)試系統(tǒng)中包括至少兩個(gè)實(shí)驗(yàn)組,每個(gè)實(shí)驗(yàn)組具有唯一的標(biāo)識(shí),每個(gè)實(shí)驗(yàn)組內(nèi)包括位于多個(gè)分桶內(nèi)的多個(gè)實(shí)驗(yàn),每個(gè)分桶具有實(shí)驗(yàn)組內(nèi)唯一的標(biāo)識(shí),不同實(shí)驗(yàn)組的實(shí)驗(yàn)之間相對(duì)獨(dú)立,參見(jiàn)圖9,該裝置可以包括:
[0120]接收單元901,用于接收到用戶流量后,根據(jù)所述用戶流量對(duì)應(yīng)的訪問(wèn)請(qǐng)求中攜帶的信息,確定所述用戶流量對(duì)應(yīng)的用戶標(biāo)識(shí),以及與所述用戶流量匹配的實(shí)驗(yàn)組;
[0121]分桶標(biāo)識(shí)確定單元902,用于結(jié)合所述匹配的實(shí)驗(yàn)組的標(biāo)識(shí)以及所述用戶標(biāo)識(shí)進(jìn)行取模運(yùn)算,確定所述用戶流量在各個(gè)匹配的實(shí)驗(yàn)組中需進(jìn)入的分桶的標(biāo)識(shí);其中,在同一實(shí)驗(yàn)組中,用戶流量需進(jìn)入的分桶的標(biāo)識(shí)僅由所述用戶標(biāo)識(shí)決定,以便同一用戶的用戶流量對(duì)于同一實(shí)驗(yàn)組而言,需進(jìn)入的分桶的標(biāo)識(shí)是固定的,且上一實(shí)驗(yàn)組中進(jìn)入同一分桶的用戶流量平均分配到下一實(shí)驗(yàn)組的各個(gè)分桶中;
[0122]分配單元903,用于根據(jù)所述用戶流量在各匹配的實(shí)驗(yàn)組中需進(jìn)入的分桶的標(biāo)識(shí),將所述用戶流量分配到所述匹配的實(shí)驗(yàn)組對(duì)應(yīng)的分桶中。
[0123]其中,為了獲得更好的平衡離散效果,所述分桶標(biāo)識(shí)確定單元903具體可以包括:
[0124]運(yùn)算子單元,用于將實(shí)驗(yàn)組的標(biāo)識(shí)、所述用戶標(biāo)識(shí)結(jié)合黃金比例質(zhì)數(shù)進(jìn)行哈希運(yùn)算,并將哈希運(yùn)算的結(jié)果對(duì)實(shí)驗(yàn)組內(nèi)的分桶數(shù)進(jìn)行取模運(yùn)算;
[0125]確定子單元,用于根據(jù)取模運(yùn)算的結(jié)果確定所述用戶流量在各個(gè)匹配的實(shí)驗(yàn)組中需進(jìn)入的分桶的標(biāo)識(shí)。
[0126]其中,所述實(shí)驗(yàn)組的標(biāo)識(shí)以及用戶標(biāo)識(shí)均為整型數(shù)據(jù),為了進(jìn)一步提供平衡離散的效果,該裝置還可以包括:
[0127]第一相加運(yùn)算單元,用于將所述實(shí)驗(yàn)組的標(biāo)識(shí)加上一預(yù)置的第一長(zhǎng)整型數(shù)據(jù),得到實(shí)驗(yàn)組標(biāo)識(shí)相加結(jié)果;其中,針對(duì)不同的實(shí)驗(yàn)組,所述第一長(zhǎng)整型數(shù)據(jù)相等,且所述第一長(zhǎng)整型數(shù)據(jù)遠(yuǎn)大于實(shí)驗(yàn)組的標(biāo)識(shí),以使得針對(duì)不同的實(shí)驗(yàn)組得到的相加結(jié)果之間的比值趨近于I ;
[0128]第二相加運(yùn)算單元,用于將所述用戶的標(biāo)識(shí)加上一預(yù)置的第二長(zhǎng)整型數(shù)據(jù),得到用戶標(biāo)識(shí)相加結(jié)果;其中,針對(duì)不同的用戶,所述第二長(zhǎng)整型數(shù)據(jù)相等,且所述第二長(zhǎng)整型數(shù)據(jù)遠(yuǎn)大于用戶的標(biāo)識(shí),以使得針對(duì)不同的用戶得到的相加結(jié)果之間的比值趨近于I;
[0129]所述運(yùn)算子單元具體可以用于:
[0130]將所述實(shí)驗(yàn)組標(biāo)識(shí)相加結(jié)果、所述用戶標(biāo)識(shí)相加結(jié)果結(jié)合黃金比例質(zhì)數(shù)進(jìn)行哈希運(yùn)算。
[0131]其中,如果某實(shí)驗(yàn)為跨越至少兩個(gè)實(shí)驗(yàn)組的關(guān)聯(lián)實(shí)驗(yàn),則所述裝置還可以包括:
[0132]分桶流量對(duì)應(yīng)單元,用于將關(guān)聯(lián)實(shí)驗(yàn)在各個(gè)實(shí)驗(yàn)組中所在的分桶的用戶流量對(duì)應(yīng)起來(lái)。
[0133]其中,為了能夠支持關(guān)聯(lián)實(shí)驗(yàn)跨越的實(shí)驗(yàn)組位于不同的應(yīng)用上的情形,可以預(yù)先在配置文件中保存關(guān)聯(lián)實(shí)驗(yàn)所跨越的實(shí)驗(yàn)組的標(biāo)識(shí)、關(guān)聯(lián)實(shí)驗(yàn)在各個(gè)實(shí)驗(yàn)組中所在的分桶的標(biāo)識(shí),所述分桶流量對(duì)應(yīng)單元具體可以包括:
[0134]讀取子單元,用于當(dāng)用戶流量進(jìn)入當(dāng)前實(shí)驗(yàn)組時(shí)的某分桶時(shí),讀取所述配置文件;
[0135]判斷子單元,用于根據(jù)所述配置文件中記錄的信息,判斷該分桶中的實(shí)驗(yàn)是否為關(guān)聯(lián)實(shí)驗(yàn);
[0136]Cookie寫入子單元,用于如果是,則將所述配置文件中記錄的信息寫入到所述用戶流量的Cookie中;
[0137]Cookie讀取子單元,用于當(dāng)所述用戶流量到達(dá)下一實(shí)驗(yàn)組時(shí),通過(guò)讀取所述Cookie中的信息,確定所述用戶流量在所述下一實(shí)驗(yàn)組需進(jìn)入的分桶的標(biāo)識(shí)。
[0138]其中,該裝置還可以包括:
[0139]Cookie信息刪除單元,用于當(dāng)所述用戶流量穿過(guò)關(guān)聯(lián)實(shí)驗(yàn)所跨越的所有實(shí)驗(yàn)組后,將所述寫入到所述用戶流量的Cookie中的信息刪除,以便根據(jù)所述下一實(shí)驗(yàn)組的標(biāo)識(shí)以及所述用戶標(biāo)識(shí),確定所述用戶流量在下一實(shí)驗(yàn)組中需進(jìn)入的分桶的標(biāo)識(shí)。
[0140]在實(shí)際應(yīng)用中,所述實(shí)驗(yàn)可能包括帶條件的實(shí)驗(yàn),此時(shí),同一分桶中可以包括至少兩個(gè)帶條件的實(shí)驗(yàn),且同一分桶中的各實(shí)驗(yàn)的條件互斥。
[0141]該裝置還可以包括:
[0142]條件判斷單元,用于當(dāng)某用戶流量進(jìn)入到一包括有至少兩個(gè)帶條件的實(shí)驗(yàn)的分桶中時(shí),判斷所述用戶流量是否與某實(shí)驗(yàn)的條件相匹配;
[0143]第一參數(shù)配置單元,用于如果條件判斷單元判斷結(jié)果為是,則采用該實(shí)驗(yàn)里設(shè)置的值對(duì)頁(yè)面中相應(yīng)的參數(shù)進(jìn)行配置;
[0144]第二參數(shù)配置單元,用于如果條件判斷單元判斷結(jié)果為否,如果所述用戶流量與各個(gè)實(shí)驗(yàn)的條件均不匹配,則采用默認(rèn)的值對(duì)頁(yè)面中相應(yīng)的參數(shù)進(jìn)行配置。
[0145]在實(shí)際應(yīng)用中,所述至少兩個(gè)實(shí)驗(yàn)組可以是按照頁(yè)面中的功能模塊劃分的至少兩個(gè)實(shí)驗(yàn)組,每個(gè)功能模塊對(duì)應(yīng)一個(gè)實(shí)驗(yàn)組。
[0146]或者,所述至少兩個(gè)實(shí)驗(yàn)組包括按照頁(yè)面中的功能模塊以及功能模塊內(nèi)部的邏輯層次劃分的至少兩個(gè)實(shí)驗(yàn)組,每個(gè)邏輯層次對(duì)應(yīng)一個(gè)實(shí)驗(yàn)組,其中,同一功能模塊內(nèi)的各個(gè)邏輯層次對(duì)應(yīng)的實(shí)驗(yàn)組中包含的分桶數(shù)量相同。
[0147]為了獲得更好的離散效果,可以使得所有實(shí)驗(yàn)組中包含的分桶數(shù)量均相同。
[0148]另外,該裝置還可以包括:
[0149]順序確定單元,用于根據(jù)預(yù)定的信息,確定所述用戶流量進(jìn)入所述匹配的實(shí)驗(yàn)組的先后順序,這樣在確定出用戶流量在各匹配的實(shí)驗(yàn)組中需進(jìn)入的分桶的標(biāo)識(shí)之后,可以根據(jù)所述匹配的實(shí)驗(yàn)組的先后順序,以及用戶流量在各匹配的實(shí)驗(yàn)組中需進(jìn)入的分桶的標(biāo)識(shí),將所述用戶流量分配到所述匹配的實(shí)驗(yàn)組對(duì)應(yīng)的分桶中。
[0150]由于一個(gè)用戶流量需要穿過(guò)多個(gè)實(shí)驗(yàn)組中的多個(gè)實(shí)驗(yàn),因此,最后在向用戶顯示W(wǎng)eb頁(yè)面時(shí),可以將各個(gè)實(shí)驗(yàn)中的值都帶入到對(duì)應(yīng)的參數(shù)中,當(dāng)然,用戶流量在穿過(guò)各個(gè)實(shí)驗(yàn)組時(shí)是有先后順序的,因此,一般可能不會(huì)同時(shí)獲得各個(gè)實(shí)驗(yàn)中的值,因此,該裝置還可以包括:
[0151]保存單元,用于將用戶流量分別穿過(guò)的實(shí)驗(yàn)的標(biāo)識(shí)、分桶的標(biāo)識(shí)、各實(shí)驗(yàn)組參數(shù)的值保存到該用戶流量所在線程的會(huì)話存儲(chǔ)中,以便程序在執(zhí)行過(guò)程中,到該會(huì)話存儲(chǔ)中讀取各參數(shù)的取值,并進(jìn)行頁(yè)面的顯示。
[0152]總之,在本申請(qǐng)實(shí)施例提供的上述裝置中,可以結(jié)合實(shí)驗(yàn)組的標(biāo)識(shí)以及用戶流量對(duì)應(yīng)的用戶標(biāo)識(shí)進(jìn)行取模運(yùn)算,來(lái)確定用戶流量在各個(gè)實(shí)驗(yàn)組中需進(jìn)入的分桶的標(biāo)識(shí);其中,在同一實(shí)驗(yàn)組中,用戶流量需進(jìn)入的分桶的標(biāo)識(shí)僅由用戶標(biāo)識(shí)決定,以便同一用戶的用戶流量對(duì)于同一實(shí)驗(yàn)組而言,需進(jìn)入的分桶的標(biāo)識(shí)是固定的,這樣可以就可以達(dá)到會(huì)話粘連的目的;同時(shí),根據(jù)取模運(yùn)算,可以是上一實(shí)驗(yàn)組中進(jìn)入同一分桶的用戶流量平均分配到下一實(shí)驗(yàn)組的各個(gè)分桶中,達(dá)到離散分配的目的,降低各實(shí)驗(yàn)組中的實(shí)驗(yàn)對(duì)下層實(shí)驗(yàn)組中各實(shí)驗(yàn)的干擾度,并且同一實(shí)驗(yàn)組中的各實(shí)驗(yàn)受到的干擾度基本相同,因此,可以保證同一實(shí)驗(yàn)組內(nèi)各實(shí)驗(yàn)效果的可比性。
[0153]通過(guò)以上的實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請(qǐng)可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn)?;谶@樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中,如R0M/RAM、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
[0154]本說(shuō)明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于系統(tǒng)或系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述得比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。以上所描述的系統(tǒng)及系統(tǒng)實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。
[0155]以上對(duì)本申請(qǐng)所提供的網(wǎng)站測(cè)試系統(tǒng)中的用戶流量分配方法及裝置,進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本申請(qǐng)的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請(qǐng)的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會(huì)有改變之處。綜上所述,本說(shuō)明書內(nèi)容不應(yīng)理解為對(duì)本申請(qǐng)的限制。
【權(quán)利要求】
1.一種網(wǎng)站測(cè)試系統(tǒng)中的用戶流量分配方法,其特征在于,所述網(wǎng)站測(cè)試系統(tǒng)中包括至少兩個(gè)實(shí)驗(yàn)組,每個(gè)實(shí)驗(yàn)組具有唯一的標(biāo)識(shí),每個(gè)實(shí)驗(yàn)組內(nèi)包括位于多個(gè)分桶內(nèi)的多個(gè)實(shí)驗(yàn),每個(gè)分桶具有實(shí)驗(yàn)組內(nèi)唯一的標(biāo)識(shí),不同實(shí)驗(yàn)組的實(shí)驗(yàn)之間相對(duì)獨(dú)立,所述方法包括: 接收到用戶流量后,根據(jù)所述用戶流量對(duì)應(yīng)的訪問(wèn)請(qǐng)求中攜帶的信息,確定所述用戶流量對(duì)應(yīng)的用戶標(biāo)識(shí),以及與所述用戶流量匹配的實(shí)驗(yàn)組; 結(jié)合所述匹配的實(shí)驗(yàn)組的標(biāo)識(shí)以及所述用戶標(biāo)識(shí)進(jìn)行取模運(yùn)算,確定所述用戶流量在各個(gè)匹配的實(shí)驗(yàn)組中需進(jìn)入的分桶的標(biāo)識(shí);其中,在同一實(shí)驗(yàn)組中,用戶流量需進(jìn)入的分桶的標(biāo)識(shí)僅由所述用戶標(biāo)識(shí)決定,且上一實(shí)驗(yàn)組中進(jìn)入同一分桶的用戶流量平均分配到下一實(shí)驗(yàn)組的各個(gè)分桶中; 根據(jù)所述用戶流量在各匹配的實(shí)驗(yàn)組中需進(jìn)入的分桶的標(biāo)識(shí),將所述用戶流量分配到所述匹配的實(shí)驗(yàn)組對(duì)應(yīng)的分桶中。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述結(jié)合所述匹配的實(shí)驗(yàn)組的標(biāo)識(shí)以及所述用戶標(biāo)識(shí)進(jìn)行取模運(yùn)算,確定所述用戶流量在各個(gè)匹配的實(shí)驗(yàn)組中需進(jìn)入的分桶的標(biāo)識(shí),包括: 將實(shí)驗(yàn)組的標(biāo)識(shí)、所述用戶標(biāo)識(shí)結(jié)合黃金比例質(zhì)數(shù)進(jìn)行哈希運(yùn)算,并將哈希運(yùn)算的結(jié)果對(duì)實(shí)驗(yàn)組內(nèi)的分桶數(shù)進(jìn)行取模運(yùn)算; 根據(jù)取模運(yùn)算的結(jié)果確定所述用戶流量在各個(gè)匹配的實(shí)驗(yàn)組中需進(jìn)入的分桶的標(biāo)識(shí)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述實(shí)驗(yàn)組的標(biāo)識(shí)以及用戶標(biāo)識(shí)均為整型數(shù)據(jù),所述將實(shí)驗(yàn)組的標(biāo)識(shí)、所述用戶標(biāo)識(shí)結(jié)合黃金比例大質(zhì)數(shù)進(jìn)行哈希運(yùn)算之前還包括: 將所述實(shí)驗(yàn)組的標(biāo)識(shí)加上一預(yù)置的第一長(zhǎng)整型數(shù)據(jù),得到實(shí)驗(yàn)組標(biāo)識(shí)相加結(jié)果;其中,針對(duì)不同的實(shí)驗(yàn)組,所述第一長(zhǎng)整型數(shù)據(jù)相等,且所述第一長(zhǎng)整型數(shù)據(jù)遠(yuǎn)大于實(shí)驗(yàn)組的標(biāo)識(shí),以使得針對(duì)不同的實(shí)驗(yàn)組得到的相加結(jié)果之間的比值趨近于I ; 將所述用戶的標(biāo)識(shí)加上一預(yù)置的第二長(zhǎng)整型數(shù)據(jù),得到用戶標(biāo)識(shí)相加結(jié)果;其中,針對(duì)不同的用戶,所述第二長(zhǎng)整型數(shù)據(jù)相等,且所述第二長(zhǎng)整型數(shù)據(jù)遠(yuǎn)大于用戶的標(biāo)識(shí),以使得針對(duì)不同的用戶得到的相加結(jié)果之間的比值趨近于I ; 所述將實(shí)驗(yàn)組的標(biāo)識(shí)、所述用戶標(biāo)識(shí)結(jié)合黃金比例質(zhì)數(shù)進(jìn)行哈希運(yùn)算包括: 將所述實(shí)驗(yàn)組標(biāo)識(shí)相加結(jié)果、所述用戶標(biāo)識(shí)相加結(jié)果結(jié)合黃金比例質(zhì)數(shù)進(jìn)行哈希運(yùn)笪
ο
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,如果某實(shí)驗(yàn)為跨越至少兩個(gè)實(shí)驗(yàn)組的關(guān)聯(lián)實(shí)驗(yàn),所述方法還包括: 將關(guān)聯(lián)實(shí)驗(yàn)在各個(gè)實(shí)驗(yàn)組中所在的分桶的用戶流量對(duì)應(yīng)起來(lái)。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,預(yù)先在配置文件中保存關(guān)聯(lián)實(shí)驗(yàn)所跨越的實(shí)驗(yàn)組的標(biāo)識(shí)、關(guān)聯(lián)實(shí)驗(yàn)在各個(gè)實(shí)驗(yàn)組中所在的分桶的標(biāo)識(shí),所述將關(guān)聯(lián)實(shí)驗(yàn)在各個(gè)實(shí)驗(yàn)組中所在的分桶的用戶流量對(duì)應(yīng)起來(lái)包括: 當(dāng)用戶流量進(jìn)入當(dāng)前實(shí)驗(yàn)組時(shí)的某分桶時(shí),讀取所述配置文件; 根據(jù)所述配置文件中記錄的信息,判斷該分桶中的實(shí)驗(yàn)是否為關(guān)聯(lián)實(shí)驗(yàn); 如果是,則將所述配置文件中記錄的信息寫入到所述用戶流量的Cookie中; 當(dāng)所述用戶流量到達(dá)下一實(shí)驗(yàn)組時(shí),通過(guò)讀取所述Cookie中的信息,確定所述用戶流量在所述下一實(shí)驗(yàn)組需進(jìn)入的分桶的標(biāo)識(shí)。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,還包括: 當(dāng)所述用戶流量穿過(guò)關(guān)聯(lián)實(shí)驗(yàn)所跨越的所有實(shí)驗(yàn)組后,將所述寫入到所述用戶流量的Cookie中的信息刪除,以便根據(jù)所述下一實(shí)驗(yàn)組的標(biāo)識(shí)以及所述用戶標(biāo)識(shí),確定所述用戶流量在下一實(shí)驗(yàn)組中需進(jìn)入的分桶的標(biāo)識(shí)。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述實(shí)驗(yàn)包括帶條件的實(shí)驗(yàn),同一分桶中包括至少兩個(gè)帶條件的實(shí)驗(yàn),且同一分桶中的各實(shí)驗(yàn)的條件互斥。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,還包括: 當(dāng)某用戶流量進(jìn)入到一包括有至少兩個(gè)帶條件的實(shí)驗(yàn)的分桶中時(shí),判斷所述用戶流量是否與某實(shí)驗(yàn)的條件相匹配; 如果是,則采用該實(shí)驗(yàn)里設(shè)置的值對(duì)頁(yè)面中相應(yīng)的參數(shù)進(jìn)行配置; 否則,如果所述用戶流量與各個(gè)實(shí)驗(yàn)的條件均不匹配,則采用默認(rèn)的值對(duì)頁(yè)面中相應(yīng)的參數(shù)進(jìn)行配置。
9.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述至少兩個(gè)實(shí)驗(yàn)組包括按照頁(yè)面中的功能模塊劃分的至少兩個(gè)實(shí)驗(yàn)組,每個(gè)功能模塊對(duì)應(yīng)一個(gè)實(shí)驗(yàn)組。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述至少兩個(gè)實(shí)驗(yàn)組包括按照頁(yè)面中的功能模塊以及功能模塊內(nèi)部的邏輯層次劃分的至少兩個(gè)實(shí)驗(yàn)組,每個(gè)邏輯層次對(duì)應(yīng)一個(gè)實(shí)驗(yàn)組,其中,同一功能模塊內(nèi)的各個(gè)邏輯層次對(duì)應(yīng)的實(shí)驗(yàn)組中包含的分桶數(shù)量相同。
11.根據(jù)權(quán)利要求1至10任一項(xiàng)所述的方法,其特征在于,所有實(shí)驗(yàn)組中包含的分桶數(shù)量均相同。
12.根據(jù)權(quán)利要求1至10任一項(xiàng)所述的方法,其特征在于,所述根據(jù)所述用戶流量在各匹配的實(shí)驗(yàn)組中需進(jìn)入的分桶的標(biāo)識(shí),將所述用戶流量分配到所述匹配的實(shí)驗(yàn)組對(duì)應(yīng)的分桶中之前,還包括: 根據(jù)預(yù)定的信息,確定所述用戶流量進(jìn)入所述匹配的實(shí)驗(yàn)組的先后順序。
13.根據(jù)權(quán)利要求1至10任一項(xiàng)所述的方法,其特征在于,還包括: 將用戶流量分別穿過(guò)的實(shí)驗(yàn)的標(biāo)識(shí)、分桶的標(biāo)識(shí)、各實(shí)驗(yàn)組參數(shù)的值保存到該用戶流量所在線程的會(huì)話存儲(chǔ)中,以便程序在執(zhí)行過(guò)程中,到該會(huì)話存儲(chǔ)中讀取各參數(shù)的取值,并進(jìn)行頁(yè)面的顯示。
14.一種網(wǎng)站測(cè)試系統(tǒng)中的用戶流量分配裝置,其特征在于,所述網(wǎng)站測(cè)試系統(tǒng)中包括至少兩個(gè)實(shí)驗(yàn)組,每個(gè)實(shí)驗(yàn)組具有唯一的標(biāo)識(shí),每個(gè)實(shí)驗(yàn)組內(nèi)包括位于多個(gè)分桶內(nèi)的多個(gè)實(shí)驗(yàn),每個(gè)分桶具有實(shí)驗(yàn)組內(nèi)唯一的標(biāo)識(shí),不同實(shí)驗(yàn)組的實(shí)驗(yàn)之間相對(duì)獨(dú)立,所述裝置包括: 接收單元,用于接收到用戶流量后,根據(jù)所述用戶流量對(duì)應(yīng)的訪問(wèn)請(qǐng)求中攜帶的信息,確定所述用戶流量對(duì)應(yīng)的用戶標(biāo)識(shí),以及與所述用戶流量匹配的實(shí)驗(yàn)組; 分桶標(biāo)識(shí)確定單元,用于結(jié)合所述匹配的實(shí)驗(yàn)組的標(biāo)識(shí)以及所述用戶標(biāo)識(shí)進(jìn)行取模運(yùn)算,確定所述用戶流量在各個(gè)匹配的實(shí)驗(yàn)組中需進(jìn)入的分桶的標(biāo)識(shí);其中,在同一實(shí)驗(yàn)組中,用戶流量需進(jìn)入的分桶的標(biāo)識(shí)僅由所述用戶標(biāo)識(shí)決定,并且上一實(shí)驗(yàn)組中進(jìn)入同一分桶的用戶流量平均分配到下一實(shí)驗(yàn)組的各個(gè)分桶中; 分配單元,用于根據(jù)所述用戶流量在各匹配的實(shí)驗(yàn)組中需進(jìn)入的分桶的標(biāo)識(shí),將所述用戶流量分配到所述匹配的實(shí)驗(yàn)組對(duì)應(yīng)的分桶中。
【文檔編號(hào)】G06F17/30GK104281611SQ201310284877
【公開日】2015年1月14日 申請(qǐng)日期:2013年7月8日 優(yōu)先權(quán)日:2013年7月8日
【發(fā)明者】陳東 申請(qǐng)人:阿里巴巴集團(tuán)控股有限公司