1、通用設計方法
- 縱向擴展,分庫分表
- 前置緩存,內存加速
- 消息隊列,異步處理
2、架構分層
- 簡化系統設計,讓不同的人專做不同的事
- 系統複用,提升研發的效率
- 易於擴展,對模塊業務單獨做擴展
3、數據庫優化
- 連接池,基於池化技術,連接複用,降低數據庫連接數
- 主從複製,讀寫分離,數據冗餘,使用緩存
- 分庫分表,業務類型垂直拆分,單表按照哈希或時間水平拆分,分區鍵表冗餘
- 分佈式ID,數據庫按步遞增或雪花算法,二者皆可
- 索引原理,B+Tree,LSM樹,跳錶,紅黑樹
4、緩存優化
- 分佈式緩存,動態緩存,結合靜態緩存(本地緩存)
- Cache Aside(旁路緩存)策略,Read/Write Through 和 Write Back 策略
- 基於哈希算法的分佈式存儲
- Codis,一種redis集羣
- 緩存穿透,帕累托法則,回種空值,使用布隆過濾器
- 靜態資源,CDN加速
5、消息隊列
-
秒殺場景,異步處理,解耦合和削峯填谷
-
消息丟失:消息重傳,異步刷盤,kafka多副本部署
-
消費一次:冪等機制,一件事情無論做多少次,都是一樣的
-
消費延遲:優化消費代碼,零拷貝,增加消費者數量