天天看點

一個PUSH系統是怎麼做到友好觸達的?

作者:閑魚技術-駱彬

  在Omega實時觸達系統的系列技術文章中,已經對

行為采集中心 CEP規則中心 使用者觸達中心

三個子系統進行了詳細介紹。Omega實時觸達系統的核心能力是基于使用者行為實時推送給使用者感興趣的内容,但是頻繁的觸達對使用者體驗是巨大的傷害,是以,對于一個實時觸達系統,如何做到對使用者友好的觸達,是一個十分關鍵的問題。

  常見的優化方式有觸達素材的擇優和疲勞機制的控制,本文會主要介紹在使用者觸達疲勞控制方面,我們是如何設計靈活精細的疲勞控制政策去處理在觸達過程中對使用者造成打擾的問題。

實踐中遇到問題

  在使用者觸達中心的設計上,我們采用了靈活的可插拔設計,每個業務可以根據自己的需求配置不同的過濾器組合,但接入的業務都必須配置疲勞控制政策來避免對使用者的打擾。在接入早期疲勞控制能力的業務中,我們發現某些使用者會在相鄰兩天收到相同的觸達内容;在一個周期允許觸達多次的場景中,某些使用者的觸達時間比較集中。這些問題會對使用者造成一定的打擾,會影響到使用者的使用體驗,可能導緻使用者屏蔽通知甚至是解除安裝app。

一個PUSH系統是怎麼做到友好觸達的?

metaq:是阿裡内部使用的MQ架構;

hermes:為Omega提供素材管理與擇優的能力;

定位問題的原因

  在疲勞機制1.0版本的設計中,我們使用了疲勞視窗的概念,疲勞視窗的時長即為疲勞周期,每個業務擁有各自的疲勞周期。如下圖所示,由于疲勞周期的劃分起點是相同的常量,是以,每個時間點都可以根據業務的疲勞周期換算出對應的疲勞視窗,進而實作對業務疲勞的控制。

一個PUSH系統是怎麼做到友好觸達的?

疲勞機制1.0

  出現相鄰兩天收到相同觸達内容的原因是因為在疲勞機制的設計上,疲勞周期一旦确定,每個疲勞視窗就随之固定下來,兩個疲勞視窗是緊鄰的,分屬兩個疲勞周期的觸達就可能先後兩天成功觸達;另外,在動态調整疲勞周期時,原有的疲勞資料會瞬時全部失效,這也會導緻使用者短時間内收到相同的觸達内容;而在一個周期允許觸達多次的場景中,存在觸達可能比較集中的問題,是因為使用者在某段時間的操作多次觸發了業務規則,而疲勞機制中沒有對觸達間隔進行限制,最終會出現某些使用者的觸達時間比較集中的問題。

新疲勞機制的設計

  在通用的使用者疲勞度設計中,大多會根據系統承載業務的特點,進行分層處理多元度控制,以滿足不同場景的需求。比如,某些營銷投放系統,其對應的是投放展位,它将疲勞控制分為:展位、方案、單元三層進行控制。其中,一個展位可以投放多個營銷方案,而一個營銷方案則包含多個投放廣告,營銷投放系統更關注的是展位的疲勞控制,業務方關注的則是營銷方案的疲勞控制,分層控制有利于多方疲勞控制的協調處理。

  在疲勞機制2.0的設計中,我們參考了這種設計理念,對于實時觸達系統的核心是使用者在哪些場景下觸達哪些業務。其中實時觸達系統更側重于使用者和場景的控制,是以根據不同的控制次元劃分出了三個疲勞控制次元:

• 使用者次元:使用者每日可接收觸達的總次數,預設必須校驗;

• 場景次元:每個場景可觸達的次數,用于不同場景域的控制;

• 業務次元:每個業務自己的疲勞頻次,提供n天m次最小觸達間隔t秒的能力;

一個PUSH系統是怎麼做到友好觸達的?

疲勞機制2.0

  對于相鄰兩天觸達相同内容的問題,我們的解決方案是不在使用固定的疲勞視窗起始點,每個疲勞視窗的起點是其在使用者未疲勞的情況下的首次觸達時間,即在第一次觸達後的一個周期内不允許再次觸達。

  另外,查詢疲勞的key也改為由使用者和業務決定,而非疲勞周期決定,這樣設計的優點在于動态切換疲勞周期時,不會影響到已經疲勞的使用者,已疲勞的使用者會在下次疲勞時使用新的疲勞周期。

  對于一個周期多次觸達場景中出現的觸發比較集中的問題,我們采用了最小觸達時間間隔的概念,在疲勞檢驗時同時校驗與上次觸發的時間間隔,兩次觸達時間差小于最小觸達時間間隔的校驗不通過。

  通過靈活的疲勞視窗起始時間、多元度管理以及最小觸達時間間隔的控制,從控制機制上解決了疲勞機制1.0中出現的問題。另外,為了驗證疲勞機制2.0的實際效果,也為了給業務優化提供基礎資料,我們将使用者的觸達記錄接入到了資料統計子產品,通過對日志清洗、解析,産出了業務的資料漏鬥和報表。

應用效果

  在經過多個業務場景接入疲勞機制2.0的設計後,通過分析觸達日志和資料報表,我們拿到如下結論:

  • 接入業務沒有再出現相鄰兩天收到相同觸達内容的情況;
  • 業務疲勞周期動态變更時,未出現短時間觸達相同内容的情況;
  • 一個周期允許多次觸達的接入業務,使用者觸達記錄分布更加離散;

  目前,疲勞機制2.0累計接入的業務已有三十多個,qps峰值在6000左右,運作狀态穩定。

後續計劃

  由于疲勞機制2.0的通用性和配置的靈活性,已經有其他業務在使用2.0版的疲勞服務,後續考慮将該疲勞服務優化後作為對立元件輸出到其他業務;另外,提供将疲勞等過濾節點的資料回流到算法的能力,幫助接入業務優化觸達政策。

繼續閱讀