分布式高并發(fā)商品秒殺系統(tǒng)設(shè)計
項目地址:https://github.com/Grootzz/dis-seckill
介紹
本項目為另一個項目seckill的分布式改進(jìn)版本翔悠,dis-seckill意為:distributed seckill饭寺,即分布式秒殺系統(tǒng)茎辐。
商品秒殺與其他業(yè)務(wù)最大的區(qū)別在于:
- 低廉價格;
- 大幅推廣峡扩;
- 瞬時售空蹭越;
- 一般是定時上架;
- 時間短教届、瞬時并發(fā)量高响鹃、網(wǎng)絡(luò)的流量也會瞬間變大。
除了具有以上特點案训,秒殺商品還需要完成正常的電子商務(wù)邏輯茴迁,即:(1)查詢商品;(2)創(chuàng)建訂單萤衰;(3)扣減庫存堕义;(4)更新訂單;(5)付款脆栋;(6)賣家發(fā)貨倦卖。
本項目正是基于上述業(yè)務(wù)特點進(jìn)行設(shè)計的,在項目中引入諸多優(yōu)化手段椿争,使系統(tǒng)可以從容應(yīng)對秒殺場景下的業(yè)務(wù)處理怕膛。
另外,項目seckill為單體應(yīng)用秦踪,在大并發(fā)情形下處理能力有限褐捻,所以本項目對其進(jìn)行分布式改造,對職責(zé)進(jìn)行劃分椅邓,降低單體應(yīng)用的業(yè)務(wù)耦合性柠逞。
快速啟動
-
構(gòu)建工具
apache-maven-3.6.1
-
開發(fā)環(huán)境
JDK 1.8、Mysql 8.0.12景馁、SpringBoot 2.1.5板壮、zookeeper 3.4.10、dubbo 2.7.1合住、redis 5.0.5绰精、rabbitmq 3.7.15
在安裝之前,需要安裝好上述構(gòu)建工具和開發(fā)環(huán)境透葛,推薦在linux下安裝上述開發(fā)環(huán)境笨使。
第一步;完成數(shù)據(jù)庫的初始化僚害,使用./dis-seckill-common/schema/seckill.sql
初始化數(shù)據(jù)庫硫椰。
第二步;如果安裝了git,則可以采用下面的方式快速啟動最爬;
git clone git@github.com:Grootzz/dis-seckill.git
mvn clean package
啟動用戶服務(wù):
jar dis-seckill-user/target/dis-seckill-user-0.0.1-SNAPSHOT.jar
啟動商品服務(wù):
jar dis-seckill-goods/target/dis-seckill-goods-0.0.1-SNAPSHOT.jar
啟動訂單服務(wù):
jar dis-seckill-order/target/dis-seckill-order-0.0.1-SNAPSHOT.jar
啟動緩存服務(wù):
jar dis-seckill-cache/target/dis-seckill-cache-0.0.1-SNAPSHOT.jar
啟動消息隊列服務(wù):
jar dis-seckill-mq/target/dis-seckill-mq-0.0.1-SNAPSHOT.jar
啟動網(wǎng)關(guān)服務(wù):
jar dis-seckill-gateway/target/dis-seckill-gateway-0.0.1-SNAPSHOT.jar
如果將項目導(dǎo)入IDE中進(jìn)行構(gòu)建涉馁,則分別按上面的順序啟動服務(wù)即可。
第三步爱致;訪問項目入口地址
http://localhost:8082/user/index
初始用戶手機(jī)號碼:18342390420烤送,密碼:000000
系統(tǒng)架構(gòu)
- 注冊中心使用zookeeper;
- 緩存采用redis糠悯;
- 詳細(xì)隊列采用RabbitMq帮坚;
- 用戶請求全部交由Gateway模塊處理;
- Gateway模塊使用RPC的方式調(diào)用其他模塊提供的服務(wù)完成業(yè)務(wù)處理互艾。
模塊介紹
- dis-seckill-common:通用模塊
- dis-seckill-user:用戶模塊
- dis-seckill-goods:商品模塊
- dis-seckill-order:訂單模塊
- dis-seckill-gateway:網(wǎng)關(guān)模塊
- dis-seckill-cache:緩存模塊
- dis-seckill-mq:消息隊列模塊
TODO
- [ ] 引入JWT簡化權(quán)限驗證试和;
- [ ] 完成用戶注冊功能;
- [ ] 引入分布式鎖保證更改密碼接口的冪等性纫普;
- [ ] 服務(wù)模塊橫向擴(kuò)展阅悍;
- [ ] 服務(wù)調(diào)用的負(fù)載均衡與服務(wù)降級;
- [ ] gateway模塊橫向擴(kuò)展昨稼,降低單個應(yīng)用的壓力节视;
- [ ] Nginx水平擴(kuò)展;
- [ ] 接口壓測;
- [ ] ......