設計高可用和高併發
《億級流量網站架構核心技術》讀書筆記前端
主要講解高可用,高併發java
高可用web
- 負載均衡
負載均衡算法
失敗重試機制
健康檢查機制
動態負載均衡
- 限流
限流算法
應用級限流
分佈式限流
接入層限流
- 降級
降級預案
自動降級/開關降級
讀服務/寫服務降級
多級降級
配置中心
使用Hystrix降級
使用Hystrix熔斷
- 隔離
進程線程隔離
集羣/機房隔離
讀寫隔離
動靜隔離
爬蟲/熱點隔離
使用Hystrix隔離
基於Servlet3的請求隔離
- 超時與重試
代理層超時和重試
web容器超時
中間件客戶端超時與重試
數據庫客戶端超時
NoSQL客戶端超時
業務超時
前端ajax超時
- 回滾
事物回滾
代碼庫回滾
部署版本回滾
數據版本回滾
靜態資源回滾
- 壓測與預案
系統壓測
壓測方案:壓測接口/併發量/壓測策略/壓測指標
壓測報告:機器負載/QPS/響應時間/成功率
壓測方式:線下/線上壓測
讀寫/仿真/引流/隔離集羣/縮容壓測
單機/集羣/離散/全鏈路壓測
系統優化與容災
單機調優
架構優化/系統擴容
跨機房容災
應急預案
網絡接入層(DNS/LVS/HaProxy)
應用接入層(Nginx/OpenResty)
web應用層(Tomcat)
服務層(Dubbo)
數據層(Redis/DB)
監控報警
服務器監控/系統監控/JVM監控/接口監控
報警策略:監控時間段,報警閥值,通知方式
高併發ajax
- 應用級緩存
緩存回收策略:空間/容量/時間
緩存回收算法:FIFO/LRU/LFU
java堆/java堆外/磁盤緩存
Guava/Ehcache/MapDB
緩存使用模式Cache-Aside/Cache-As-SoR/CopyPattern
- http緩存
瀏覽器緩存
HttpClient客戶端緩存
Nginx代理層緩存
- 多級緩存
分佈式緩存
熱點數據與更新緩存
緩存崩潰與快速修復
- 池化
數據庫鏈接池
HttpClient鏈接池
線程池
- 異步併發
同步阻塞調用
異步Future
異步Callback
異步編排CompletableFuture
請求緩存
請求合併
- 擴容
單體應用垂直擴容
單體應用水平擴容
應用拆分
數據庫拆分: 水平/垂直拆分
使用sharding-jdbc分庫分表/讀寫分離
數據異構
任務系統擴容(Elastic-Job)
- 隊列異步處理/系統解耦,數據同步/流量削峯緩衝隊列/任務隊列/消息隊列,請求隊列/數據總線隊列Disruptor+Redis隊列基於Canal實現數據異構
歡迎關注本站公眾號,獲取更多信息