我使用相干性 12.1.2.0.0
我系统的拓扑结构是:三个节点,带有应用程序(缓存客户端)和具有大量内存的独立缓存服务器。
我的目标是创建不完全依赖缓存服务器的缓存系统,同时在应用程序服务器上消耗严格的内存。所以我想将所有曾经缓存在缓存服务器上的值存储起来。但是,如果缓存服务器不工作,应用程序仍然可以使用它们的小型本地缓存进行操作。
我认为 Near 缓存是我需要的。它由本地方案作为前端方案和分布式缓存作为后端方案组成。但是,当我在客户端的分布式部分中将本地存储设置设置为 false 时,即使使用前端本地缓存,我也无法操作,因为每次放置操作都会出现“不存在启用本地存储的节点”错误。如果我将 local-storage 设置为 true 并将本地存储内存限制为例如 1 个单元缓存服务器不会从客户端接收放置的值。更准确地说,它接收其中的一些但不是全部。例如,如果我执行“put 1 1”并多次获得它,然后尝试“put 2 2”和“put 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>
我需要什么样的方案?