Java高并发秒杀Api-业务分析与DAO层构建1
章節(jié)目錄
- 1.為什么使用Spring+Spring MVC+Mybatis
- 2.秒殺業(yè)務(wù)特性
- 3.秒殺分析過程、優(yōu)化思路
- 4.相關(guān)技術(shù)介紹
- 5.基于Maven創(chuàng)建項目
- 6.秒殺業(yè)務(wù)分析
- 7.秒殺事務(wù)的難點分析
- 8.實現(xiàn)秒殺的哪些功能
1.為什么使用Spring+Spring MVC+Mybatis
- 框架易于使用、輕量級
- 對業(yè)務(wù)代碼侵入性低
- 成熟的社區(qū)與資料
2.秒殺業(yè)務(wù)特性
- 秒殺業(yè)務(wù)場景具有典型的"事務(wù)"特性
- 秒殺、紅包類需求越來越常見,對競爭資源的訪問
- 面試常問的問題
3.相關(guān)技術(shù)介紹
- MySQL
- 表設(shè)計
- SQL技巧
- 事務(wù)、行級鎖
- MyBatis
- DAO層設(shè)計與開發(fā)
- MyBatis 合理使用
- MyBatis 與 Spring整合
- Spring
- Spring Ioc 整合Service
- Spring 聲明式事務(wù)使用
- Spring MVC
- Restful 接口設(shè)計與使用
- 框架運(yùn)作流程
- Controller 設(shè)計技巧
- 前端
- 交互設(shè)計
- BootStrap
- Jquery
- 高并發(fā)
- 高并發(fā)點和高并發(fā)分析
- 優(yōu)化思路并實現(xiàn)
4.基于Maven創(chuàng)建項目
1.maven命令創(chuàng)建web項目骨架
mvn archetype:generate -DgroupId=org.seckill -DartifactId=seckill - DarchetypeArtifactId=maven-archetype-webapp5.秒殺業(yè)務(wù)分析
如下圖所示:
秒殺業(yè)務(wù)系統(tǒng)流程分析
所以秒殺業(yè)務(wù)的核心是對庫存的處理。
用戶針對庫存處理的業(yè)務(wù)分析
用戶的秒殺過程
需要減庫存->記錄購買明細(xì)->組成完整事務(wù)->數(shù)據(jù)持久化
如下圖所示:
用戶購買行為
記錄誰購買成功了->成功的時間及有效期->付款、發(fā)貨信息
為什么需要事務(wù)
數(shù)據(jù)落地方案
MySQL VS NoSQL
NoSQL非關(guān)系型數(shù)據(jù)庫在事務(wù)的支持上并沒有關(guān)系型數(shù)據(jù)庫可靠。
所以歸根結(jié)底事務(wù)機(jī)制依然是目前最可靠的落地方案。
6.秒殺事務(wù)難點分析
6.1 難點問題-競爭
解決方案是采用數(shù)據(jù)庫innodb引擎提供的事務(wù)及行級鎖。
- 用戶減庫存的事務(wù)流程: begin; update 庫存數(shù)量; insert 購買明細(xì); commit;
- 行級鎖
如下如所示:
行級鎖
情景分析:
所以秒殺的難點是什么?
秒殺的難點是如何高效的處理競爭-如何在保證數(shù)據(jù)一致性的情況下高效的處理競爭
8.實現(xiàn)秒殺的哪些功能
- 1.秒殺接口暴露
瀏覽器插件獲取秒殺接口,通過腳本去秒殺,保護(hù)秒殺接口的一種手段。 - 2.執(zhí)行秒殺的操作
執(zhí)行秒殺的業(yè)務(wù)邏輯 - 3.秒殺查詢,商品詳情頁查詢。
其實市面上最主要的幾個秒殺思路是:
1.直接在數(shù)據(jù)庫層面做秒殺
2.緩存中存儲庫存,用戶秒殺請求是將緩存中庫存與數(shù)據(jù)庫中庫存數(shù)據(jù)同時進(jìn)行減庫存的過程,保證數(shù)據(jù)一致性是一個難點。
3.緩存中存儲有效的減庫存操作,隊列減庫存的的請求依次順序執(zhí)行數(shù)據(jù)庫減庫存、生成訂單明細(xì)事務(wù)(操作),如小米。
總結(jié)
以上是生活随笔為你收集整理的Java高并发秒杀Api-业务分析与DAO层构建1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信小程序cavas画图并保存
- 下一篇: 绝地求生左右飘怎么调