国产av一区二区不卡-精品国产高清自在线看超-中文字幕亚洲一区二区va在线-国产三级不卡在线播放

×
新網 > 云服務器 > 正文

服務器架構與高并發性能測試實戰方案(二)

  • 作者:新網
  • 來源:新網
  • 瀏覽:100
  • 2018-05-10 17:55:04

場景中的這些業務基本是用戶進入APP后會操作到的,除了活動日(618、雙11等),這些業務的用戶量都不會高聚集,同時這些業務相關的表都是大數據表,業務多是查詢操作,所以我們需要減少用戶直接命中DB的查詢;優先查詢緩存,如果緩存不存在,再進行DB查詢,將查詢結果緩存起來。

 3.實戰方案

 

<div>002UASMrzy7605pjKJv15&690.jpg
1)通用方案
 
日用戶流量大,但是比較分散,偶爾會有用戶高聚的情況;
 
場景: 用戶簽到,用戶中心,用戶訂單等。
 
說明:
 
場景中的這些業務基本是用戶進入APP后會操作到的,除了活動日(618、雙11等),這些業務的用戶量都不會高聚集,同時這些業務相關的表都是大數據表,業務多是查詢操作,所以我們需要減少用戶直接命中DB的查詢;優先查詢緩存,如果緩存不存在,再進行DB查詢,將查詢結果緩存起來。
 
更新用戶相關緩存需要分布式存儲,比如使用用戶ID進行hash分組,把用戶分布到不同的緩存中,這樣一個緩存集合的總量不會很大,不會影響查詢效率。
 
方案如:
 
用戶簽到獲取積分:
 
計算出用戶分布的key,Redis,hash中查找用戶今日簽到信息
 
如果查詢到簽到信息,返回簽到信息
 
如果沒有查詢到,DB查詢今日是否簽到過,如果有簽到過,就把簽到信息同步Redis緩存。
 
如果DB中也沒有查詢到今日的簽到記錄,就進行簽到邏輯,操作DB添加今日簽到記錄,添加簽到積分(這整個DB操作是一個事務)
 
緩存簽到信息到Redis,返回簽到信息
 
注意這里會有并發情況下的邏輯問題,如:一天簽到多次,發放多次積分給用戶。
 
用戶訂單:
 
這里我們只緩存用戶第一頁的訂單信息,一頁40條數據,用戶一般也只會看第一頁的訂單數據
 
用戶訪問訂單列表,如果是第一頁讀緩存,如果不是讀DB
 
計算出用戶分布的key,Redis,hash中查找用戶訂單信息
 
如果查詢到用戶訂單信息,返回訂單信息
 
如果不存在就進行DB查詢第一頁的訂單數據,然后緩存redis,返回訂單信息
 
用戶中心:
 
計算出用戶分布的key,Redis hash中查找用戶訂單信息
 
如果查詢到用戶信息,返回用戶信息
 
如果不存在進行用戶DB查詢,然后緩存redis,返回用戶信息
 

免責聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,也不承認相關法律責任。如果您發現本社區中有涉嫌抄襲的內容,請發送郵件至:operations@xinnet.com進行舉報,并提供相關證據,一經查實,本站將立刻刪除涉嫌侵權內容。

免費咨詢獲取折扣

Loading