我用連貫12.1.2.0.0連貫近緩存與分佈式回收計劃和本地存儲設置
我的系統的拓撲結構是:與應用程序(緩存客戶端)和分離的緩存服務器有大量的內存三個節點。
我的目標是創建緩存系統,這是不完全依賴緩存服務器上,並在同一時間消耗在應用服務器嚴格的內存。所以我想存儲所有曾經緩存在緩存服務器上的值。但是,如果緩存服務器不工作,應用程序仍然可以使用小型本地緩存進行操作。
我認爲近緩存是我需要的。它由本地方案作爲前臺和分佈式緩存作爲後臺方案。但是,當我在客戶端的分佈式部分中將本地存儲設置設置爲false時,我無法使用前端本地緩存進行操作,因爲每次放置操作都會出現「沒有本地存儲已啓用節點」錯誤。如果我將local-storage設置爲true,並將本地存儲內存限制爲1個單元緩存,則服務器不會從客戶端接收放置的值。更確切地說,它收到了其中一些,但不是全部。例如,如果我「放入1 1」並獲得它幾次,然後嘗試「放2 2」和「放4 4」,我永遠不會在緩存服務器上獲得「2 2」和「4 4」。在這種情況下,緩存服務器包含「1 1」,並且可以是值「2 2」或「4 4」中的一個,但永遠不會全部三對同時存在。
我試着背地圖,計劃與直接本地方案,並與國內部分地方方案的讀寫,後備地圖的方案。結果是一樣的。這是我的大致測試配置:
<near-scheme>
<scheme-name>near</scheme-name>
<front-scheme>
<local-scheme>
<scheme-ref>local</scheme-ref>
</local-scheme>
</front-scheme>
<back-scheme>
<distributed-scheme>
<scheme-ref>distributed</scheme-ref>
</distributed-scheme>
</back-scheme>
<invalidation-strategy>all</invalidation-strategy>
</near-scheme>
<distributed-scheme>
<scheme-name>distributed</scheme-name>
<service-name>DistributedCache</service-name>
<local-storage>false</local-storage>
<backing-map-scheme>
<local-scheme>
<scheme-ref>local-binary</scheme-ref>
</local-scheme>
</backing-map-scheme>
<autostart>true</autostart>
</distributed-scheme>
<local-scheme>
<scheme-name>local</scheme-name>
<eviction-policy>HYBRID</eviction-policy>
<high-units>1</high-units>
<unit-calculator>FIXED</unit-calculator>
<expiry-delay>{expiry 1h}</expiry-delay>
</local-scheme>
<local-scheme>
<scheme-name>local-binary</scheme-name>
<eviction-policy>HYBRID</eviction-policy>
<high-units>300</high-units>
<unit-calculator>BINARY</unit-calculator>
<expiry-delay>{expiry 1h}</expiry-delay>
</local-scheme>
我需要什麼樣的方案?
感謝您的回答。 – Donz
感謝您的回答。我已經有這個錯誤。如果我使用分佈式緩存,則考慮到所有節點應具有大致相同的數據量,這些值在羣集中分佈。所以我現在的問題是如何說明我的集羣中的節點不相同的一致性。其中一個應該包含90-95%的數據量和其他節點3-5%的每個數據。我認爲可以通過我自己的類進行密鑰分區和密鑰分類器設置。但我認爲這是錯誤的。你知道簡單的方法來說「這個節點應該包含整個集羣的90%的數據」嗎? – Donz
另外我認爲溢出方案可以解決我的問題,但它不支持分佈式方案作爲背面。真奇怪。我認爲我的目標是共同的,但不是那麼具體。我有很多內存緩存所有內容的服務器,我需要在客戶端存儲快速的小數據。 – Donz