Conference Paper · May 2018 The Anatomy of a Large-Scale Online
Experimentation Platform。nginx
由於工做負責和ABTest相關的事情,因此對ABTest系統理論與工程落地狀況一直在調研,根據上面這篇論文,咱們一塊兒來學習下微軟EXP系統的工程實現。摘要及其相關工做啥的廢話略過,先放一張架構圖:
web
整個系統包含四部分:算法
experiment portal
:portal屬於一個實驗管理後臺系統,爲實驗者與實驗系統之間提供交互接口,實驗者能夠方便的在系統中建立,配置,運行並分析實驗。其中系統包含三個重要的組件:後端
實驗管理界面應具備如下功能:瀏覽器
re-randomization
:使用歷史數據批量作AA實驗,通常經過AA實驗選擇最合適的hash算法,目的是爲了讓樣本儘量均勻,而後才能作AB實驗,爲了提升銷量,巧妙的使用歷史數據作AA,這個過程叫作SeedFinder
。experiment execution service
這個是ABTest的核心服務,爲各個接入AB的服務分配實驗變量。每一個變量V是一個參數集合,實驗能夠表示爲E{V1, V2}, 如V1實驗組,V2對照組。isolation group 會切分紅多個變量,以下圖:
緩存
每一個變量都會被關聯上一個或多個isolation group,好比存在兩個實驗E1{V1, V2}, E2{V3, V4},E1關聯隔離組G1,G2。同時E2的變量也關聯G1,G2。 會發現兩個實驗變量所關聯的隔離組是有交集的,那麼這時候說明兩個實驗是會相互影響的,不能同時進行。網絡
列舉了三種實驗組參數配置下發方式:
總之都是從experiment execution service
拿到實驗組參數配置並緩存在本地。session
experiment execution service
交互,對請求進行增強(填充改次請求 所對應的實驗參數配置)。這種方式不適合客戶端實驗, 由於客戶端用戶操做不少都是本地行爲,沒有發生網絡交互experiment execution service
週期性交互還有個配置管理服務 去控制experiment execution service
進行一個實驗下不一樣的變量分配的開關, 該開關配置應該放到lib裏架構