課程
/后端開(kāi)發(fā)
/Java
/Java高并發(fā)秒殺API之高并發(fā)優(yōu)化
暴露秒殺接口地址,為何需要弄個(gè)接口? 直接在執(zhí)行秒殺接口中檢查時(shí)間邏輯,不也可以嗎 ?有什么優(yōu)勢(shì)
2016-09-27
源自:Java高并發(fā)秒殺API之高并發(fā)優(yōu)化 1-1
正在回答
主要目的防止秒殺地址提前被“刷客”知道,防止使用腳本自動(dòng)刷。只有秒殺開(kāi)啟時(shí)才能知道具體的秒殺地址,讓這樣大家處于同一起跑線上。
個(gè)人見(jiàn)解:
若沒(méi)暴露秒殺接口,像我們程序員可以提前捕捉到執(zhí)行秒殺的具體url,
1)根據(jù)里面的信息推測(cè)出其他商品的秒殺地址;
2)建立不同的用戶對(duì)應(yīng)的秒殺商品的url;
3)雖然現(xiàn)在無(wú)法秒殺(秒殺時(shí)間未到,如果時(shí)間未到,后臺(tái)卻接到了某個(gè)秒殺請(qǐng)求,嘿嘿嘿,這個(gè)用戶需要封鎖,他想搞事情?。。。菚r(shí)間一到通過(guò)循環(huán)發(fā)送請(qǐng)求,占用服務(wù)器端大量的請(qǐng)求,相對(duì)其他用戶就不公平了。
秒殺接口只有在秒殺開(kāi)啟的時(shí)候才暴露,有人說(shuō),那我照樣使用這個(gè)秒殺地址執(zhí)行一系列的循環(huán)腳本訪問(wèn),不也一樣嘛?首先我們程序員需要知道第二次訪問(wèn)就是秒殺商品的對(duì)應(yīng)的url,萬(wàn)一不是呢,第二次訪問(wèn)可能只是用戶信息的提交,第三次才是呢?因此我們這邊需要在眾多url請(qǐng)求中篩選出最終的秒殺商品的url,所以在提前不知道目標(biāo)系統(tǒng)其秒殺的邏輯和順序的話,應(yīng)該需要花一段時(shí)間進(jìn)行分析。。。然后等你分析完了,發(fā)現(xiàn)秒殺已經(jīng)開(kāi)始5分鐘了,普通用戶已經(jīng)搶完了。。。
我認(rèn)為,老師這樣做還是有一定的道理
在秒殺前,你不知道秒殺地址,是沒(méi)被刷的,當(dāng)你點(diǎn)擊秒殺開(kāi)始時(shí),你的手機(jī)號(hào)會(huì)被驗(yàn)證,然后進(jìn)行md5對(duì)比,秒殺成功,秒殺地址暴露,嘿嘿,數(shù)據(jù)庫(kù)已經(jīng)有你的秒殺的記錄,所有你再去刷已經(jīng)沒(méi)用了
還是加個(gè)人機(jī)驗(yàn)證靠譜。
這不是然并卵嘛。。
1- 我寫(xiě)個(gè)腳本等著你暴露秒殺接口,用腳本拿秒殺地址然后秒殺
和
2- 直接寫(xiě)個(gè)腳本秒殺。。
區(qū)別大嗎?
秒殺這一業(yè)務(wù):首先需要查詢商品的秒殺狀態(tài)查詢和然后執(zhí)行秒殺(減庫(kù)存+下單)。如果將這兩步合在一起執(zhí)行,就會(huì)讓刷單人員,提前知道執(zhí)行秒殺的地址(URL)是什么。你說(shuō)危不危險(xiǎn)
所以老師將這兩步進(jìn)行分離,只有在秒殺開(kāi)始的時(shí)候才放出執(zhí)行秒殺的URl
我想了下 可能原因: 1、暴露秒殺 和 執(zhí)行秒殺 是兩個(gè)不同業(yè)務(wù),互不影響 ?2、暴露秒殺 的邏輯可能會(huì)有更多變化,現(xiàn)在是時(shí)間上達(dá)到要求才能暴露,說(shuō)不定下次加個(gè)別的條件才能暴露,基于業(yè)務(wù)耦合度考慮,分開(kāi)比較好。3、重新更改暴露秒殺接口業(yè)務(wù)時(shí),不會(huì)去影響執(zhí)行秒殺接口,對(duì)于測(cè)試都是有好處的。。。
另外 不好的地方是前端需要調(diào)用兩個(gè)接口才能執(zhí)行秒殺。
同感,秒殺地址要暴露,就牽扯到了秒殺對(duì)象的緩存。這里為什么要暴露。沒(méi)搞明白。
代碼規(guī)范,看過(guò)一片手記,講經(jīng)理寫(xiě)接口,下屬寫(xiě)實(shí)現(xiàn)類(lèi)
舉報(bào)
Java實(shí)現(xiàn)高并發(fā)秒殺API的第四門(mén)課,小伙伴一定可以從中受益
2 回答Mybatis不是也有個(gè)緩存嗎,可不可以用來(lái)做這個(gè)暴露秒殺地址接口?
2 回答關(guān)于并發(fā)接口定位
1 回答秒殺項(xiàng)目搭建
2 回答關(guān)于秒殺state字段值
3 回答秒殺的高并發(fā)分析 insert和update為什么要顛倒過(guò)來(lái)
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2016-11-22
主要目的防止秒殺地址提前被“刷客”知道,防止使用腳本自動(dòng)刷。只有秒殺開(kāi)啟時(shí)才能知道具體的秒殺地址,讓這樣大家處于同一起跑線上。
2019-08-21
個(gè)人見(jiàn)解:
若沒(méi)暴露秒殺接口,像我們程序員可以提前捕捉到執(zhí)行秒殺的具體url,
1)根據(jù)里面的信息推測(cè)出其他商品的秒殺地址;
2)建立不同的用戶對(duì)應(yīng)的秒殺商品的url;
3)雖然現(xiàn)在無(wú)法秒殺(秒殺時(shí)間未到,如果時(shí)間未到,后臺(tái)卻接到了某個(gè)秒殺請(qǐng)求,嘿嘿嘿,這個(gè)用戶需要封鎖,他想搞事情?。。。菚r(shí)間一到通過(guò)循環(huán)發(fā)送請(qǐng)求,占用服務(wù)器端大量的請(qǐng)求,相對(duì)其他用戶就不公平了。
秒殺接口只有在秒殺開(kāi)啟的時(shí)候才暴露,有人說(shuō),那我照樣使用這個(gè)秒殺地址執(zhí)行一系列的循環(huán)腳本訪問(wèn),不也一樣嘛?首先我們程序員需要知道第二次訪問(wèn)就是秒殺商品的對(duì)應(yīng)的url,萬(wàn)一不是呢,第二次訪問(wèn)可能只是用戶信息的提交,第三次才是呢?因此我們這邊需要在眾多url請(qǐng)求中篩選出最終的秒殺商品的url,所以在提前不知道目標(biāo)系統(tǒng)其秒殺的邏輯和順序的話,應(yīng)該需要花一段時(shí)間進(jìn)行分析。。。然后等你分析完了,發(fā)現(xiàn)秒殺已經(jīng)開(kāi)始5分鐘了,普通用戶已經(jīng)搶完了。。。
2019-03-29
我認(rèn)為,老師這樣做還是有一定的道理
在秒殺前,你不知道秒殺地址,是沒(méi)被刷的,當(dāng)你點(diǎn)擊秒殺開(kāi)始時(shí),你的手機(jī)號(hào)會(huì)被驗(yàn)證,然后進(jìn)行md5對(duì)比,秒殺成功,秒殺地址暴露,嘿嘿,數(shù)據(jù)庫(kù)已經(jīng)有你的秒殺的記錄,所有你再去刷已經(jīng)沒(méi)用了
2019-02-09
還是加個(gè)人機(jī)驗(yàn)證靠譜。
2019-02-09
這不是然并卵嘛。。
1- 我寫(xiě)個(gè)腳本等著你暴露秒殺接口,用腳本拿秒殺地址然后秒殺
和
2- 直接寫(xiě)個(gè)腳本秒殺。。
區(qū)別大嗎?
2017-08-01
秒殺這一業(yè)務(wù):首先需要查詢商品的秒殺狀態(tài)查詢和然后執(zhí)行秒殺(減庫(kù)存+下單)。如果將這兩步合在一起執(zhí)行,就會(huì)讓刷單人員,提前知道執(zhí)行秒殺的地址(URL)是什么。你說(shuō)危不危險(xiǎn)
所以老師將這兩步進(jìn)行分離,只有在秒殺開(kāi)始的時(shí)候才放出執(zhí)行秒殺的URl
2016-10-11
我想了下 可能原因: 1、暴露秒殺 和 執(zhí)行秒殺 是兩個(gè)不同業(yè)務(wù),互不影響 ?2、暴露秒殺 的邏輯可能會(huì)有更多變化,現(xiàn)在是時(shí)間上達(dá)到要求才能暴露,說(shuō)不定下次加個(gè)別的條件才能暴露,基于業(yè)務(wù)耦合度考慮,分開(kāi)比較好。3、重新更改暴露秒殺接口業(yè)務(wù)時(shí),不會(huì)去影響執(zhí)行秒殺接口,對(duì)于測(cè)試都是有好處的。。。
另外 不好的地方是前端需要調(diào)用兩個(gè)接口才能執(zhí)行秒殺。
2016-10-11
同感,秒殺地址要暴露,就牽扯到了秒殺對(duì)象的緩存。這里為什么要暴露。沒(méi)搞明白。
2016-09-28
代碼規(guī)范,看過(guò)一片手記,講經(jīng)理寫(xiě)接口,下屬寫(xiě)實(shí)現(xiàn)類(lèi)