日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

QQ会员2018春节红包抵扣券项目背后的故事

發(fā)布時(shí)間:2025/3/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QQ会员2018春节红包抵扣券项目背后的故事 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實(shí)踐干貨哦~

1. 活動(dòng)數(shù)據(jù)

截止3月1日手Q運(yùn)動(dòng)紅包會(huì)員禮包發(fā)放核銷數(shù)據(jù)
參與紅包活動(dòng)用戶數(shù):2億+
發(fā)券峰值:52w/min

2. 需求背景

2.1 紅包類型

2018年手Q春節(jié)紅包主打“走運(yùn)紅包“,活動(dòng)規(guī)則為除夕為參與用戶隨機(jī)派發(fā)4個(gè)業(yè)務(wù)禮包,大年初一、初二、初三用戶每走100步即可抽取一個(gè)紅包,會(huì)員這邊是按禮包給用戶發(fā)放抵扣券,其中一個(gè)禮包內(nèi)有三種不同面額的抵扣券,同時(shí)上線對(duì)接了米大師IOS抵扣券平臺(tái)支持了IOS終端下領(lǐng)券、用券、核銷券功能。

會(huì)員春節(jié)禮包活動(dòng)頁面:

2.2 活動(dòng)目標(biāo)

整個(gè)春節(jié)期間活動(dòng)產(chǎn)品配置發(fā)放3億個(gè)紅包

2.3 活動(dòng)預(yù)估請(qǐng)求峰值

錢包側(cè)評(píng)估紅包領(lǐng)取峰值預(yù)計(jì) 5w/s

2.4 后臺(tái)需求

  • 支持禮包券類型發(fā)貨(3億) 后臺(tái)在當(dāng)前抵扣券基礎(chǔ)上新增禮包券類型,對(duì)外只暴露禮包ID,外部發(fā)貨傳入禮包ID和對(duì)應(yīng)的終端系統(tǒng)平臺(tái),內(nèi)部自動(dòng)映射禮包內(nèi)多張抵扣券,并將多張抵扣券發(fā)放到用戶卡包賬戶下。

  • 支持android \ ios雙平臺(tái)發(fā)券(之前只支持android平臺(tái)),ios平臺(tái)支持發(fā)券、用券、核銷全流程
    在當(dāng)前物品系統(tǒng)基礎(chǔ)上接入米大師IOS抵扣券平臺(tái),完善ios發(fā)券、支付、核銷、查券全流程,通過接入ios平臺(tái)券

  • 支持對(duì)跨平臺(tái)使用券用戶補(bǔ)發(fā)對(duì)應(yīng)平臺(tái)券(不限制領(lǐng)券平臺(tái)和用券平臺(tái)的唯一性)
    用戶抽中紅包的平臺(tái)和真正用券的平臺(tái)可能不一致,但是我們給用戶發(fā)什么類型的抵扣券是在用戶抽到紅包的那一刻就已經(jīng)決定,這樣當(dāng)用戶切換平臺(tái)去支付用券就會(huì)得到“無適用抵扣券”的提示,為了不影響用戶體驗(yàn),經(jīng)過團(tuán)隊(duì)內(nèi)部討論決定給這類需求的用戶后臺(tái)靜默補(bǔ)發(fā)一套對(duì)應(yīng)平臺(tái)的券,讓用戶領(lǐng)到紅包在任意平臺(tái)皆可支付使用。

  • 支持按禮包核銷錢包側(cè)數(shù)據(jù)
    用戶刷到紅包在錢包側(cè)狀態(tài)為“未領(lǐng)取”狀態(tài),用戶點(diǎn)擊領(lǐng)取即可進(jìn)入“已領(lǐng)取”狀態(tài),進(jìn)入引導(dǎo)用戶“去使用”,在用戶未全部使用禮包內(nèi)部抵扣券之前,狀態(tài)都會(huì)停了在“未使用”的狀態(tài),直到全部核銷使用為止

  • 支持IAP凍結(jié)券回滾
    主要用于支付挽留業(yè)務(wù),在用戶放棄支付場景下對(duì)抵扣券靜默回滾操作

3. 系統(tǒng)架構(gòu)

