基于 SpringBoot+Mybatis+Redis+RabbitMQ 秒殺系統(tǒng)
項目特點
- 系統(tǒng)極致優(yōu)化
瀏覽器緩存/Nginx緩存/ 頁面緩存/ 對象緩存/RabbitMQ隊列異步下單,減少網(wǎng)絡流量,減輕數(shù)據(jù)庫壓力,全面提升系統(tǒng)并發(fā)處理能力 - 深入微服務技能
SpringBoot/ RabbitMQ /Redis/ MySQL , 基于時下最火熱的Java微服務框架 - 分布式系統(tǒng)方案
從單機到集群,易于橫向擴展只需增加服務器即可應對更大的流量和并發(fā) - 安全策略
圖形驗證碼、限流防刷、接口地址隱藏 , 多種安全機制拒絕機器人刷票黨
開發(fā)環(huán)境
- JDK
- mysql
- springboot
- redis
- rabbitmq
項目啟動說明
1、啟動前,請配置 application.properties 中相關redis、mysql、rabbitmq地址,并導入數(shù)據(jù)庫,數(shù)據(jù)庫在項目db文件夾中。 默認前端登錄賬號:12345678910 密碼:123456
2、登錄地址:http://localhost:8080/login/to_login
3、商品秒殺列表地址:http://localhost:8080/goods/to_list
其它說明
1、優(yōu)化如下:
- 使用分布式Seesion,讓多臺服務器可以響應。
- 使用redis做緩存提高訪問速度和并發(fā)量,減少數(shù)據(jù)庫壓力。
- 使用頁面靜態(tài)化,緩存頁面至瀏覽器,前后端分離降低服務器壓力。。
- 使用不同層級、不同粒度的緩存Redis預減庫存、消息隊列異步下單逐級削減對數(shù)據(jù)庫的訪問
- 安全性優(yōu)化:雙重md5密碼校驗,秒殺接口地址的隱藏,接口限流防刷,數(shù)學公式驗證碼。
頁面截圖
登錄頁
image.png
商品列表情頁
image.png
商品詳情頁
image.png
訂單詳情頁
image.png
項目接口流程說明
獲取秒殺接口
獲取秒殺接口
執(zhí)行秒殺
執(zhí)行秒殺
登錄注冊流程
登錄,雙重md5加密
接口限流流程
接口限流流程
前端流程
- 點擊商品詳情,訪問商品詳情接口。該接口返回商品是否開啟秒殺,沒有開啟則返回秒殺時間。
- 當商品開啟秒殺時,填入驗證碼信息,點擊秒殺按鈕,先去訪問獲取秒殺路徑,獲取path路徑,然后根據(jù)path路徑訪問執(zhí)行秒殺接口非阻塞的返回結(jié)果,再去異步輪訓訪問秒殺結(jié)果接口,根據(jù)秒殺結(jié)果接口去判斷秒殺成功或者失敗。