亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

PHP秒殺設計

皮奇 PHP開發工程師
難度中級
時長 2小時30分
學習人數
綜合評分9.53
20人評價 查看評價
9.6 內容實用
9.6 簡潔易懂
9.4 邏輯清晰

講師回答 / 皮奇
同學你好,多機本地減庫存后,還需要統一扣庫存,也就是后面的redis做統一維護,目的是防止前面的洪峰把redis沖垮。

最新回答 / qq_我的世界_11
我的PHP是7.3,nginx是1.15,我的可以從760漲到4700,ab -n1000 -c100的參數

最贊回答 / itbsl
代碼層面做限流的話,可以用redis來配合做,假設你的一個接口的請求限制的一個IP1s內只能有一個請求,則可以將接口名+IP作為鍵存一個bool值true,并且設置生命周期為1s,每次處理請求時先從redis里根據“接口名+IP”拿值,如果該值為true,說明一秒內已經有過一次請求,這種就可以直接拒絕不繼續往下處理,相反如果拿不到值了,說明之前沒有請求過或者請求的時間已經是1s之前了,這種就允許通過,繼續處理下面的業務。

講師回答 / 皮奇
這個其實是個高空用的問題,屬于運維層面要解決的事情,一般redis不是直連,而是通過vip連接到proxy,proxy再根究切片配置轉發到redis實例,每個redis實例是一主多從,讀寫都在主,主掛了之后會自動通過raft算法選舉出一個新的主,用于確保服務的高可用。市面上有比較成熟的解決方案,如codis,可以了解下。

講師回答 / 皮奇
同學你好,你的思路不錯,可以繼續去想下直接incrby改會有什么問題,老師提供的思路只是其中一個方案,真正場景實現肯定會有非常多的方案,需要大家自己思考。redis->eval本身就是執行lua腳本,redis->incrby理論上也可以防止邊界條件的發生,不會造成超賣,因為incrby就實現了查詢+修改的原子操作,但是有一點點小缺點就是,不能做到只要一超賣了就直接終止+1。

講師回答 / 皮奇
不過代碼在這,https://github.com/huangtao1990/seckill?只是示例代碼,不能直接用于生產環境。

講師回答 / 皮奇
同學你好,具體哪聽不懂可以反饋給我,我后續慢慢優化。lua一門腳本語言,是一門短小精悍的語言,代碼量非常少,可以嵌入到任何一門C開發的工具中,因此在nginx、redis中都有應用,可以快速的擴展nginx與redis這兩個工具的功能。

講師回答 / 皮奇
同學你好,代碼在這,https://github.com/huangtao1990/seckill?只是示例代碼,不能直接用于生產環境。分布式服務器如何共享數據確實可以通過第三方的redis共享數據,如果同步數據可以用隊列。

講師回答 / 皮奇
同學你好,代碼在這,https://github.com/huangtao1990/seckill?只是示例代碼,不能直接用于生產環境。課件有版權保護,不能分享,抱歉哈。
課程須知
1、php 2、redis 3、nginx
老師告訴你能學到什么?
圍繞秒殺系統核心實現,掌握高并發的核心解決思路,結合技術全景圖提高大家的全局視野

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!

本次提問將花費2個積分

你的積分不足,無法發表

為什么扣積分?

本次提問將花費2個積分

繼續發表請點擊 "確定"

為什么扣積分?

舉報

0/150
提交
取消