電商的秒殺和搶購,對我們來說,都不是一個陌生的東西。然而,從技術的角度來說,這對於Web系統是一個巨大的考驗。當一個Web系統,在一秒鍾內收到數以萬計甚至更多請求時,系統的優化和穩定至關重要。這次我們會關注秒殺和搶購的技術實現和優化。
大型電商搶購,肯定有好多牛逼技術,負載均衡,南北鏡像。。。等等,我只是寫一個我遇到的一個搶購業務的處理方法,希望能拋磚引玉!
先上流程圖:
現在電商網站某個搶購活動,並發怎么辦?消息隊列
AMQP,即Advanced Message Queuing Protocol,高級消息隊列協議,是應用層協議的一個開放標准,為面向消息的中間件設計。消息中間件主要用於組件之間的解耦,消息的發送者無需知道消息使用者的存在,反之亦然。
AMQP的主要特征是面向消息、隊列、路由(包括點對點和發布/訂閱)、可靠性、安全。
RabbitMQ是一個開源的AMQP實現,服務器端用Erlang語言編寫,支持多種客戶端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用於在分布式系統中存儲轉發消息,在易用性、擴展性、高可用性等方面表現不俗。有玩RabbitMq的哥們,多多交流!
用戶請求會post到后台一些信息如(用戶信息,商品信息)到消息隊列中。
消息隊列通過Windows服務去處理解析過來的信息,單線程處理(多線程可能會出現問題,你懂得)!
成功的話,插入到本次活動的成功記錄表里面;失敗的話,插入到有意購買表(方便業務人員銷售)!
怎樣通知用戶?
1,ajax異步去請求(隔兩分鍾去請求一次成功記錄,如果不請求庫的話我們會用Redis緩存)
2,長連接的方式(websocket,signalr之類的)
總之想做好搶購之類的業務,路漫漫其修遠兮,希望大神們多多指導!