如何检查本地成员的条目数

how to check the number of entries on local member

我的主要会员

    public static void main(String[] args) throws InterruptedException {

    Config config = new Config();
    config.setProperty(GroupProperty.ENABLE_JMX, "true");
    config.setProperty(GroupProperty.BACKPRESSURE_ENABLED, "true");
    config.setProperty(GroupProperty.SLOW_OPERATION_DETECTOR_ENABLED, "true");

    config.getSerializationConfig().addPortableFactory(1, new MyPortableFactory());

    HazelcastInstance hz = Hazelcast.newHazelcastInstance(config);

    IMap<Integer, Rule> ruleMap = hz.getMap("ruleMap");

    // TODO generate rule map data ; more than 100,000 entries
    generateRuleMapData(ruleMap);
    logger.info("generate rule finised!");
    // TODO rule map index

    // health check
    PartitionService partitionService = hz.getPartitionService();
    LocalMapStats mapStatistics = ruleMap.getLocalMapStats();
    while (true) {
        logger.info("isClusterSafe:{},isLocalMemberSafe:{},number of entries owned on this node = {}",
                partitionService.isClusterSafe(), partitionService.isLocalMemberSafe(),
                mapStatistics.getOwnedEntryCount());
        Thread.sleep(1000);
    }

}

日志

    2016-06-28 13:53:05,048 INFO  [main] b.PrimeMember (PrimeMember.java:41) - isClusterSafe:true,isLocalMemberSafe:true,number of entries owned on this node = 997465
    2016-06-28 13:53:06,049 INFO  [main] b.PrimeMember (PrimeMember.java:41) - isClusterSafe:true,isLocalMemberSafe:true,number of entries owned on this node = 997465
    2016-06-28 13:53:07,050 INFO  [main] b.PrimeMember (PrimeMember.java:41) - isClusterSafe:true,isLocalMemberSafe:true,number of entries owned on this node = 997465

我的奴隶会员

public static void main(String[] args) throws InterruptedException {
    Config config = new Config();
    config.setProperty(GroupProperty.ENABLE_JMX, "true");
    config.setProperty(GroupProperty.BACKPRESSURE_ENABLED, "true");
    config.setProperty(GroupProperty.SLOW_OPERATION_DETECTOR_ENABLED, "true");

    HazelcastInstance hz = Hazelcast.newHazelcastInstance(config);

    IMap<Integer, Rule> ruleMap = hz.getMap("ruleMap");
    PartitionService partitionService = hz.getPartitionService();
    LocalMapStats mapStatistics = ruleMap.getLocalMapStats();
    while (true) {
        logger.info("isClusterSafe:{},isLocalMemberSafe:{},number of entries owned on this node = {}",
                partitionService.isClusterSafe(), partitionService.isLocalMemberSafe(),
                mapStatistics.getOwnedEntryCount());
        Thread.sleep(1000);
    }
}

日志 2016-06-28 14:05:53,543 INFO [main] b.SlaveMember (SlaveMember.java:31) - isClusterSafe:false,isLocalMemberSafe:false,此节点拥有的条目数 = 412441 2016-06-28 14:05:54,556 INFO [main] b.SlaveMember (SlaveMember.java:31) - isClusterSafe:false,isLocalMemberSafe:false,此节点拥有的条目数 = 412441 2016-06-28 14:05:55,563 INFO [main] b.SlaveMember (SlaveMember.java:31) - isClusterSafe:false,isLocalMemberSafe:false,此节点拥有的条目数 = 412441 2016-06-28 14:05:56,578 INFO [main] b.SlaveMember (SlaveMember.java:31) - isClusterSafe:false,isLocalMemberSafe:false,此节点拥有的条目数 = 412441

我的问题是:

为什么在集群添加一个从属成员后,主成员拥有的条目数没有改变?

我应该得到每秒的静力学。

    while (true) {
        LocalMapStats mapStatistics = ruleMap.getLocalMapStats();
        logger.info(
                "isClusterSafe:{},isLocalMemberSafe:{},rulemap.size:{}, number of entries owned on this node = {}",
                partitionService.isClusterSafe(), partitionService.isLocalMemberSafe(), ruleMap.size(),
                mapStatistics.getOwnedEntryCount());
        Thread.sleep(1000);
    }

另一种选择是使用 localKeySet,它 returns 本地拥有的一组密钥。

IMap::localKeySet.size()