You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为BinaryObject配置affinity key?设置后缓存数据分布不符合预期

问题根因

你当前的配置方式存在错误,亲和键规则没有被Ignite识别生效:
CacheKeyConfiguration的第一个入参需要填写你自定义的缓存键二进制类型的实际名称,而不是通用的BinaryObject接口全类名。Ignite会根据存储的BinaryObject的实际类型匹配对应的亲和键配置,绑定到通用接口上的规则不会对具体业务类型生效。
你的场景下因为规则未匹配,Ignite默认用整个BinaryObject的哈希值做分区计算,因此数据会均匀分布到所有节点,和你观测到的现象一致。

解决方案

  1. 先确认你构建缓存键BinaryObject时使用的自定义类型名,比如你调用ignite.binary().builder("XXX")创建对象时传入的XXX参数就是该二进制对象的类型名
  2. 修改CacheKeyConfiguration配置,替换第一个入参为你的自定义类型名,示例如下:
// 替换为你实际使用的自定义缓存键类型名
String customKeyTypeName = "你自定义的缓存键类型名";
// 第二个参数为你指定的亲和键字段名,保持为bank即可
CacheKeyConfiguration keyConfiguration = new CacheKeyConfiguration(customKeyTypeName, "bank");
cfg.setKeyConfiguration(keyConfiguration);

注意事项

  • 亲和键字段名bank的大小写、拼写要和BinaryObject中实际定义的字段完全一致
  • 该配置必须在缓存启动前完成设置,已经处于运行状态的缓存修改配置不会生效,需要销毁缓存后重新创建验证
  • 如果你使用的是无全限定类名的动态二进制类型,直接填写你定义的短类型名即可

内容的提问来源于stack exchange,提问作者Dipak Jadhav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 11:15:04