2016-06-28 42 views
0

我的主要成員如何檢查條目的數量上的本地成員

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年6月28日14: 05:53,543 INFO [main] b.SlaveMember(SlaveMember.java:31) - isClusterSafe:false,isLocalMemberSafe:false,條目數ow ned在這個節點上= 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:56578 INFO [主] b.SlaveMember(SlaveMember.java:31) - isClusterSafe:假的,isLocalMemberSafe:假的,這點= 412441

我的問題上所擁有的條目數爲:

爲什麼數在集羣添加一個sl後,沒有更改主要成員擁有的條目ave會員?

回答

0

我應該每秒獲得靜態數據。

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); 
    } 
0

另一個選擇是利用localKeySet返回本地擁有的一組密鑰。

IMap::localKeySet.size()