并发编程-24 高并发处理手段之扩容思路 + 缓存思路
文章目錄
- 概述
- 擴(kuò)容思路
- 垂直擴(kuò)展(縱向擴(kuò)展)
- 水平擴(kuò)展(橫向擴(kuò)展)
- 緩存思路
- 緩存特征
- 緩存命中率影響因素
- 緩存分類和應(yīng)用場景
- Guava Cache
- Memcache
- Redis
概述
這里只是講通用的思路,實(shí)際高并發(fā)的場景需要根據(jù)實(shí)際情況來決定方案。
擴(kuò)容思路
舉個(gè)例子: 一共有60塊磚, 1個(gè)工人。每次只能搬運(yùn)10塊。每次搬運(yùn)耗時(shí)10分鐘,這樣的話,1個(gè)工人搬運(yùn)完60塊磚,就需要1個(gè)小時(shí)。
垂直擴(kuò)展(縱向擴(kuò)展)
提高系統(tǒng)部件能力。
用上面的例子來解釋下就是:目前有120塊磚要搬(相當(dāng)于高并發(fā)場景),如果使用垂直擴(kuò)展的話,提高運(yùn)行效率,我們調(diào)整為將工人
- 每次搬磚20塊,每次搬運(yùn)耗時(shí)10分鐘,1個(gè)小時(shí)處理完成。
- 或者每次10塊,每次搬運(yùn)耗時(shí)5分鐘,1個(gè)小時(shí)處理完成。
水平擴(kuò)展(橫向擴(kuò)展)
增加更多系統(tǒng)成員,就是我們通常說的集群
還是上面的例子,120塊磚要搬(相當(dāng)于高并發(fā)場景) ,工人的效率保持不變,每次只能搬運(yùn)10塊,每次搬運(yùn)耗時(shí)10分鐘,一個(gè)小時(shí)依然是60塊磚。 使用水平擴(kuò)展來模擬的話,那就增加一名工人,兩名工人,1個(gè)小時(shí)處理120塊磚。
緩存思路
緩存特征
-
命中率: 命中數(shù)/(命中數(shù)+ 沒命中數(shù))
-
最大元素(空間): 當(dāng)緩存超出設(shè)置的容量時(shí),會(huì)觸發(fā)緩存清空策略。 因此設(shè)置合理的緩存空間,將有效的提高命中率
-
清空策略: FIFO(先進(jìn)先出)、LFU(最少使用)、LRU(最近使用)、過期時(shí)間、隨機(jī)清理。
緩存命中率影響因素
- 業(yè)務(wù)場景和業(yè)務(wù)需求
- 緩存的設(shè)計(jì)(粒度和策略)
- 緩存容量和基礎(chǔ)設(shè)施
- …
緩存分類和應(yīng)用場景
- 本地緩存:編程實(shí)現(xiàn)(成員變量、局部變量、靜態(tài)變量)、Guava Cache
- 分布式緩存: Redis、Memcache
Guava Cache
借鑒了ConcurrencyHashMap的設(shè)計(jì)思想
Memcache
Redis
Redis的系列文章,請參考我的Redis專欄 Redis手札
總結(jié)
以上是生活随笔為你收集整理的并发编程-24 高并发处理手段之扩容思路 + 缓存思路的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 并发编程-23J.U.C组件拓展之阻塞队
- 下一篇: Elasticsearch-01Cent