劉磊,陳華溢,姚文輝
(廣東開放大學(廣東理工職業學院),廣東 廣州 510091)
據統計,2018年春節微信參與搶紅包的峰值達到8.1 億次/分鐘,2019年春節支付寶搶紅包的峰值達到每秒4.4 萬筆,2022年春節搶紅包大戰總額超80 億,搶紅包已蔚然成為一種中國人特有的社交潮流,在全民狂歡的背后,強大、高效的搶紅包系統作為基礎架構支撐起了海量紅包數據處理,筆者從搶紅包系統的業務分析出發,嘗試設計和實現一種基于B/S 架構的通用搶紅包系統,能同時適用于手機端、桌面端、平板端,而不僅局限于APP 內部。
搶紅包系統涉及發紅包用戶和搶紅包用戶,一個典型的搶紅包業務為:一個發紅包用戶填寫紅包個數、總金額等信息發出紅包,紅包數據存入數據庫,系統并將消息推送給搶紅包的用戶;多個搶紅包用戶收到紅包消息,點擊開始搶紅包,發送搶的請求到服務端,服務端根據紅包分配算法,從總金額生成一個小金額給搶到紅包的用戶,總金額值減小,紅包個數減一,當大紅包被用戶搶完,紅包個數和總金額減到零,搶到的紅包明細數據存入數據庫,這樣就完成了一個搶紅包過程,示意圖如圖1所示。搶紅包業務通常規定,紅包有效期為24 小時,同一用戶對同一紅包只能搶一次。通過分析可知,一個紅包發出往往會被瞬間搶完,超過24 小時紅包即為失效,系統具有“短時間”特點;一次搶紅包活動搶到的人等于紅包個數,這個數字在發紅包時可以確定,不會太大,但參與搶的人通常大于紅包個數,假設有1 億人同時發出紅包,按發和搶比例為1:9 計算,則有9 億人幾乎同時參與搶紅包,系統要承載海量的“高并發”請求;……