【发布时间】:2022-07-06 19:48:57
【问题描述】:
在the docs 中,我可以找到仅适用于胖客户端的关联托管配置示例。此功能是否适用于瘦客户端?请提供任何配置示例?
在我的应用程序中,我使用键值 API 来处理 Ignite Cache。
我试图简单地将 AffinityKey 作为我的 put/get 操作的键(参见下面的代码)。我使用 clientId 将特定客户端的值存储在同一节点上。但是性能测试并没有显示getAll 计时的任何改进。
我怀疑我的配置有问题:
@Bean
ClientConfiguration igniteThinClientConfiguration(IgniteProperties igniteProperties) {
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setTimeout(igniteProperties.getTimeout());
clientConfiguration.setAddresses(igniteProperties.getAddresses());
clientConfiguration.setPartitionAwarenessEnabled(igniteProperties.isPartitionAwareness());
return clientConfiguration;
}
private static ClientCacheConfiguration cacheConfig(String cacheName, String cacheGroup, String dataRegion) {
ClientCacheConfiguration cfg = new ClientCacheConfiguration();
cfg.setName(cacheName);
cfg.setCacheMode(CacheMode.PARTITIONED);
cfg.setBackups(0);
cfg.setExpiryPolicy(new TouchedExpiryPolicy(new Duration(TimeUnit.HOURS, 6)));
cfg.setStatisticsEnabled(true);
cfg.setDefaultLockTimeout(3000L);
cfg.setGroupName(cacheGroup);
cfg.setDataRegionName(dataRegion);
return cfg;
}
IgniteClient igniteClient = Ignition.startClient(igniteConfiguration);
ClientCache<AffinityKey<Long>, PaymentReceiptResponse> receiptCache = igniteClient.getOrCreateCache(cacheConfig(...));
...
receiptCache.put(new AffinityKey<>(123L, \"clientId\"), value)
...
Set<AffinityKey<String>> keys = ...;
receiptCache.getAll(keys)