你好,我是田哥 上周一個朋友去面試,被面試官問到:用戶領(lǐng)取優(yōu)惠券后,如果優(yōu)惠券到了,該怎么處理? 為什么他會被問到這個問題,那是因為他把我的充電樁項目寫到了簡歷上,并且還寫這么一句責(zé)任描述:
其實,除了問這個問題,還被問到了類似秒殺的問題:如果現(xiàn)在有個活動,這個活動就說送超大優(yōu)惠券,但是需要用戶有5000積分,假設(shè)系統(tǒng)中有1w個人積分超5000,但是優(yōu)惠券只有10張,如何保證系統(tǒng)送出的優(yōu)惠券不超過10張。
扯遠(yuǎn)了,回到我們這個優(yōu)惠券過期的問題中來。 我們先來看需求 需求為了促進(jìn)項目持續(xù)留存用戶,以及持續(xù)拉新,一般面向C端的平臺都會做一些活動,比如:送優(yōu)惠券。用戶領(lǐng)取優(yōu)惠券了,也不一定會使用,甚至有的是忘記使用,所以,本功能就是為了解決這個問題而來。日活:
用戶領(lǐng)取優(yōu)惠券記錄
就憑上面三個場景,一年妥妥的產(chǎn)生近300萬條用戶領(lǐng)取優(yōu)惠券記錄。 但是,很多用戶可能就喜歡領(lǐng)優(yōu)惠券,而不去使用,也有的是忘記使用優(yōu)惠券了,我們需要對這些已過期的優(yōu)惠券進(jìn)行過期處理。
簡單的流行圖: 關(guān)于用戶優(yōu)惠券過期,我們分兩種情況來處理: 1:快過期針對快過期的優(yōu)惠券,發(fā)送站內(nèi)信或郵件或通知。 這個提醒功能相對來說就比較簡單,直接調(diào)用發(fā)送站內(nèi)信接口即可。 2:過期處理針對過期處理,常用兩種解決方案:
定時任務(wù)
延遲消息
這兩種方案都可以實現(xiàn)用戶優(yōu)惠券過期處理。 如果出現(xiàn)大量的優(yōu)惠券過期,所以,我們還是選擇定時任務(wù)來處理。 那如果采用定時任務(wù)來處理,也要注意,畢竟這里的前提條件是大量的優(yōu)惠券。那也就說明用戶優(yōu)惠券記錄表中存在大量的數(shù)據(jù),如果采用定時任務(wù)掃描處理,明顯是不理智的,因為此時用戶也在訪問這張表,很有可能會導(dǎo)致查詢變慢之類的。 怎么處理呢? 我們可以單獨生成一張表叫做
再啟動一個定時任務(wù),專門去處理已經(jīng)處理的或者已經(jīng)使用的記錄,直接物理刪除,這樣這張表的數(shù)據(jù)就不會太大。只是,我們在刪除時可以做一些適當(dāng)?shù)男r灮蛘邥r間增加。 整個流程: 這里就不用貼代碼了吧,其實沒有什么技術(shù)難度,主要是采用了一種比較取巧方式來解決的。 思路都是相同的,比如我們?yōu)榱吮WC消息不丟失,生產(chǎn)者在發(fā)送消息時,如果失敗了,我們也用一個臨時消息表來處理這類消息丟失的問題。 |
|