安排!活动素材的亿级用户精准投放
1.背景
??隨著閑魚用戶快速增長,運營活動越來越趨于精細和個性化,運營會根據用戶偏好為其投放合適的活動,如下圖所示在閑魚首頁商品展示時,會在商品的列表中插入活動Banner,通過這些活動banner引導用戶進入到相應活動會場,實現會場導流。閑魚投放系統負責閑魚運營活動的配置、管理、投放。
主要解決了以下幾個問題
??1.配置環境隔離問題,根據開發規范,任何線上業務必須先進行線下環境發布,測試驗證通過后再發布上線。所以提供的管理平臺需要擁有線上和線下環境隔離的能力。
??2.檢索中的性能問題,在同一資源位下會配置多個活動,每次檢索時需要把該資源位下的所有活動拉出來,按照條件進行篩選出符合要求的活動,這個過程會隨著資源位下的活動增多檢索遇到性能瓶頸。
??3.人群管理問題,在活動中會配置投放的人群,每次檢索活動時人群作為活動的檢索條件,需要驗證用戶是否屬于當前活動的人群,所以需要解決用戶和人群關系的管理。
??4.AB測試問題,運營投放的活動往往需要進行AB測試比較不同策略的表現,此時需要提供AB測試的能力。
下面將通過介紹閑魚投放系統設計、技術方案設計和實現過程,進一步闡述如何解決上面提出的四個問題。
2.系統架構設計
??閑魚投放系統是一個配置管理和配置檢索的系統,換句話講他不生產任何活動素材,他只是活動素材的搬運工。下面介紹閑魚投放的系統設計。
??如上圖所示閑魚投放系統共分為了活動素材層、投放配置層、業務流程層和應用層四個層次。
??活動素材層是對在閑魚投放系統中所有素材源的匯總,目前閑魚投放中主要匯集了三種素材魯班素材、馬赫素材、TPP素材,魯班素材提供了用戶個性化Banner的能力,他的原理是根據用戶的行為獲取到偏好的商品,然后把商品圖和素材模板組合為一個Banner;馬赫素材提供規則圈選商品,他的原理是利用規則引擎把規則轉換為SQL語句,然后利用該SQL在商品表中撈出符合規則的商品,同時馬赫利用流計算能力對增量商品也實現了實時的規則圈選。TPP素材提個性化商品推薦,例如首頁的商品推薦和猜你喜歡的商品推薦,TPP作為個性化推薦平臺,可以根據不同的算法實現不同的推薦策略。
??投放配置層是開放給運營能力的匯總,包含活動配置、環境隔離、數據報表三種能力。活動配置是對一個資源位下所有投放行為的具體配置,如下圖所示
??每個資源位會投放多個活動,活動與活動之間需要進行排期,每個投放活動中包含人群和素材兩類信息,人群用來確定該活動投放的對象,素材用來確定該活動投放的內容,同時在人群下支持AB的能力。環境隔離是為了能夠區分線上和線下業務,保證線上的投放環境在線下充分驗證后再進行上線。數據報表是對所有投放活動關鍵指標的數據匯總。
??業務流程層是閑魚投放系統的關鍵,主要負責投放活動的檢索,根據調用方傳入的用戶信息和資源位信息,返回該資源位下符合該用戶的活動。
??具體的檢索邏輯如上圖所示,首先在DB中查詢當前資源位下的所有在線活動,然后依次過濾每個活動下的人群信息是否符合當前用戶,從符合該用戶的活動列表中選取一個活動,如果該活動下有AB測試,需要請求AB測試平臺獲取AB測試中配置的素材信息,最后返回該活動下的素材內容,客戶端拿到活動素材后進行展示。
??應用層是對客戶端能力的匯總,包括獲取素材、素材樣式展示、數據埋點。素材展示是直接與用戶交互的部分,需要前端提供多種展示樣式,數據埋點是為了驗證AB策略和收集活動關鍵指標數據。
3. 技術方案設計
??在上文中我們提到閑魚投放面臨四個需要解決的問題,分別是環境隔離問題、活動檢索問題、人群管理問題、AB能力問題。下面將分別從這幾個問題出發介紹解決的方法。
3.1 人群管理問題
??人群管理使用的是集團內的奧格人群平臺,他為我們提供了人群圈選和人群驗證的能力,在很大程度上解放了閑魚投放的人群管理,下面簡單的介紹一下該平臺的實現原理。
??如上圖所示展示了奧格幾個核心功能點,實現原理是這樣的,首先平臺會提供給用戶可選擇的規則,然后利用規則引擎把所選的規則,生成SQL查詢語句和流計算規則,SQL查詢語句用來離線圈選用戶和流計算規則用來實時篩選新增用戶,通過離線規則和在線規則實現了奧格的人群圈選,在人群驗證階段,首先利用倒排檢索的思想,用戶和人群的關系利用倒排數據結構標識,該方法解決了單用戶與多人群關系驗證的效率問題,最后利用多級緩存和熱點數據本地緩存的方式解決人群檢索RT問題。
3.2 AB測試管理問題
??AB測試是用來驗證方案的常用方法,常用的AB測試方案大多是用戶唯一屬性取模的方式按比例劃分用戶,但是會面臨很多復雜的問題1.按照用戶的id進行取模計算,對于未登錄用戶處理是一個常被忽略的問題。2.測試白名單管理,在AB測試時需要把特定人員劃分到特定測試桶里。3.多個AB正交測試,如果有多個AB測試,此時需要正交測試時會出現更復雜的情況。在閑魚投放中使用了集團的一休AB平臺,一休提供基于用戶、設備等多維度AB策略,同時支持白名單與正交AB測試的復雜場景,在AB基本能力的基礎上提供了數據分析的能力,實現了調用到數據管理的一體化。
3.3環境隔離問題
??解決環境隔離問題主要是為了方便測試,先在線下看效果,然后再把數據配置到線上。為了實現環境隔離迭代兩次技術方案。
??首先介紹第一個方案,依照總體功能設計我希望平臺中每個模塊都可以靈活復用,可以利用已有模塊,快速搭建出滿足業務要求的投放活動,所以從業務角度進行了抽象,把能拆分的模塊盡可能的抽象出來,最終的實體關系如下圖所示。從業務邏輯角度共抽象了6個實體分別是資源位(Resource)、活動(Activity)、人群(Crowd)、素材(Data Source)、資源位和活動的關系(Resource Plan)、活動和人群素材的關系(Activity Plan)實體,每個模塊之間可以按照下圖的關系進行自由組合成一個投放活動。
??在該方案中利用每個實體中的env字段解決環境隔離問題,無論是在投放活動配置還是在檢索過程中,只可以利用相同env字段的實體,該方法完全實現了環境隔離,但是在實際的應用中效果卻不是很好,因為利用一份數據表中的env字段實現環境隔離,所以線上和線下對應的Resource Plan和Activity Plan關系表中關聯的實體ID不同,那么將無法實現線下配置直接拷貝到線上,此時需要在線下和線上兩次配置,由于配置過于復雜增加錯誤風險。
??下面介紹第二個方案,第二個技術方案中對方案一中提出的問題進行優化。具體的設計如下圖所示:
??如上圖所示,實體對象由6個轉換為4個,下面一次介紹這些實體和如何解決環境隔離問題。
??首先介紹新引入的Data Schema實體,DataSchema是由開發同學負責,提供了一個配置好的JSON配置模板,他與Resource進行關聯,意味著當前Resource下的所有DataSource都將按照該DataSchema提供的JSON模板進行配置,同時在解析時也按照當前的DataSchema進行解析
??Resource不再區分線上和線下環境,因為Resource無論是線上和線下他總是存在的并且不會改變的,所以區分線上和線下是沒有必要的。
??DataSource不再用env字段區分線上和線下環境,利用preData和onlineData進行區分線上和線下配置,由于引入了DataSchema模板,所以徹底解放了DataSource,他不再需要進行繁瑣的配置,只需按照DataSchema把所有的需要字段都配置到對應的Schema中即可。這樣在線上和線下DataSource是一條數據主鍵不再改變。
??Activity實體是DataSource和Resource的關系實體,同時包括活動的人群、起止時間等屬性。由于DataSource和Resource實體線上和線下環境中主鍵ID都不會改變,那么意味著Activity可以把線下的配置直接同步到線上,在同步過程中需要做的是如果線上沒有配置就插入一條如果存在就更新。那么怎么映射Activity線下和線上的關系呢,在Activity里面引入了mapId字段,線下的Activity實體在mapId中存儲線上Activity實體的主鍵Id,利用這種映射關系實現了線下和線上的映射。
??具體的如上圖所示,通過這種表和表之間映射關系,實現了環境隔離問題,同時簡化了業務中的實體,讓配置更簡單更易用。
3.4活動檢索問題
??在實際應用中,我們遇到了檢索能力的性能瓶頸,根據每次檢索時都需要拉出當前資源位下的全部活動,然后按照起止時間、人群作為過濾條件,篩選出滿足當前用戶的活動列表。以上過程中每次檢索都會發生與數據庫的IO操作。當資源位和訪問QPS增多時,數據庫IO操作將成倍數增長,此時會成為檢索的瓶頸,所以在以上的技術方案中,需要一個完備的緩存方案支撐檢索的正常運行。按照常規的緩存設計方案進行了如下的緩存方案設計。
??所有的查詢都是先進行緩存查詢,如果未命中再查詢數據庫,把查詢到的數據回寫到緩存中。對于所有的更新操作,都是先更新數據庫,然后再失效緩存,在更新活動時,需要在失效活動緩存的同時,也要失效該活動對應資源位下活動列表的緩存。
??但是在使用過程中遇到了一個問題,資源位下的活動列表存儲采用了kv結構,key為資源位ID,value為活動列表的JSON序列化,當資源位下的活動增多時value也會隨著膨脹最后超出閾值,所以把活動對象進行了簡化僅存儲活動Id和人群Id。優化后檢索過程將有所變化如下圖所示:
4.總結與展望
4.1總結
??通過以上的整體功能設計、技術方案設計、代碼實現,介紹了一個投放平臺從設計到實現過程中遇到的問題點和解決方案。目前投放平臺已經在閑魚的用戶實時觸達、首頁feeds投放、淘寶閑魚小程序投放中使用,完美支持運營根據人群精準投放活動。
4.2展望
??閑魚素材投放平臺但仍有需要持續完善的地方,首先是精準人群的個性化,例如在首頁的投放中,針對圈選的人群透出的Banner圖片都是一樣的,目前我們的投放最小粒度是人群未來將會做到個人。然后是投放能力自優化,目前活動針對資源位的爭奪還是利用權重、人群、起止時間作為前置條件,未來將會通過投放數據回流利用算法計算其關鍵指標實現投放的自優化。同時閑魚素材投放將對接集團內部的更多優秀的素材提供源豐富閑魚的活動。
#阿里云開年Hi購季#幸運抽好禮!
點此抽獎:https://www.aliyun.com/acts/product-section-2019/yq-lottery?utm_content=g_1000042901
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的安排!活动素材的亿级用户精准投放的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手把手教程:用Python开发一个自然语
- 下一篇: 开发函数计算的正确姿势——网页截图服务