Java 增加分区大小以在hazelcast映射中包含更多数据
我正在使用hazelcast作为Java 增加分区大小以在hazelcast映射中包含更多数据,java,hazelcast,Java,Hazelcast,我正在使用hazelcast作为缓存集群 在mysql中,我有三个用于三个表的映射存储。每个表有100000条记录。 我正在启动三个hazelcast实例,用不同的映射将这些表加载到我的映射中。 但问题是 当我启动first instance并调用load all for first table时,它将加载所有100000条目,但当我调用second instance以相同的过程加载第二个表格时,它将加载49449条目,而在第三个实例中,它仅加载33249个条目 我使用三种不同的java代码来加
缓存集群
在mysql中,我有三个用于三个表的映射存储。每个表有100000条记录。
我正在启动三个hazelcast
实例,用不同的映射将这些表加载到我的映射中。
但问题是
当我启动first instance并调用load all for first table时,它将加载所有100000
条目,但当我调用second instance以相同的过程加载第二个表格时,它将加载49449
条目,而在第三个实例中,它仅加载33249个条目
我使用三种不同的java代码来加载这些表。
我的分区大小默认值为271
我一直在寻找错误,但没有显示错误,加载的数据始终与上面解释的相同。
您能帮我解决问题吗。调用MapLoader.loadAllKeys()时,您能记录每个MapLoader/MapStore实现加载的密钥数吗
也许这能说明一些情况。如果此处的数字不是100k,则问题不在HZ以内 因此,至少我们知道您能够从数据库中获得正确数量的密钥;这是一个坚实的开端。“每个表的hazelcast实例”是什么意思?他们不是要组成一个集群,还是你给了他们不同的分区组或其他东西?我为每个实例编写了一个jabva主程序,以表示它像节点结构一样,所以thsi集群中有三个节点,正如你在配置实现中看到的,它是为每个地图存储定义的,所以这三个节点位于三个不同的节点上portsMY的问题是,当我查询一个数据少于100k的映射时,该键在映射中不存在,它给了我null,但它应该已经去数据库获取记录并在映射中更新。public Set loadAllKeys(){Set allKeys=null;try{allKeys=new HashSet();ResultSet rs=con.createStatement().executeQuery(String.format(“从城市中选择id”);while(rs.next()){Long key=rs.getLong(1);allKeys.add(key);}}catch(Exception ex){}finally{}return allKeys;}我的代码在这里