淄博網(wǎng)站備案網(wǎng)絡(luò)服務(wù)提供者收集和使用個人信息應(yīng)當符合的條件有
問題:單機qps增加時請求摘要后端,耗時也會增加,因為超過了后端處理能力(最大qps,存在任務(wù)堆積)。
- 版本一
引入LruCache。為了避免數(shù)據(jù)失效,cache數(shù)據(jù)的時效性要小于摘要后端物料的更新時間,設(shè)置0.8倍的過期時間。寫cache時將數(shù)據(jù)更新的時間戳一起緩存下來,讀cache時計算當前時間與時間戳的差值是否超過過期時間,如果過期清空緩存數(shù)據(jù)。
如何防止大量緩存數(shù)據(jù)一起失效?
問題:并發(fā)讀寫的LruCache使用鎖保護,單機qs過高時鎖競爭嚴重,很多時間消耗在鎖等待上,導(dǎo)致耗時增長。
-
版本二
Cache分片,引入key的哈希函數(shù),將數(shù)據(jù)分散到不同分片上,減小臨界區(qū),降低鎖的競爭。分片數(shù)可以與線程數(shù)保持一致。 -
版本三
讀cache時使用零拷貝機制,對緩存數(shù)據(jù)增加原子變量的引用計數(shù),每次獲取數(shù)據(jù)時引用計數(shù)+1,釋放數(shù)據(jù)時-1,計數(shù)為0且達到過期時間時從cache中清除,防止內(nèi)存泄漏。