3 高併發下的系統優化 寫操作壓測

2021-10-04 23:39:23 字數 719 閱讀 3116

關於寫操作,想了半天感覺和讀操作差不多,那麼這裡就模擬一下秒殺的情景,看下500的數量,搶購時訂單多久搶完,排隊的情景。

測試場景:請求進來以後進行redis鑑權,查詢商品是否存在(資料庫百萬級),獲取使用者詳細資訊,落單減庫存(百萬級),訂單入庫,增加銷量(百萬級)。

在之前配置下,redis記錄商品資訊,不參與讀寫操作:

還沒有售罄的狀態下:

售罄以後:

對於連續讀寫操作時,效能。。。

引入rocketmq+redis(應用等待mq返回後才返回):

還有庫存的時候

而且從資料庫和redis顯示,二者差了1000多個。

沒有返回值的時候: 

二者差別不大,至於秒殺令牌令牌桶之類的限流這裡就不測了。

總的來說對於寫操作來說,由於必須和資料庫產生互動,效能損耗是不可避免的,我們只能盡量通過中介軟體用非同步的形式把這些損失轉化到後面,當然對於使用者體驗來說還是要看實際場景。

接下來會通過擴充套件資料庫和redis主從結構進行優化

高併發下的nginx優化

網際網路分布式架構設計,提高系統併發能力的方式主要有兩種 垂直擴充套件 scale up 與水平擴充套件 scale out 垂直擴充套件 提公升單機處理能力。垂直擴充套件的方式又有兩種。增強單機硬體效能 提公升單機架構效能 水平擴充套件 增加伺服器,集群。在網際網路業務發展非常迅猛的早期,如果預算...

springboot 高併發下耗時操作的實現

高併發下,就是請求在乙個時間點比較多時,很多寫的請求打過來時,你的伺服器承受很大的壓力,當你的乙個請求處理時間長時,這些請求將會把你的伺服器執行緒耗盡,即你的主線程池裡的執行緒將不會再有空閒狀態的,再打過來的請求,將會是502了。thread1 thread2 thread3使用deferredre...

springboot 高併發下耗時操作的實現

官方文件中說deferredresult和callable都是為了非同步生成返回值提供基本的支援。簡單來說就是乙個請求進來,如果你使用了deferredresult或者callable,在沒有得到返回資料之前,dispatcherservlet和所有filter就會退出servlet容器執行緒,但響...