背景
營銷玩法是電商行業進行商品促銷和用戶增長的重要手段,上一篇中介紹了閒魚的玩法平臺——多啦A夢,本篇將介紹在該系統上承接的玩法。閒魚作為閒置循環工廠也參與了大促,為了讓更多閒置在閒魚遊起來,在商品側設計了《轉賣抽獎》活動玩法;為了能讓更多用戶在閒魚玩起來,在用戶側設計了《搖錢樹》活動玩法。下面詳細介紹《轉賣抽獎》和《搖錢樹》的活動玩法以及技術實現上注意的細節。
轉賣抽獎
商品是閒魚的必要組成部分,為了讓用戶可以在大促期間買買買,所以閒魚在節前設計了轉賣抽獎的活動幫助用戶舍斷離,具體詳細玩法如下:
玩法介紹
用戶發佈商品後,將會獲取一次抽獎機會,抽獎機會每天最多可以獲取50次,活動期間抽獎機會可以累積,活動結束後抽獎機會清零;當用戶擁有抽獎機會後即可抽獎,每次抽獎將會消耗抽獎機會,當抽獎機會為零時則不可以抽獎;每次抽獎用戶將有概率獲得支付寶現金紅包和雙十一店鋪優惠券。
用戶可以通過在閒魚內發佈商品或是在淘寶的閒魚小程序中一鍵轉賣商品參與活動,商品發佈後如果用戶獲取到了抽獎機會,則在閒魚端內彈出POP提醒用戶獲取到一次抽獎機會,並引導用戶跳轉到活動落地頁,在落地頁用戶可以參與抽獎。
技術方案
轉賣抽獎活動從實現上分為兩個活動,一個是完成發佈獲取抽獎機會,另外是消耗抽獎機會進行概率抽獎。進一步抽象兩個活動可以發現他們對應一個共同的業務模型:前置條件->抽獎->獎勵。對於發佈獲取抽獎機會來說,前置條件是發佈,抽獎是領取抽獎機會,獎勵就是抽獎機會;對於消耗抽獎機會進行概率抽獎來說,前置條件是抽獎機會,抽獎是進行概率抽獎,獎勵是紅包或是優惠券。所以這個活動的底層實現方案使用的是閒魚的業務玩法平臺哆啦A夢,下面詳細介紹著兩個活動的技術實現。
發佈後獲取抽獎機會,首先需要感知到用戶的發佈行為,在實現上可以通過硬編碼的方式,侵入到商品發佈過程中但是這種方案顯然過耦合,本文采用的是OMEGA事件採集能力,該方案可以無侵入的感知用戶的發佈行為,同時可以在採集過程中定製邏輯例如對特定類目、標題進行篩選。用戶發佈後需要累計抽獎機會,在本方案中抽獎機會累計使用的是積分系統實現,但是要注意在業務上要做好冪等防止一次發佈多次累計,同時每個用戶每天最多獲取50次機會,所以在給單用戶發放機會過程中要進行單用戶的全局鎖,防止發放超出50次。
消耗抽獎機會進行概率抽獎,用戶在進行抽獎前防止併發操作造成抽獎次數過多消耗,所以用戶進行抽獎操作時首先進行併發控制,然後消耗抽獎機會再進行最終的抽獎,獎品發放是按照概率進行發放,在概率設計中價值越高的獎品中獎的概率越低,同時考慮活動效果和保證用戶參與感,需要保證活動期間都有可抽取的獎品,這就要考慮獎品的發放排期,按照小時級別和天級別對獎品進行排期,保證獎品在活動中均勻分佈。在活動期間對於按照價值對獎品進行分組,在高價值組中限制用戶的中獎次數,保證高價值獎勵能讓更多的用戶獲取。
關鍵技術點:
1.用戶公平性,活動初期活動中的現金紅包按照每小時生效進行排期,通過活動監控發現整點參與量都會有一個峰值,分析發現這些用戶掌握了紅包生效的規律,整點來參與活動刷紅包導致紅包快速耗光,這對於大多數用戶來說是不公平的,所以技術側做了一個小時內隨機多次生效紅包,保證用戶參與的公平性。
2.疲勞度,控制用戶單位時間內可領取的次數,疲勞度的設計利用的是Tair分佈式緩存的Incr自增能力,通過設計業務和key的映射實現對用戶領取疲勞度的控制,但是在分業務進行疲勞度控制之上建議設計一個基於用戶維度的總疲勞度,這樣保證在業務疲勞度控制失效時,由用戶疲勞度做兜底的控制。
搖錢樹
經過雙十一瘋狂的剁手後閒魚幫你來回血,在用戶側閒魚設計了搖錢樹活動,通過用戶裂變的玩法對閒魚用戶進行拉新拉活,具體詳細玩法如下:
玩法介紹
用戶首先進入活動頁面,可以領取一顆搖錢樹,在領取搖錢樹時會為每個用戶分配一個隨機的初始現金金額。領取搖錢樹後可以通過分享按鈕把自己的搖錢樹分享給好友,好友通過分享口令進入閒魚後,會幫助用戶進行搖樹,搖樹成功後雙方都可獲取現金獎勵。但一個用戶每天最多隻能成功邀請4個好友為自己搖樹,超出後不計數,同時每天每人只能幫別人搖樹一次。具體如下所示:
用戶可以在閒魚端內和手淘投放的Banner進入到活動頁面,開啟自己的搖錢樹後可以通過淘口令、微信、當面掃一掃等方式把自己的搖錢樹分享給好友,累計到一元即可提現。
技術方案
搖錢樹活動是一種典型的用戶裂變玩法,從技術上看可以分為三個部分,第一部分是領取自己的搖錢樹獲取獎勵,第二部分是自己幫助好友搖樹獲取獎勵,第三部分邀請好友為自己搖樹獲取獎勵。進一步抽象三個部分其實對應一個業務模型:關係系統->領取獎勵->獲取獎勵。在第一部分中關係系統中存儲的是自己和自己的映射關係,在第二部分中關係系統存儲的是自己和好友的映射關係,在第三部分中存儲的是好友和自己的映射關係,同時在第二部分和第三部分兩個的關係是同時存在的。所以整個實現方案如下所示:
本方案中領取獎勵的部分是基於多啦A夢和拉菲已有的能力實現的,在設計關係系統時存儲採用的是基lindorm(HBase)設計,主態和客態關係存在一個表中,通過對Key的設計滿足查詢的功能和性能要求。當然也可以基於mysql的數據模型設計,對於主態和客態關係建立兩個表,分別以主態和客態的用戶ID作為分庫分表設計;之所以沒有采用mysql的數據模型是因為需要維護兩個表的事務性和一致性成本過高。
在整個方案設計上主要關注的點有兩個,第一個是資損,在活動中一個用戶只能領取1次搖錢樹,每天只能幫好友搖樹1次,每個用戶每天最多可以成功邀請4個用戶,這些規則即是玩法規則也是資損易發點,在本文中採用了實時對賬和領取限制實現對資損現象的監控和兜底保證,保障無資損是技術側底線在方案設計上要優先考慮。第二個是併發控制,在活動中用戶邀請多個好友為自己搖樹,但是一天只能成功邀請4位,所以要做好邀請人側的併發控制防止出現超過4人的邀請。
關鍵技術點:
1.冪等性,冪等能力是每個營銷活動必要的能力,常用的方法有利用數據庫樂觀鎖、Tair(redis)分佈式緩存、zookeeper等方案實現分佈式全局鎖,本文中採用的是Tair緩存分佈式鎖方案。
2.對賬校驗,對賬是營銷的一個必要環節,可以通過數據庫層面的對賬實現數據校驗,也可通過業務上的對賬進行校驗領獎資格,本文采用的是業務上的對賬,通過接受領獎後的消息,反查領取用戶的資格實現實時的對賬能力。
總結
限於篇幅的限制本文主要介紹了相關的玩法以及在設計玩法過程中需要注意的技術點,後面會對每個技術點的實現單獨進行介紹。目前多啦A夢已經在功能上實現了組件化,例如疲勞度校驗、併發控制、人群校驗的常用能力,這些能力會極大的方便新玩法的開發,未來除了在實現功能組件化以外會逐步實現玩法的組件化,這樣運營同學可以直接利用玩法組件拼裝自己的業務玩法。