個性化推薦系統、搜索引擎、廣告系統,這些系統都需要在線上不斷上線,不斷優化,優化之后怎么確定是好是壞。這時就需要ABTest來確定,最近想的辦法、優化的算法、優化的邏輯數據是正向的,是有意義的,是提升數據效果的。
ab需求能方便測試,提供界面快速調整流量,調整流量后能夠方便看效果變化,以及不同ab分支算法對比到底是a算法好、還是b算法好、還是c算法好。再有就是白名單配置上線新算法時,實現新算法上線測試,驗證程序是否正確。
根據ABtest需求,系統有三個大的系統構成。一個系統是ABTest配置管理平台用於管理每個ab需求。一個是ABTest實時分流服務,根據用戶設備信息、用戶信息進行ab分流。一個系統是實時效果分析統計,將分流后程序點擊、瀏覽、gmv轉化通過hive、hadoop程序統計后,在統計平台上進行展示。
ABTest配置管理平台,平台設計為每一個ab測試生成唯一id,圍繞id生成測試對象,對象包含各種分組配置,每一組分組配置包含生效時間。配置管理用戶白名單,白名單用戶會直接分配到配置分流,而不根據算法計算分配到某個分支,白名單既能對分支算法進行測試,避免找多個用戶看用戶是否在需要測試算法分支,當產品、運營需要看當前新算法推出文章、商品到底是什么情況也可通過白名單方便實現。
在線實時分流服務目的是提供一個通用線上服務計算分流,返回分流結果。線上服務根據ab分流選擇算法路徑給用戶提供個性化數據。ab服務實現需要先判斷用戶是否在白名單中,在白名單中直接將白名單配置分流返回。
實時分流服務算法設計為接口,接口即是協議實現接口算法皆可用以線上分流,現平台用設備尾號進行hash以保證用戶流量均分,避免流量未打散、均分導致線上效果受影響。這一塊還可以進行分層支持,分層ab好處是可以同時進行大量ab算法。能快速同時進行多組線上實驗,快速找到好的方法提升線上效果。
實時分流服務作為基礎服務,線上所有業務服務都會訪問,算法正確性、服務穩定性、性能都極其重要。分流算法正確性服務先在線上試運行,一段時間后基本沒有問題。穩定性、性能需要極高因為線上服務均要調用它。架構設計方式配置管理平台配置信息要緩存到本地緩存中,避免每次用戶請求請求mysql數據庫,每分鍾幾百萬次請求這對數據庫是災難。當配置有變化后通過zookeeper通知變化,或定時30s去拉去配置都是很好的實現。性能要好因為線上服務均依賴它,它慢會導致線上服務慢。算法實現要簡單明了,避免不必要循環以及邏輯,這點可通過review來保證。
統計分析平台,有了好用的配置管理平台,方便高性能的線上服務,統計分析作為邏輯、算法、優化是否有意義最終標准。要求是實時數據、離線數據統計能通過圖表方便直觀查到,並且數據要正確有一定延時可以接受、准確性是更重要的指標。
通過ABTest平台方便我們不僅僅方便做搜索引擎、推薦系統持續優化,其實線上UI、文案等各種優化,均可以通過ab來科學、直觀、方便分析,到底是正向效果、沒有效果、還是負向效果,講科學避免拍腦袋。ab白名單還可以用來提供服務白名單服務,結合日志服務實現線上白名單服務,既方便定位問題,又能避免大量日志導致線上服務性能差。
美團 ab 實驗平台 https://tech.meituan.com/2019/11/28/advertising-performance-experiment-configuration-platform.html
微信搜索:mydevclub
微信掃碼或長按二維碼:
