【並發編程】高並發相關技術
阿新 • • 發佈:2018-07-03
增加 src 雪崩 分布 擴容 分庫分表 strong uav 請求
高並發之擴容思路
垂直擴容(縱向擴展):提高系統部件能力
水平擴容(橫向擴展):增加更多系統成員來實現
讀操作擴展:memcache、redis、CDN等緩存
寫操作擴展:Cassandra、Hbase等
高並發之緩存思路
緩存特征
命中率:命中數/(命中數+未命中數)
最大元素(空間)
清空策略:FIFO, LFU, LRU, 過期時間,隨機等
緩存命中率影響因素
業務場景和業務需求
緩存的設計(粒度和策略)
緩存容量和基礎設施
緩存分類和應用場景
本地緩存:編程實現(成員變量、局部變量、靜態變量)、Guava Cache
分布式緩存:Memcache、Redis
高並發場景下緩存的常見問題
緩存一致性
不一致的場景
更新數據庫成功->更新緩存失敗->數據不一致
更新緩存成功->更新數據庫失敗->數據不一致
更新數據庫成功->淘汰緩存失敗->數據不一致
淘汰緩存成功->更新數據庫失敗->查詢緩存miss
緩存並發問題
使用鎖
緩存穿透(擊穿)問題
解決方案:
緩存空對象:對查詢結果為空的對象也進行緩存,如果是集合,可以緩存一個空集合
如果是緩存單個對象,可以通過對象標識區分,防止請求擊穿到數據庫。這種方式實現成本低
適合命中不高但是可能頻繁更新的數據。
單獨過濾處理:對所有可能對應數據為空的對象單獨存放,並在請求前攔截,防止請求擊穿到數據庫。這種方式實現復雜,適合命中不高,更新不頻繁的數據。
緩存的雪崩問題
限流、降級、熔斷、多級緩存
高並發之消息隊列思路
高並發之應用拆分思路
高並發之應用限流思路
高並發之服務降級與服務熔斷思路
高並發之數據庫切庫分庫分表思路
高並發之高可用手段
【並發編程】高並發相關技術