之前在寫mybatis文章時介紹過關於一級快取和二級快取的設計,本文通過結合mybatis設計的思想以及其他框架的設計,來介紹一下關於本地快取的設計方案和注意事項。
本地記憶體資源非常寶貴,要合理利用,一般那些經常被訪問的,但是又不經常被修改的資料,即讀多寫少的資料,比如字典、標籤、定期更新的統計資料等等。
由於記憶體資源的稀缺,一般不能無上限的使用本地快取,這樣不僅會造成記憶體不足,還有可能導致頻繁的fullgc。
既然容量有上限,那麼就要制定一些過期策略保證容量不超上限。
mybatis預設使用lru演算法(最近最少使用,看重的是訪問時間)。
參考redis等其他的過期策略還有:設定過期時間到期自動清除、定時清除、隨機清除、按照過期時間清除、lfu(最不常用,看重的是訪問頻次)、fifo。
對快取的操作應該提供一套簡單易用的方法,便於使用者方便、快捷的使用。
本地快取一般都會作為全域性訪問的變數,那麼就由必要在設計時考慮他的執行緒安全問題,簡單的場景下一般我們可以使用concurrenthashmap,也可以參考mybatis的設計,直接在對快取訪問的方法上包裝了synchronized關鍵字。
在集群環境下,保證集群中每台伺服器快取的一致性是必須要做的事情,本地快取可以參考分布式快取一致性的解決方案進行設計,比如可以通過拿到集群中所有的服務節點,然後進行每個節點的快取同步。
關持久化一般本地快取沒有必要做持久化,有需要的話可以參考redis的持久化設計方案。
本地快取資料量一般都不會太大,可以直接在服務啟動時就載入,或者提供介面、操作介面控制資料載入到快取中。
文字主要就介紹這些考慮方案,關於快取穿透、雪崩等問題就不做詳細描述了。
PCB設計注意事項
在進行設計之前要將各種約束規則設定好。1 線和孔的間距要大一點。2 小訊號部分,注意保護。小訊號指的是小電流訊號 保護,通常是進行包地。晶振電路也屬於小訊號電路。晶振要緊靠晶元引腳放置,距離太遠容易出現干擾。對於四個引腳的電容,不要從中間穿插走線。避免短路。3電容的擺放應該起到應有的作用。例如,通訊...
TVS設計注意事項
一般tvs只提供兩種測試波形對應的最大峰值脈衝功率pppm,分別是8 20us和10 1000us。最大峰值脈衝電流ipp與最大鉗位電壓vc的乘積就是最大峰值脈衝功率pppm。設計時應該注意這個最大鉗位電壓vc是在最大峰值脈衝電流ipp下測到的,也就是說,如果應用中超過這個電流,實際鉗位電壓就會超過...
hbase rowkey設計的注意事項
1 充分利用有序性 1.1如果要scan操作,且不是很頻繁,可以利用rowkey的有序性將需要一起掃瞄的資料放到一起。例如直接用時間戳。這樣就可以按時間scan了。這個只要是簡單的全表掃瞄都行。1.2同樣是scan,還可以利用rowkey的有序性實現資料本地化,設同一類別的資料需要一起掃瞄,那就可以...