整體系統(tǒng)是在2017年架構(gòu)的基礎(chǔ)上進(jìn)行改造擴(kuò)展,TGW + QZHTTP + RocketMQ + SPP邏輯服務(wù)架構(gòu) , 邏輯服務(wù)主要包括CGI代理、紅包代理(MQ生產(chǎn))、紅包派發(fā)(MQ消費(fèi))、后端發(fā)貨為物品系統(tǒng)。存儲(chǔ)主要為CMEM、RocketMQ。其中紅包入口機(jī)器均為多機(jī)房接入。

4. 系統(tǒng)容災(zāi)、高可用策略

為應(yīng)對(duì)大流量高并發(fā)場景下的故障突發(fā)不確定性,我們主要從多節(jié)點(diǎn)接入、限流保護(hù)、熔斷降級(jí)、快速失敗、緩存加速、業(yè)務(wù)防重等幾個(gè)方面設(shè)計(jì)思考

4.1多機(jī)房部署

  • 紅包入口集群、CMEM多機(jī)房部署
    由于紅包流量入口大,對(duì)CGI層和紅包接入代理層的可用性要求極高,避免因機(jī)房網(wǎng)絡(luò)等物理故障導(dǎo)致集群整體不可用,在接入代理層多機(jī)房部署

4.2 限流保護(hù)&流量清洗

  • 接入層流量清洗
    春節(jié)紅包活動(dòng)中流量大并且集中,接入代理處于系統(tǒng)前置邏輯,為保護(hù)后端發(fā)貨系統(tǒng),有必要避免用戶重復(fù)領(lǐng)取請(qǐng)求和其他無效請(qǐng)求對(duì)后端系統(tǒng)的沖擊影響正常紅包的發(fā)放,除了基礎(chǔ)的請(qǐng)求安全校驗(yàn)邏輯外在紅包接入層增加用戶紅包領(lǐng)取狀態(tài)存儲(chǔ),春節(jié)期間削減 4kw無效請(qǐng)求。

  • 限速保護(hù)
    業(yè)務(wù)壓測評(píng)估后端發(fā)貨性能在1w/s左右,而請(qǐng)求峰值評(píng)估會(huì)在5w/s,在增加MQ緩沖隊(duì)列的同時(shí)還需要通過接入限速組件(限流服務(wù)優(yōu)先、本地限速備用),控制消息消費(fèi)速度來保護(hù)后端發(fā)貨系統(tǒng),增加后端故障降級(jí)的可控性。

4.3多重防重機(jī)制

春節(jié)紅包系統(tǒng)中無法避免重復(fù)領(lǐng)取請(qǐng)求,并且RocketMQ也不保證不會(huì)重復(fù)消費(fèi)消息,在業(yè)務(wù)層消息去重保證冥等性、盡快拒絕重復(fù)請(qǐng)求對(duì)于紅包系統(tǒng)來說顯得尤為重要。由于系統(tǒng)去重依賴存在柔性策略,不能完全依賴單一機(jī)制來實(shí)現(xiàn)完全去重,系統(tǒng)通過紅包接入代理層領(lǐng)券狀態(tài)機(jī)、限量服務(wù)、卡包記錄三種機(jī)制依次對(duì)請(qǐng)求進(jìn)行校驗(yàn)去重。

4.4 熔斷降級(jí)

