秒殺系統(tǒng)設(shè)計(jì)

秒殺操作

? 1.秒殺流程

一.詳情頁(yè)面操作

? ? ? CDN(內(nèi)容分發(fā)網(wǎng)絡(luò))加速用戶獲取數(shù)據(jù)的系統(tǒng),部署會(huì)在最近的網(wǎng)絡(luò)節(jié)點(diǎn)上,當(dāng)命中CDN不會(huì)需要訪問(wèn)后端服務(wù)器(公司可搭建也可租用電信)

二、秒殺地址接口

? ? 1.無(wú)法靜態(tài)化無(wú)法使用CDN緩存

? ? 2.適合使用服務(wù)器端緩存redis服務(wù)器等

? ? 3.一致性成本(超時(shí)穿透、主動(dòng)進(jìn)行更新)

三、秒殺操作優(yōu)化分析

? ?1.無(wú)法使用CDN緩存2. 后端緩存困難:庫(kù)存問(wèn)題

? ? ? ?執(zhí)行方案:執(zhí)行秒殺并執(zhí)行成功時(shí),會(huì)發(fā)生減庫(kù)存使用原子計(jì)數(shù)器(Atomic)可以使用redis服務(wù)器進(jìn)行操作,同時(shí)要記錄誰(shuí)購(gòu)買了商品使用技術(shù)分布式MQ進(jìn)行發(fā)送,將消息寫(xiě)入MySQL數(shù)據(jù)庫(kù)中

? ? ? ? 難點(diǎn):數(shù)據(jù)一致性問(wèn)題,購(gòu)買失敗回滾方案,冪等性保證防止同一個(gè)用戶多次執(zhí)行秒殺。Java控制事務(wù)分析。

? ? ? ?存在問(wèn)題:更新完庫(kù)存后進(jìn)行記錄商品明細(xì),每一次數(shù)據(jù)庫(kù)都得等待mysql行級(jí)鎖。

? ? ? ?當(dāng)減庫(kù)存update和記錄商品購(gòu)買情況,將客戶端邏輯放在mysql服務(wù)器端,減少網(wǎng)路之間延遲和GC影響。

? ?解決方案:使用存儲(chǔ)過(guò)程,整個(gè)事務(wù)在mysql端進(jìn)行完成。

? ?優(yōu)化:1將靜態(tài)頁(yè)面存放在CDN節(jié)點(diǎn)上,頁(yè)面可以控制用戶多次點(diǎn)擊

? ? ? ? ? ? ? 2.查詢商品秒殺開(kāi)始/結(jié)束時(shí)間、查詢商品庫(kù)存量等可使用redis服務(wù)器進(jìn)行操作

? ? ? ? ? ? ? 3.當(dāng)進(jìn)行秒殺時(shí),要減庫(kù)存和添加商品的購(gòu)買明細(xì)(誰(shuí)購(gòu)買商品),主要是商品的競(jìng)爭(zhēng)優(yōu)化:減少事務(wù)鎖時(shí)間

編碼操作:

? 1.查詢操作 :

? ? ?使用商品ID進(jìn)行查詢數(shù)據(jù)庫(kù)存量,通過(guò)redis服務(wù)器進(jìn)行熱點(diǎn)商品的訪問(wèn)。當(dāng)存在直接返回,不存在再進(jìn)行訪問(wèn)數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)存在時(shí)將查詢的數(shù)據(jù)放在redis中。

? ? Java使用jedis客戶端進(jìn)行訪問(wèn)redis服務(wù)器,使用ID查詢r(jià)edis時(shí)需要將ID進(jìn)行序列化操作(使用ProtostuffIOUtil進(jìn)行序列化和反序列化)

? ?2.使用存儲(chǔ)過(guò)程完成一組sql的執(zhí)行,減少網(wǎng)路延遲和GC。Mybatis進(jìn)行調(diào)用存儲(chǔ)過(guò)程

? ? ? ? ? 總結(jié):請(qǐng)求被CDN緩存攔截將靜態(tài)化的頁(yè)面放入cdn節(jié)點(diǎn)上,然后使用智能DNS解析主要找到nginx地址,通過(guò)用戶Ip進(jìn)行智能解析到最近的服務(wù)器,然后進(jìn)行負(fù)載均衡,然后進(jìn)行邏輯集群redis,訪問(wèn)數(shù)據(jù)庫(kù)對(duì)關(guān)鍵的ID進(jìn)行分庫(kù)分表(mod seckilled),對(duì)用戶購(gòu)買情況進(jìn)行分析統(tǒng)計(jì)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容