EHCache BigMemory(譯)

介紹

BigMemory是Terracotta的一個純Java產品,允許在對象堆外使用一個額外的內存存儲類型。被打包使用在企業級Ehcache作爲一個嵌入式管理單元作業儲存,稱作 “離線堆存儲”。如果企業級Ehcache是分佈在一個Terracotta集羣中,你可以在Ehcache(Terracotta客戶端或L1)和Terracotta服務陣列(L2)兩者中配置BigMemory。

 

這個離線存儲堆,不受制於Java GC,比DiskStore快100倍,且允許創建非常大的緩存(我們已經測試的超過350GB)。

 

由於離線堆是以字節爲單位的數據存儲,有兩層含義:

  • 僅系列化的緩存鍵值能被存儲,類似DiskStore;
  • 系列化和反系列化發生在從存儲中放置和存取時。這也意味着離線存儲在絕對意義上是慢的(相比MemoryStore大約慢10倍),但這一理論上的差異消失,由於受兩方面的影響:
  1. MemoryStore保存着已經以反系列化形式存在的來自離線堆的最熱門子集
  2. 當GC考慮到涉及更大的堆時,離線堆通常是更快的。

有關Ehcache BigMemory的教程,參閱 BigMemory for Enterprise Ehcache Tutorial.

 

配置

 配置緩存溢出到離線堆

使用一個離線堆存儲配置緩存既可通過XML配置,也可編程實現。

如果使用一個帶有很強一致性的分佈式緩存,可能需要在客戶和服務堆中存儲大量的鎖。在這用情況下,請務必用預期數據集來檢測很可能發生的內存溢出錯誤情形的集羣測試。此外,來自鎖管理的消耗有可能導致性能降低。

 

 聲明式配置

以下的XML配置創建了一個帶有溢出到1GB離線堆區的1000個元素的 in-heap 存儲(maxEntriesLocalHeap)離線堆緩存。

 

<ehcache updateCheck="false" monitoring="off" dynamicConfig="false">
    <defaultCache maxEntriesLocalHeap="10000"
                  eternal="true"
                  memoryStoreEvictionPolicy="LRU"
                  statistics="false" />

    <cache name="sample-offheap-cache"
           maxEntriesLocalHeap="10000"
           eternal="true"
           memoryStoreEvictionPolicy="LRU"
           overflowToOffHeap="true"
           maxBytesLocalOffHeap="1G"/>
</ehcache>
 

配置可選項:

overflowToOffHeap

值可爲 true 或 false。當設爲true時,將啓用利用離線堆內存存儲的緩存改善性能。Off-heap內存不受制於Java GC週期,通過設置MaxDirectMemorySize Java屬性可限制其存儲內存的大小。默認值爲:false

 

maxBytesLocalOffHeap

設置可用於緩存的off-heap內存數值,僅overflowtoOffHeap爲true時有效。最小分配置爲 1MB,沒有最大值。

 

關於緩存大小的更多信息,請參考 How To Size Caches.

 

 注意:當使用Off-heap存儲時的堆配置

但是用off-heap存儲時,你至少應當設置maxEntriesLocalHeap值爲100個元素,以避免性能退化。對maxEntriesLocalHeap設置太低的值將觸發警告日誌。

 

編程配置

以下的編程配置能創建相同的緩存:

public Cache createOffHeapCache(){  
  CacheConfiguration config = new CacheConfiguration("sample-offheap-cache", 10000).overflowToOffHeap(true).maxBytesLocalOffHeap("1G");
  Cache cache = new Cache(config);
  manager.addCache(cache);
  return cache;
}

增加許可證

 與使用版企業級Ehcache一同下載的還有一個有效期爲30天的授權Key。使用這個key來激活off-heap存儲。可增加到路徑或通過系統屬性存取。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章