秒殺系統api的設計架構

秒殺方案:前端

原子計數器   redis/mysql  redis 集羣mysql

記錄行爲   分佈式MQ-rabbitMQredis

消費消息並落地  mysqlsql

運維成本和穩定性:NoSQL MQ 後端

開發成本:數據一致性,回滾方案等。api

冪等性難保證:重複秒殺問題。緩存

不適合新手的框架。網絡

=======框架

爲何不用mysql mysql低效運維

測試-

同一條mysql update  壓力測試 4w qps 每秒4萬次。

優化方向 減小行級鎖的持有時間。

update確認影響記錄數

優化思路:

把客戶端邏輯放到mysql服務端,避免網絡延遲和GC影響。

定製sql方案:

 

  • update /*+[auto_commit]*/,須要修改MySQL源碼
  • 使用存儲過程:整個事物在MySQL端完成。

優化總結:

前端控制:暴露接口,按鈕防重複。

動靜態數據分離:cdn緩存,後端緩存。

cdn--api像cdn推送數據和頁面等。

事務競爭優化-減小事務鎖持有時間。有網絡延遲和GC,改爲MYSQL處理。

相關文章
相關標籤/搜索