並發問題 1000並發、3個獎品,如何保證秒殺穩定進行?

來源:互聯網
上載者:User
關鍵字 php mysql 高並發
1000並發 3個獎品 保證秒殺穩定進行,並且中獎者和獎品數量不要出問題
這個問題怎麼處理 ,mysql的 希望各位有經驗的同學分享下經驗以及解決方案,謝謝,在先等

回複內容:

1000並發 3個獎品 保證秒殺穩定進行,並且中獎者和獎品數量不要出問題
這個問題怎麼處理 ,mysql的 希望各位有經驗的同學分享下經驗以及解決方案,謝謝,在先等

Redis 隊列
Redis 可以應對高並發情境,是因為它的讀寫請求均是單線程機制,不存在並發問題。而且 Redis 是基於記憶體的,讀寫速度也比 MySQL 快得多

因為獎品只有三個,所以無論多少個請求過來,最多隻能有三個請求可以正確獲得獎品,所以可以將大部分的請求不做任何處理,直接返回秒殺失敗,剩下很小的請求進入到下環節,此時並發很小,所以接下來的處理幾乎可以不再考慮並發問題。
當然此方案僅因為獎品數很少,如果獎品本身很多,即使拋棄大部分的請求,系統也承受較大並發衝擊,此時需要考慮其它方案。

請用緩衝把獎品全部加入到裡面。然後全部從緩衝裡秒,秒到了才更新資料庫

看你描述你的秒殺情境感覺比我們的稍微簡單一些,如果不考慮非常嚴謹的擴充性,只考慮當下,我感居然可以如下方式簡單實現:

假設你最佳化下mysql或升級下硬體,1000並發全部查詢mysql資料庫是否還有庫存,可以頂得住的話,那麼只需要一個佇列服務,把所有並發秒殺使用者全部進入到隊列逐條同步篩選出3個中獎使用者,然後在產生訂單的時候扣掉mysql裡面的庫存,並且響應給前端頁面檢測是否秒殺成功的進程即可,其他的997個使用者全部響應給前端進程秒殺失敗提醒

假設頂不住或者沒錢升級?那就用redis之類的服務把1000個獎品資訊存入緩衝,秒殺成功產生訂單的時候同步更新mysql和redis裡面的庫存數量

因為題主聲明了只使用MySQL,我認為可以這樣做:

1.將3個獎品放入一張表中;
2.到點後系統進入高並髮狀態,然後你們的獎品隨機演算法使使用者中獎並刪除記錄;
3.檢測表中是否還有資料;

也可以這樣:

1.建立一張中獎專用計數表;
2.到點後系統進入高並髮狀態,然後你們的獎品隨機演算法使使用者中獎並增加計數;

至於最佳化方案(暫時能想到的,希望大神補充):

1.儲存引擎使用 MEMORY
2.可以在程式入口處設定一個到期時間,3個獎品的話,10秒鐘足夠了,到期後入口關閉或跳轉;

最簡單的方法是把1000並發用隊列拉成線性就行了,當某個請求發現庫存沒了,以後的所有請求全部返回秒殺失敗。

才1000的並發/資料,為啥要用資料庫。資料庫的速度還是很慢很慢的。
伺服器直接為每個請求儲存一個時間戳記,然後排序就好了。反正使用者1-2秒之後獲得結果也不會有什麼特別的感覺。

將請求儲存到隊列,只取隊列的前三個值,後面的全部返回已售完。

需要一個佇列服務,把所有的並發秒殺使用者,全部進入到隊列逐條同步篩選出3個中獎使用者,然後在產生訂單的時候扣掉mysql裡面的庫存,並且響應給前端頁面檢測是否秒殺成功的進程即可,其他的997個使用者全部響應給前端進程秒殺失敗提醒

用 mysql 記憶體表。先用 hash user_id等方法隨機丟掉一部分請求

然後直接 update 記憶體表,例:

``
update award set user_id=xxx where id=1 and user_id=0
``

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.