折扣商品限時秒殺搶購系統
阿新 • • 發佈:2020-08-01
- 秒殺系統基於Spring Boot搭建,針對多人秒殺搶購系統做了良好的優化。
- 前端使用CDN快取和限制重複秒殺減小對伺服器的壓力。
- 後端使用Redis 進行快取,減少對資料庫請求的壓力,使用RabbitMQ非同步實現資料庫更新。
- 經過測試優化,系統的平均響應時間減少67%,吞吐量增加74%。
秒殺流程 |
---|
|
庫存預減用的是哪個redis方法
-
decr 變數:變數減一。
-
incr 變數:變數加一。
如果專案中的redis服務掛掉,如何減輕資料庫的壓力
- 叢集+主從。
- 熔斷器降級,在redis取資料做一次熔斷降級,報錯直接走資料庫。
如何避免訊息佇列的消費方重複消費訊息
- 資料庫唯一約束實現冪等,欄位使用Message的key做唯一索引。
訊息的消費結果如何返回給訊息傳送方
- 通道設定成confirm模式,
說一下你的秒殺系統設計,怎麼解決超賣
的
- 行鎖,set stock=stock-1 where stock>0
- 樂觀鎖
- LUA指令碼把判斷庫存扣減庫存的操作都寫在一起交給Redis去做
你說你用到了redis,redis有哪些資料結構,你為什麼要用redis,哪裡用到了,為什麼說redis快,多路io複用詳細原理可以說說嘛?
- 略
redis,深入講一講,並說一下它的應用場景
- 快取;限時業務,計數器;分散式鎖;佇列(push,pop)。
秒殺模組怎麼設計的,如何壓測,抗壓手段,訊息佇列怎麼用的
- JMeter,訊息佇列非同步修改庫存。
秒殺系統伺服器抗壓思路,從哪些方面去優化
-
服務單一職責:秒殺的業務邏輯放一起。
-
前端:秒殺連結加鹽加密,資源靜態化,按鈕控制。
-
Redis叢集,Nginx負載均衡,庫存預熱。
-
限流,降級,熔斷,隔離。
-
訊息佇列:削峰填谷。
秒殺專案,別說你裡面的優化,你還有什麼優化策略嗎?
- 多伺服器負載均衡,把秒殺商品平均分給伺服器。
秒殺系統的前端設計怎麼做
-
商品頁面:用於所有秒殺商品的展示。
-
秒殺頁面:用於秒殺商品的展示和秒殺功能。
說說秒殺如何實現的
- 使用者請求傳送到訊息佇列中,訊息佇列非同步處理秒殺請求。
秒殺過程中怎麼保證redis快取和資料庫的一致性
- 先更新資料庫,再更新快取
- 刪除快取,更新資料庫
- 更新資料庫,刪除快取
秒殺介面防刷怎麼做
- 秒殺連結加鹽。
- URL動態化,通過MD5之類的加密演算法加密隨機的字串去做url,然後通過前端程式碼獲取url後臺校驗才能通過。
Redis和資料庫資料不一致怎麼辦,以什麼為準
- 以資料庫為準。