營銷權益平臺春晚技術探究| 京東雲技術團隊

一、引言

在當前快速發展的互聯網環境中,許多企業和服務都面臨着高併發場景的挑戰。隨着用戶規模不斷增長,對於同一時間內大量用戶請求的處理能力、系統性能、穩定性和容錯性的要求也日益提高。高併發場景對系統架構設計、數據庫設計、緩存策略、自動化運維、安全防護、成本、效率等方面提出了重大挑戰,需要綜合考慮各項因素並採取有效的措施。本次分享將結合春晚案例,剖析如何應對高併發問題,以確保系統的穩定性和可擴展性。

二、背景

營銷權益平臺在2024春晚期間,主要承接抽獎場景支付券的投放和裂變互動場景主態、客態錢包餘額的發放。爲晚會活動提供科技券權益驗資、權益領取、權益查詢能力。











 

1、權益驗資流程

驗資的主要功能是判定用戶是否可以領取指定權益,當用戶點擊“開始刮獎”時零售UMC會調用驗資接口,批量獲取當前用戶可領的權益。該過程會對運營投放的每個活動進行基礎信息的校驗、庫存校驗、領取規則校驗、資格校驗、風控校驗等,最後返回用戶可領的權益集合,具體流程如下:





 

2、權益發放流程

驗資流程結束後,零售umc會拿到用戶可領的所有權益,包含支付券、紅包、東券、實物等,umc會根據策略下發本次抽獎用戶具體命中的權益給SOA,SOA發起權益的領取操作,如命中支付券,此時會調用權益發放接口,權益發放接口會對當前要領取的活動進行基礎校驗、規則校驗、風控校驗、完成以上校驗後,進行活動庫存扣減、用戶資格扣減、權益入賬(寫庫),並返回最終的領取結果。





 

三、挑戰

1、成本與服務

既要考慮成本,又要考慮服務質量,還要考慮業務創新,在這種複雜的情況下,成本與服務的平衡成爲架構設計中最大的挑戰。

2、三高保障

同時滿足高性能、高併發、高可用要求,中間件、數據等依賴服務達到瓶頸,加機器也不能解決的問題,如何破局?

四、實現

1、限流

合理的限流對系統穩定性和資源投入起到至關重要的作用,限流值的評估直接影響到系統複雜度、成本效率、業務達成、以及用戶體驗。

限流評估優先級原則:用戶體驗>業務目標>系統壓力(系統複雜度、成本效率)

1)基於業務需求分析

明確業務玩法:C端視角的交互流程,主要考慮限流發生時對用戶體驗的影響。
明確業務目標:春晚期間業務計劃發放的券總數。
活動流量特點:口播輪次及時間的確認,對於峯值的趨勢預測,考慮捨棄峯值流量對目標達成的影響。

2)基於歷史數據分析

以數據驅動,參考營銷日常、大促、跨晚、會場活動等發放數據情況,結合業務目標,評估合理的限流值。





 

2、重緩存

使用緩存可以顯著提高系統性能,降低數據源壓力,改善用戶體驗,是保障系統高性能的有效方式。營銷系統大量使用本地及redis緩存,緩存架構如下:





 

本地緩存的構建的兩種方式:

一級緩存:本地+mysql+推模式更新。
兩級緩存:本地+r2m+mysql+推模式更新。

兩種模式的選取,需要考慮集羣規模、數據大小、數據庫性能、等因素(空間和時間的權衡)。

3、合併

合理的業務流程設計,將能夠並行處理的邏輯通過多線程進行並行處理,通過批量請求的方式降低網絡開銷減少IO操作,保障系統性能的同時能有有效保護下游系統。





 

4、拆分

拆分是比較常用的解決方案,是一種空間換時間的思想。庫存熱點問題在本次春晚活動中尤爲明顯,通過合理的拆分得到解決。以下介紹營銷系統使用的庫存管理方案:

1)傳統方式(日常領券鏈路)

讀鏈路使用get命令,寫鏈路使用lua實現庫存控制,理論可支持(讀+寫)共4w/s。流量小,一致性要求高的場景推薦使用。

優點:簡單、性能有保障、強一致性。

缺點:單節點併發瓶頸。





 

2)本地庫存方式(收銀臺鏈路)

讀鏈路預取庫存在本地進行庫存扣減,寫鏈路使用lua實現庫存控制,寫最高2w,讀理論無上限。一致性要求強,庫存量級大、讀多寫少場景使用。

優點:讀鏈路可實現橫向擴展、強一致性。

缺點:庫存較少時可能會產生單節點瓶頸。





 

3)分片庫存(春晚版本)

讀鏈路通過本地庫存標識判斷是否庫存充足,寫鏈路按照pin對庫存進行分片,通過hashtag訪問庫存,弱一致性,庫存量級大、讀多寫多場景使用。

優點:讀寫高併發。

缺點:弱一致性,少賣,庫存和流量的量級要求要達標。





 

5、隔離

隔離在架構設計中能夠提高系統的安全性、故障隔離能力、性能保護、管理便捷性,是設計健壯系統架構的重要手段。

同機房調用:jsf、jmq、r2m儘可能做同機房調用。春晚期間jmq跨零售和金融機房,與Jmq運維在金融機房搭建服務,降低跨機房耗時。
數據隔離:對用戶數據、系統數據進行隔離、營銷系統將用戶資格數據、用戶權益記錄、用戶領取記錄分別存儲,同時針對春晚券狀態單獨存儲。
讀寫分離:對核心r2m、cds做讀寫分離,以降低主節點壓力,提升系統性能。
業務隔離:對異步落庫消息實現業務隔離,避免春晚期間券發放消息積壓導致線上其他活動券到賬延時。





 



五、總結

高併發場景下的解決方案往往需要綜合考慮系統架構、技術選型、性能優化和容量規劃等方面的問題,需要對業務和系統的整體情況有較深入的理解和把握。另外,高併發下的系統設計不是一成不變的,需要不斷地根據業務發展和系統性能進行優化和調整,以適應不斷變化的需求。同時,高併發場景下的系統設計需要注重容錯和安全性,充分考慮異常情況下的應對措施,保障系統的穩定性和可靠性。綜上所述,高併發場景下的系統設計需要綜合考慮技術、業務和運維等多方面因素,是一個具有挑戰性但又充滿樂趣的工作。

 

 

作者:京東科技 謝凌東

來源:京東雲開發者社區

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章