在紅包發(fā)貨過程中存在多點(diǎn)依賴,并且這些依賴存在故障不確定性,需要考慮在這些故障點(diǎn)觸發(fā)的時(shí)候做到最大化的無損,系統(tǒng)在可柔性處理的三個(gè)模塊位置增加熔斷降級(jí)開關(guān),在故障失敗出現(xiàn)時(shí)熔斷切換備用策略或者直接降級(jí)放棄依賴

  • 領(lǐng)取狀態(tài)CMEM存儲(chǔ)熔斷開關(guān)
    “紅包狀態(tài)存儲(chǔ)”雖對(duì)整個(gè)系統(tǒng)至關(guān)重要,但在出現(xiàn)故障時(shí)也不能影響用戶領(lǐng)紅包業(yè)務(wù),通過在該模塊依賴鏈路上增加熔斷開關(guān),當(dāng)出現(xiàn)超時(shí)、不可用故障時(shí),解除對(duì)該模塊的依賴,避免非關(guān)鍵路徑對(duì)整體活動(dòng)的致命影響。

  • Rocket MQ 降級(jí)開關(guān)
    MQ生產(chǎn)為本地agent代理方式,除了本地共享內(nèi)存緩沖外,為避免RocketMQ長時(shí)間故障影響消息生產(chǎn),支持手動(dòng)熔斷消息生產(chǎn),切到klog系統(tǒng)記錄紅包領(lǐng)取消息,并通過對(duì)賬補(bǔ)發(fā)腳本對(duì)用戶領(lǐng)取請(qǐng)求進(jìn)行補(bǔ)發(fā)重做。

  • 計(jì)平查券接口自動(dòng)降級(jí)
    用戶在拉起支付的時(shí)候會(huì)觸發(fā)拉取當(dāng)前可用券信息,這個(gè)拉取動(dòng)作默認(rèn)會(huì)打到計(jì)平的查券接口,在容量評(píng)估期間,計(jì)平大部分資源都騰挪到抵扣券發(fā)貨上,對(duì)查券和支付只保證支持1.5k/s能力,為了增加對(duì)計(jì)平系統(tǒng)的保護(hù),同時(shí)讓用戶能正常支付用券,物品系統(tǒng)增加對(duì)查券接口設(shè)定降級(jí)機(jī)制,如果在周期內(nèi)故障達(dá)到事先設(shè)定的閾值時(shí)自動(dòng)降級(jí),將請(qǐng)求切換內(nèi)部本地卡包服務(wù),并通過核銷對(duì)賬來保證與計(jì)平的數(shù)據(jù)一致性。

4.5 快速失敗

  • 公眾號(hào)消息服務(wù)快速失敗
    用戶每成功領(lǐng)取一個(gè)紅包都需要收到公眾號(hào)消息,發(fā)送公眾號(hào)消息成為領(lǐng)紅包路徑的必要事件點(diǎn),在公眾號(hào)消息系統(tǒng)部分機(jī)器故障時(shí)如果不快速失敗將會(huì)降低紅包整體發(fā)貨性能

4.6 緩存

  • 緩存加速

  • 對(duì)紅包抵扣券基礎(chǔ)信息本地cache加速,減少cmem訪問和發(fā)貨時(shí)延。
  • 采用錢包側(cè)領(lǐng)取碼,節(jié)約動(dòng)態(tài)生成領(lǐng)取碼的資源耗時(shí)
  • Rocket MQ緩沖屏蔽后端發(fā)貨故障 后端發(fā)貨系統(tǒng)內(nèi)部依賴多,計(jì)平發(fā)貨能力有限,通過MQ一方面緩沖紅包領(lǐng)取消息,同時(shí)屏蔽了后端邏輯系統(tǒng)故障對(duì)整體春節(jié)紅包活動(dòng)的影響,實(shí)現(xiàn)故障無感知

5. 活動(dòng)緊急預(yù)案

雖有容災(zāi)策略,依然無法保證萬無一失,我們需要梳理整個(gè)系統(tǒng)所有關(guān)鍵節(jié)點(diǎn),并對(duì)關(guān)鍵節(jié)點(diǎn)設(shè)計(jì)故障演練修復(fù)方案

關(guān)鍵點(diǎn)1:后端物品發(fā)貨大面積失敗
后端物品發(fā)貨依賴復(fù)雜,從邏輯校驗(yàn)到限量再到midas發(fā)貨,任何環(huán)節(jié)故障都可能觸發(fā)發(fā)貨故障 干預(yù)策略:在故障出現(xiàn)時(shí)第一時(shí)間降速(對(duì)切換了本地限速服務(wù)的消費(fèi)機(jī),需要暫時(shí)停止消費(fèi)機(jī)),之后再排查具體的發(fā)貨故障

關(guān)鍵點(diǎn)2:RocketMQ生產(chǎn)失敗
RocketMQ為紅包單獨(dú)部署了紅包集群,雖無法生產(chǎn)的可能性比較低 干預(yù)策略:

  • 采用本地agent生產(chǎn)機(jī)制,利用本地共享內(nèi)存對(duì)MQ進(jìn)行容災(zāi)
  • 若出現(xiàn)生產(chǎn)失敗情況使用klog對(duì)失敗消息記錄并統(tǒng)一進(jìn)行對(duì)賬重做

