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

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

PHP秒殺設計

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

講師回答 / 皮奇
統一減庫存一般是Redis集群,本身有高可用方案,掛了一臺,Redis的哨兵會把從機器頂替上??梢詫W習了解一下Redis的集群方案實現

講師回答 / 皮奇
這是個好問題,可以flock函數加一個非阻塞的文件鎖,搶到鎖的用戶去減本地庫存;

講師回答 / 皮奇
buffer可以多留一些,目的是防止某幾臺業務機器故障后,庫存賣不出去

講師回答 / 皮奇
rediscluster可以使用,但因為沒有統一的proxy代理,查詢效率上會打折扣,因此才會有 codis、twproxy等方案出現,而在一線互聯網公司,會基于rediscluster上,自研一個proxy

講師回答 / 皮奇
是的,需要單獨寫腳本去消費處理隊列中數據,隊列一般不建議直接使用Redis,因為沒有ack機制,一條數據不能保證被可靠的消費,建議使用 kafka隊列

講師回答 / 皮奇
本地存apcu是可行的,或直接用go這種常駐內存語言來做也可以?

講師回答 / 皮奇
Redis中總庫存嗎?list也可以實現,但是你得導入數據,較麻煩

講師回答 / 皮奇
還是PHP操作Redis,執行的是Redis的eval命令,這個命令傳入的字符串是lua代碼,可以在Redis服務器執行這段lua代碼。

講師回答 / 皮奇
仔細聽,強調了需要有訂單超時處理機制,避免占用庫存長時間不支付的場景出現。而且之所以選擇第三個方案原因為對比第一個方案,創建訂單等寫庫耗時操作可以異步化,性能更占優勢。

講師回答 / 皮奇
同學你好, 只是示例代碼,不能直接用于生產環境

講師回答 / 皮奇
apcu只是其中一種本地緩存的方案,本地緩存還可以通過在本地安裝redis來實現。opcache 和?apcu 沖突的指的是什么沖突呢?

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

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

講師回答 / 皮奇
同學你好,你的思路不錯,可以繼續去想下直接incrby改會有什么問題,老師提供的思路只是其中一個方案,真正場景實現肯定會有非常多的方案,需要大家自己思考。redis->eval本身就是執行lua腳本,redis->incrby理論上也可以防止邊界條件的發生,不會造成超賣,因為incrby就實現了查詢+修改的原子操作,但是有一點點小缺點就是,不能做到只要一超賣了就直接終止+1。
首頁上一頁123下一頁尾頁
課程須知
1、php 2、redis 3、nginx
老師告訴你能學到什么?
圍繞秒殺系統核心實現,掌握高并發的核心解決思路,結合技術全景圖提高大家的全局視野

微信掃碼,參與3人拼團

微信客服

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

幫助反饋 APP下載

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

公眾號

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

友情提示:

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

本次提問將花費2個積分

你的積分不足,無法發表

為什么扣積分?

本次提問將花費2個積分

繼續發表請點擊 "確定"

為什么扣積分?

舉報

0/150
提交
取消