作者:閑魚技術-劍辛
對閑魚的使用者來說,Push更是與使用者息息相關,因為閑魚商品庫存隻有一件,商品的時效性很強,是以當使用者關注的賣家上新、浏覽的商品發生降價或者是平台為使用者找到一批高成本效益商品時,使用者都期望盡快被通知。Push已經成為使用者與閑魚平台聯系的重要紐帶。
本文将以技術同學視角,介紹閑魚Push從離線手工投放的1.0版本進化到智能個性化的2.0版本的發展過程,詳細說明遇到的問題和技術方案選型,以期給讀者帶來一些思考和解決類似問題的思路。

一、閑魚Push1.0
當閑魚開始all in無線後,平台需要把與使用者相關的優質内容推送給使用者,便于使用者快速找到想購買的商品和感興趣的内容。平台亟需一個Push産品化方案保證将優質内容以Push的形式觸達到使用者,提升使用者體驗。基于這樣的前提,閑魚Push1.0方案的主要思路如下:
- 計算Push使用者名單
- 計算與使用者強相關的優質Push場景,根據場景得到使用者名單
- 垂直業務根據使用者畫像等條件,圈選業務的目标人群
- 基于場景疲勞度過濾每個使用者能發送的場景清單
- 對每個使用者的場景清單進行全局擇優,挑選點選率最高的場景作為目标場景
閑魚Push1.0方案簡單明了,流程清晰,而且離線流程友善監控告警和問題排查,滿足當時的業務需求,上線後運作穩定。在很長一段時間内1.0方案的核心架構和流程沒有太大變更。但随着業務發展,閑魚Push1.0方案的一些弊端開始暴露,包括
- Push使用者名單計算不夠實時
- 消息卡片樣式不夠豐富
- Push觸發時機單一
- Push場景比較少
這些問題最終導緻Push點選率無法繼續提升,觸碰到1.0方案的天花闆。為了解決這些問題,我們對閑魚Push系統進行幾個方面的優化更新,并最終重構了閑魚Push系統。
二、閑魚Push1.1
為了給Push使用者提供更好的使用者體驗,豐富使用者Push場景,我們優先考慮從消息樣式、觸發時機和使用者場景幾個方面優化擴充現有閑魚Push方案,優化項主要分為消息feeds流更新、Push時間個性化、實時Push等。
2.1、消息feeds流更新
Push會沉澱到用戶端的消息闆塊,而消息闆塊也是使用者進入閑魚後浏覽最頻繁的闆塊之一,消息樣式最開始隻支援文本消息和圖檔消息,這類消息樣式的問題是對使用者來說有效資訊曝光少、而且消息樣式單一。為此我們對消息展示形式進行更新,通過feeds方式展示消息,提升有效資訊曝光率,優化消息樣式,打造消息闆塊的使用者心智。feeds流更新上線後效果明顯,因為使用者感興趣的内容相比透出更多,UV點選率和使用者次留相對提升都很大。
第一條為feeds流消息,之後是圖檔消息,相對來說,feeds流消息可以透出更多有效資訊
2.2、Push時間個性化
閑魚Push1.0方案主要支援的是定時批量Push,實際的運作情況是定時批量給目标使用者發Push。Push觸發時機比較單一,人為造成流量較為集中,增加系統穩定性風險;另外統一的觸發時機并不适用于所有使用者,存在對部分使用者打擾的情況。
針對這種情況,我們優化了Push觸發時機,由算法根據使用者行為計算預測每個使用者的觸發時機。算法将使用者相對平均的分在一天之中,在使用者相對活躍的時間段将Push觸達給使用者,減少對活躍使用者騷擾,也使得Push觸達的使用者群體分層更加合理健康。
2.3、實時Push
閑魚Push1.0方案主要覆寫的是使用者相關離線場景,對使用者實時行為産生的場景覆寫不夠,而且這類場景較離線場景相比實時性更高,對使用者來說相對更重要。針對這個問題,我們增加了對實時場景覆寫,将使用者行為抽象成關系模型,以IFTTT作為系統整體觸發機制。當關系一側的使用者行為發生變更後觸發對另一側的觸達,這類場景實時性更強,和使用者強相關,提升使用者Push場景豐富度,增強使用者粘性。實時Push場景上線後Push點選率相對離線場景提升1倍以上,具體技術細節可參考
閑魚IFTTT。
以上是我們針對閑魚Push1.0的功能優化和增強,通過這些能力也擴充支援了更多場景和業務,最終組合在一起成為閑魚Push1.1版本。
三、閑魚Push的今生
閑魚Push1.1整體上線後極大提升了使用者Push場景豐富度和使用者體驗。随着對Push和使用者了解的深入,我們發現還有優化提升的空間,包括:
- 平台視角不夠,現有的優化更偏向點對點,需要從閑魚Push平台視角将這些點連成線形成合力,産生1+1>2的效果
- 現有閑魚Push流程的本質還是離線計算,算法無法進行更加實時的個性化和全局擇優,對使用者體驗有一定影響
- 場景配置不夠靈活,新增場景成本高,制約了豐富使用者Push場景的進度
基于這些原因,我們最終對閑魚Push系統進行重構和更新,打造閑魚Push實時智能投放平台-Hermes。Hermes取自希臘神話,他聰明(智能)、行動靈活(快)、多才多藝(多種觸達),最能契合閑魚Push實時智能投放平台的使命願景。
3.1、邏輯架構
Hermes架構與閑魚Push1.0完全不同,以實時為目标,在場景素材準備、算法全局調優和Push發送等關鍵環節實作實時或準實時,提升Push内容時效性;另外從平台角度出發,将Hermes分為配置中心、比對中心和任務中心,各個子系統定義互動的資料協定,彼此沒有強依賴。三個子系統的作用分别是:
- 配置中心
配置中心負責維護平台核心資料模型,給業務方提供頁面操作配置Push場景和素材,降低業務方接入成本;并且把配置資料以離線全量和實時增量的方式同步給算法模型,作為比對依據。
- 比對中心
比對中心又稱為算法擇優中心,比對中心負責訓練算法擇優模型,根據場景和素材配置為每個使用者個性化篩選,根據每個素材曆史點選率資料排序,根據使用者近期行為召回使用者最有可能感興趣的素材和個性化内容。
- 任務中心
任務中心負責Push觸發時機和實際觸達,任務中心核心支援定時觸發、實時觸發和時間個性化觸發,目的是對Push觸發方式收口,為不同的業務和場景選擇不同觸發方式,幫助業務實作業務目标。另外是對觸達進行收口,友善平台編排觸達計劃,包括觸發時間和發送量級,保證達到業務目标同時不會對Hermes和業務下遊系統造成過大瞬時壓力。
3.2、業務效果
Hermes平台上線後效果非常明顯,主要表現為:
- Push點選率相對提升達到兩位數
- 使用者場景覆寫量直接翻倍
- Push點選激活的DAU也超過曆史最高水準
四、總結
本文介紹了閑魚Push從前世離線計算的1.0版本,發展到多項功能優化的1.1版本,最終進化成今世的實時智能投放平台的全過程,其實閑魚Push的每個階段都契合當時業務發展需要,但對于使用者體驗的無限追求最終産出了閑魚Push實時智能投放平台-Hermes。希望這種方式可以幫助讀者了解閑魚Push發展的業務背景和技術方案選型考量。接下來我們還會有一篇文章詳細說明Hermes的技術方案,包括系統架構、技術選型、性能優化和穩定性保障措施,歡迎大家繼續關注。