需求拆解
- 首頁四大塊:全站統計(靜態)、靜態頁面、個人統計(動態)、數據展示(少量動態)。
- 千萬級 UV,要求前端負載均衡、集群、異步;後端存儲不限。
架構分層
- 接入層:DNS 轮詢 → LVS/Nginx 四層負載 → Nginx 七層反向代理 (靜態資源直輸、動態轉發)。
- 服務層:無狀態 Web 服務集群 (Tomcat/Netty/Go/Java),Session 存 Redis 集群。
- 緩存層:
- 全站統計/靜態頁面 → CDN + Nginx 本地緩存 (過期時間長)。
- 個人統計/少量動態 → Redis (Key: userId, TTL 短)。
- 存儲層:
- MySQL 主從讀寫分離 (核心業務)。
- 熱點小數據 (配置、字典) → Redis/本地內存。
- 大數據分析 → ClickHouse/Druid。
- 異步解耦:MQ (Kafka/RocketMQ) 處理日志、統計聚合、非實時通知。
關鍵優化點
- 頁面靜態化 (FreeMarker/Thymeleaf 生成 HTML 推 CDN)。
- ESI (Edge Side Includes) 組裝動態片段。
- 瀏覽器緩存策略 (ETag/Last-Modified/Cache-Control)。
- 資源合並壓縮、HTTP/2、預加載。
推薦讀物
《大型網站系統與 Java 中間件實踐》—— 系統講解高併發架構演進。