這篇文章給大家分享的是有關(guān)SQL導(dǎo)致購物車服務(wù)無法使用怎么辦的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
概述
之前處理過一個(gè)購物車故障,覺得還挺經(jīng)典的,在這里跟大家分享一下。這個(gè)故障直接導(dǎo)致前端添加購物車、獲取用戶購物車列表等操作都失敗了。購物車是入口,一旦出現(xiàn)問題,影響極其嚴(yán)重。
臨時(shí)處理
購物車服務(wù)所有接口,是有打印響應(yīng)時(shí)間的,發(fā)現(xiàn)比平時(shí)慢了很多。由于情況已是十萬火急了,我只能先重啟購物車,緩沖一下,然后利用這段緩沖時(shí)間,趕緊定位問題。
問題定位
之前對購物車應(yīng)用基于Spring Cloud
微服務(wù)化了,已經(jīng)穩(wěn)定運(yùn)行了幾個(gè)月了,且當(dāng)時(shí)上線前也經(jīng)過壓測,接口性能是沒問題的。怎么突然之間就有問題了呢?根據(jù)以往的經(jīng)驗(yàn),大部分故障都是SQL
語句引起的,因此首先導(dǎo)出數(shù)據(jù)庫的所有慢SQL
(騰訊云有導(dǎo)出慢SQL的工具)語句,發(fā)現(xiàn)大部分慢查詢都是來自庫存查詢的SQL
語句,有些甚至是10秒鐘才執(zhí)行完。
后來仔細(xì)一看,庫存慢查詢語句,要查詢庫存的商品比平時(shí)多很多。商品個(gè)數(shù)少的話,這條語句還是非??斓模坏┒嗔司烷_始慢了。
解決方案
由于庫存計(jì)算體系的歷史原因,這條SQL
是很難優(yōu)化的。情況又是十萬火急的,大老板一直在問咋回事。因此臨時(shí)改代碼,將商品庫存放到Redis
緩存起來。購物車服務(wù)的話,是允許庫存數(shù)據(jù)不實(shí)時(shí)的,因?yàn)楹竺娴慕Y(jié)算和支付會實(shí)時(shí)計(jì)算庫存,庫存不足的時(shí)候,會提示用戶的。
注意:
由于購物車是入口,流量很大,而從購物車到結(jié)算頁再到支付,由于有一個(gè)操作步驟,因此結(jié)算頁和支付頁的流量是沒有購物車那么大的;
部分用戶購物車上的商品數(shù)據(jù)是非常多的,但是未必都會買,用戶也可以勾選要買的商品,然后下單;
部分用戶沒有清理購物車失效商品的習(xí)慣,導(dǎo)致購物車上的商品非常多。
終極解決方案
將庫存服務(wù)獨(dú)立出去,將商品庫存數(shù)據(jù)放置到緩存,并引入實(shí)時(shí)刷新緩存中庫存數(shù)據(jù)的機(jī)制,讓緩存中的數(shù)據(jù)盡量保證新鮮。這樣的話,查詢庫存的時(shí)候,大部分都可以從緩存中獲取,不會穿透到數(shù)據(jù)庫上。
補(bǔ)充
我們對接口進(jìn)行壓測的時(shí)候,部分場景下,要考慮入?yún)⒌膫€(gè)數(shù),不能簡單的用幾個(gè)數(shù)據(jù)壓測,覺得性能OK就不管了。
感謝各位的閱讀!關(guān)于“SQL導(dǎo)致購物車服務(wù)無法使用怎么辦”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
本文標(biāo)題:SQL導(dǎo)致購物車服務(wù)無法使用怎么辦-創(chuàng)新互聯(lián)
鏈接分享:http://sd-ha.com/article16/dedhdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、企業(yè)建站、關(guān)鍵詞優(yōu)化、網(wǎng)站改版、靜態(tài)網(wǎng)站、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容