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