1. 程式人生 > >秒殺和搶單系統的設計思路

秒殺和搶單系統的設計思路

搶單設計

  1. 系統啟動,將當天的Express加入到Redis,設定過期時間一天
  2. 訂單更新,將之前的key過期,插入一條新的
  3. 有人搶單,新增分散式鎖,將該key過期
  4. mq更新mysql,建立訂單

秒殺設計

  1. 系統啟動,將商品資訊加入redis

  2. 加Redis分散式鎖,對Redis數量進行更新,如果小於0返回失敗,如果大於0進行下一步

  3. 將訊息傳送到mq,更新mysql,建立訂單

  4. 出現的問題:

    1. 如何保證傳送成功

    2. 消費者失敗了怎麼辦

分散式事物

  1. CAP原則,不可能同時滿足
    1. 一致性Consistentcy
    2. 可用性 Availablility
    3. 分割槽容錯性 Partition tolerance
  2. BASE理論
    1. 基本可用 Basically Available
    2. 軟狀態Soft State
    3. 最終一致性 Eventually consistent
  3. 解決方案
    1. 兩段式提交2PC
    2. TCC 補償事物
    3. 本地訊息表
    4. RocketMQ