業務大致流程:
系統時間獲取
1. 原因
1.1 用戶會大量刷新頁面
1.2 CDN存放的是大量的靜態頁面,靜態css,js資源
Tips:CDN的理解:內容分發網絡
1.2.1 用來加速用戶獲取數據的系統上面
1.2.2 部署用戶最近的網絡節點上面-城域網,主幹網絡
1.2.3 命中CDN不需要訪問後端服務器
1.2.4 互聯網自己搭建或租用
- 獲取系統時間的接口不要進行優化
- 秒殺地址接口的分析
- 1.表現
- 1.1 無法使用CDN的緩存
- 1.2 適合服務器端的緩存:redis等
- 1.3 一致性維護成本比較低
2.原因
2.1 cdn寄存在網絡節點上面,然而秒殺接口的數據又是動態的,所以無法進行cdn的緩存
3.解決方法
4.優弱勢分析
4.1 mysql的弱勢
4.1.1 java控制事務行為分析—串式循環,等待行鎖的操作
4.2 網絡延遲
4.3 GC的延遲
5.解決方案點
5.1 行級鎖在commit之後釋放
5.2 優化方向減少行級鎖持有時間
5.3 具體方案
5.3.1 把客戶端的邏輯放在mysql服務器,避免網絡延遲和GC的影響
5.3.2 定製mysql的方案:update /auto_commit/ 需要修改mysql源碼
5.3.3 使用存儲過程:整個事務在mysql端進行完成
- 總結
- 6.1 前端控制:暴露接口,防按鈕重複
- 6.2 動靜態數據:cdn緩存,後端緩存
- 6.3 事務競爭優化:減少事務鎖時間
閱讀更多 Java程序猿鼓勵師 的文章