關(guān)鍵點(diǎn)3:領(lǐng)券公眾號(hào)通知長時(shí)間無法修復(fù) 干預(yù)策略:

  • 公眾號(hào)消息如果遇到故障短時(shí)間能恢復(fù)可以通過重試處理即可
  • 若公眾號(hào)消息故障長時(shí)間無法恢復(fù)(超過10分鐘),可直接關(guān)掉公眾號(hào)通知機(jī)制,在通道恢復(fù)正常后恢復(fù)公眾號(hào)通知,保證故障期間禮包正常到賬,犧牲無消息通知的體驗(yàn)。

6. 數(shù)據(jù)采集監(jiān)控

系統(tǒng)在接入TNM2特性告警、米格告警、模調(diào)同時(shí)監(jiān)控系統(tǒng)運(yùn)行狀態(tài)

7. 分段壓測、全鏈路壓測

與錢包后臺(tái)側(cè)壓測性能達(dá)到預(yù)估要求5w/s 米大師抵扣券發(fā)貨性能峰值通過幾輪壓測最終可達(dá)1.3w/s 查券接口可達(dá)3.5k/s

  • 項(xiàng)目上線之后除了參與多輪紅包演練外還執(zhí)行了分段壓測,之所以需要分段壓測是因?yàn)樵诜?wù)上線之后,依賴的鏈路中存在部分系統(tǒng)完成擴(kuò)容、部分系統(tǒng)未升級(jí),所以前期很可能不具備全鏈路壓測的條件,如果貿(mào)然執(zhí)行全鏈路壓測,很可能會(huì)導(dǎo)致部分依賴服務(wù)過載無法提供正常的業(yè)務(wù)服務(wù);
  • 在壓測過程中提前申請(qǐng)測試帳號(hào),因?yàn)椴糠窒到y(tǒng)如果帳號(hào)空間有限的話可能無法反映真實(shí)流量情況,如果條件允許的話建議按照預(yù)估的QPS來申請(qǐng),本次為配合壓測申請(qǐng)2w個(gè)測試賬號(hào);
  • 在所有系統(tǒng)擴(kuò)容結(jié)束并完成分段壓測后,需要對(duì)全鏈路進(jìn)行壓測;
  • 對(duì)壓測相關(guān)服務(wù)保證與當(dāng)前線上提供的服務(wù)環(huán)境隔離,避免因?yàn)閴簻y影響正常業(yè)務(wù),
  • 對(duì)有依賴CMEM服務(wù),單獨(dú)申請(qǐng)臨時(shí)CMEM用于壓測,構(gòu)建壓測環(huán)境;
  • 8. 故障處理

    介紹了這些準(zhǔn)備工作和預(yù)案,那么在除夕大流量來臨時(shí)我們是否有遇到現(xiàn)網(wǎng)故障呢,怎么修復(fù)現(xiàn)場 ?

    • CMEM故障 第一時(shí)間聯(lián)系數(shù)據(jù)運(yùn)維現(xiàn)場值班同事定位問題,之后對(duì)消費(fèi)速度降低避免過多的消息進(jìn)入“重試隊(duì)列”,同時(shí)降低對(duì)CMEM的沖擊在CMEM負(fù)載修復(fù)之后,逐步放量

    • 消息隊(duì)列消息堆積 在除夕當(dāng)天出現(xiàn)因CMEM告警導(dǎo)致了請(qǐng)求無法走正常發(fā)貨渠道到賬,從而堆積在消息隊(duì)列里面,為了保證在零點(diǎn)前全部禮包到賬,在數(shù)據(jù)運(yùn)維同事處理的同時(shí),業(yè)務(wù)側(cè)首先停止部分消費(fèi)機(jī)并將速度降低到500/s,以控制較少的請(qǐng)求到達(dá)重試隊(duì)列。在CMEM故障恢復(fù)之后逐步放量,并擴(kuò)大進(jìn)程消費(fèi)線程數(shù)來提高重試隊(duì)列的消費(fèi)速度,最終在23:20將所有消息消費(fèi)完畢

    9.經(jīng)驗(yàn)總結(jié)

    • 處理失敗消息執(zhí)行再生產(chǎn)
      在大流量依賴MQ消費(fèi)消息過程中,如果遇到消息處理失敗,最好執(zhí)行再生產(chǎn),否則將會(huì)進(jìn)入“重試隊(duì)列”,影響消費(fèi)速度,從而會(huì)導(dǎo)致部分用戶物品無法在產(chǎn)品預(yù)定時(shí)間到賬。
    • 確認(rèn)依賴的CMEM是否已經(jīng)關(guān)閉數(shù)據(jù)下沉
      部分大容量CMEM很可能在過往開啟了tssd關(guān)聯(lián),在大流量進(jìn)來很可能會(huì)導(dǎo)致tssd過載,影響cmem整體可用性。
    • 不斷完善紅包項(xiàng)目checklist
      從紅包項(xiàng)目需求啟動(dòng)時(shí),創(chuàng)建并不斷完善check項(xiàng),方便除夕活動(dòng)開始前依次檢查。
    • 普通活動(dòng)與春節(jié)紅包服務(wù)獨(dú)立部署或者錯(cuò)峰推廣
      在春節(jié)期間,除了春節(jié)紅包項(xiàng)目外,可能有其他活動(dòng)推廣,如果無法對(duì)普通活動(dòng)做到錯(cuò)峰推廣,需要為春節(jié)紅包項(xiàng)目獨(dú)立隔離部署服務(wù),避免相關(guān)資源競爭影響。
    • 壓測環(huán)境與正常業(yè)務(wù)環(huán)境隔離
      由于在壓測過程中很可能出現(xiàn)故障,同時(shí)我們紅包項(xiàng)目的大部分服務(wù)都是在現(xiàn)有業(yè)務(wù)服務(wù)的基礎(chǔ)上實(shí)現(xiàn),所以我們需要保證壓測的系統(tǒng)與當(dāng)前業(yè)務(wù)服務(wù)環(huán)境隔離。
    • MQ消費(fèi)隊(duì)列數(shù)與消費(fèi)進(jìn)程配置合理,保證最好的消費(fèi)并行度
      在配置消費(fèi)隊(duì)列數(shù)和進(jìn)程數(shù)與MQ集群節(jié)點(diǎn)數(shù)匹配,保證最好的多機(jī)并行消費(fèi)狀態(tài),單機(jī)消費(fèi)進(jìn)程數(shù)在機(jī)器條件允許的情況下不要配置過高,盡量讓隊(duì)列負(fù)載到不同的機(jī)器上去。
    • 確定值班聯(lián)系人
      在活動(dòng)開始前確認(rèn)各個(gè)依賴模塊的值班聯(lián)系人,方便在模塊出行問題時(shí)第一時(shí)間知會(huì)相關(guān)同事,節(jié)約溝通成本,縮短故障持續(xù)時(shí)間
    • 提前保存相關(guān)服務(wù)配置信息
      在checklist里加上需要重點(diǎn)關(guān)注的配置信息,如CMEM bid地址、服務(wù)L5、開關(guān)配置,在需要定位時(shí)快速執(zhí)行,減少查找信息的時(shí)間

    問答

    針對(duì)移動(dòng)web的PayPal自適應(yīng)支付如何實(shí)現(xiàn)?

    相關(guān)閱讀

    10億紅包背后的數(shù)據(jù)中心

    淺談數(shù)據(jù)中心應(yīng)急冷源

    如何搭建一個(gè)紅包架構(gòu)?


    此文已由作者授權(quán)騰訊云+社區(qū)發(fā)布,原文鏈接:https://cloud.tencent.com/developer/article/1145740?fromSource=waitui

    歡迎大家前往騰訊云+社區(qū)或關(guān)注云加社區(qū)微信公眾號(hào)(QcloudCommunity),第一時(shí)間獲取更多海量技術(shù)實(shí)踐干貨哦~

    總結(jié)

    以上是生活随笔為你收集整理的QQ会员2018春节红包抵扣券项目背后的故事的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。