我正在尝试使用poc在我们的微服务中使用Apache来缓存DB事务。以下是Ignite Config代码:
IgniteConfiguration igniteConfiguration = new IgniteConfiguration();
igniteConfiguration.setIgniteInstanceName("igniteConfig");
ignite = Ignition.start(igniteConfiguration);
CacheConfiguration<Long, MyClass> myClassCacheConfig = new CacheConfiguration<>("cacheName");
myClassCacheConfig.setIndexedTypes(Long.class, MyClass.class);
myClassCacheConfig.setOnheapCacheEnabled(true);
myClassCacheConfig.setWriteBehindEnabled(false);
myClassCacheConfig.setReadThrough(false);
myClassCacheConfig.setWriteThrough(false);
myClassCacheConfig.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);
myClassCacheConfig.setPartitionLossPolicy(PartitionLossPolicy.READ_WRITE_ALL);
myClassCacheConfig.setExpiryPolicyFactory(AccessedExpiryPolicy.factoryOf(new Duration(TimeUnit.MINUTES, 1)));
ignite.getOrCreateCache(myClassCacheConfig);我在pom.xml中使用以下依赖项
<!-- https://mvnrepository.com/artifact/org.apache.ignite/ignite-spring -->
<dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-spring</artifactId>
<version>2.7.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.ignite/ignite-core -->
<dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-core</artifactId>
<version>2.7.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.ignite/ignite-indexing -->
<dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-indexing</artifactId>
<version>2.7.6</version>
</dependency>下面是我在日志中看到的内容:
15:35:13] __________ ________________
[15:35:13] / _/ ___/ |/ / _/_ __/ __/
[15:35:13] _/ // (7 7 // / / / / _/
[15:35:13] /___/\___/_/|_/___/ /_/ /___/
[15:35:13]
.....
[15:35:16] Ignite node started OK (id=someid, instance name=igniteConfig)
[15:35:16] Topology snapshot [ver=1, locNode=204dbcd4, servers=1, clients=0, state=ACTIVE, CPUs=12, offheap=6.4GB, heap=8.0GB]我的问题是:
来获取缓存的大小。
System.out.println("in service cache size is: "+igniteConfigBean.getOrCreateCache("cacheName").size());我总是得到0
那么我缺少什么基本的配置呢?
发布于 2019-11-15 00:05:44
可以使用缓存度量来确定缓存https://www.gridgain.com/docs/8.7.7/administrators-guide/monitoring-metrics/configuring-metrics的大小。
使用web控制台监视:https://www.gridgain.com/docs/web-console/latest/web-console-getting-started
https://www.gridgain.com/docs/web-console/latest/cluster-manage-monitor
或
cache.metrics().getCacheSize()
发布于 2019-11-15 09:56:54
我的猜测是,计算缓存大小的节点不会进入群集的拓扑结构,而是形成自己的一个小的空集群。确保为此使用客户端节点。
此外,如果希望数据从DB预加载到缓存中,请确保调用loadCache()。否则,数据只能根据请求从DB加载。
https://apacheignite.readme.io/docs/data-loading#ignitecacheloadcache
https://stackoverflow.com/questions/58867035
复制相似问题