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