Search in sources :

Example 6 with Replica

use of com.newcosoft.cache.Replica in project disgear by yangbutao.

the class ClusterState method getShardId.

public String getShardId(String baseUrl, String coreName) {
    // ") in " + collectionStates);
    for (CacheCollection coll : collectionStates.values()) {
        for (Shard slice : coll.getShards()) {
            for (Replica replica : slice.getReplicas()) {
                String rbaseUrl = replica.getStr(ZkStateReader.BASE_URL_PROP);
                String rcore = replica.getStr(ZkStateReader.CORE_NAME_PROP);
                if (baseUrl.equals(rbaseUrl) && coreName.equals(rcore)) {
                    return slice.getName();
                }
            }
        }
    }
    return null;
}
Also used : Shard(com.newcosoft.cache.Shard) Replica(com.newcosoft.cache.Replica) CacheCollection(com.newcosoft.cache.CacheCollection)

Example 7 with Replica

use of com.newcosoft.cache.Replica in project disgear by yangbutao.

the class ZookeeperController method publishAndWaitForDownStates.

public void publishAndWaitForDownStates() throws KeeperException, InterruptedException {
    ClusterState clusterState = zkStateReader.getClusterState();
    Set<String> collections = clusterState.getCollections();
    List<String> updatedNodes = new ArrayList<String>();
    for (String collectionName : collections) {
        CacheCollection collection = clusterState.getCollection(collectionName);
        Collection<Shard> slices = collection.getShards();
        for (Shard slice : slices) {
            Collection<Replica> replicas = slice.getReplicas();
            for (Replica replica : replicas) {
                if (replica.getNodeName().equals(getNodeName()) && !(replica.getStr(ZkStateReader.STATE_PROP).equals(ZkStateReader.DOWN))) {
                    ZkNodeProps m = new ZkNodeProps(Overseer.QUEUE_OPERATION, "state", ZkStateReader.STATE_PROP, ZkStateReader.DOWN, ZkStateReader.BASE_URL_PROP, getBaseUrl(), ZkStateReader.CORE_NAME_PROP, replica.getStr(ZkStateReader.CORE_NAME_PROP), ZkStateReader.ROLES_PROP, replica.getStr(ZkStateReader.ROLES_PROP), ZkStateReader.NODE_NAME_PROP, getNodeName(), ZkStateReader.SHARD_ID_PROP, replica.getStr(ZkStateReader.SHARD_ID_PROP), ZkStateReader.COLLECTION_PROP, collectionName, ZkStateReader.CORE_NODE_NAME_PROP, replica.getName());
                    updatedNodes.add(replica.getStr(ZkStateReader.CORE_NAME_PROP));
                    // put into overseer/queue��dealing by  Overseer
                    overseerJobQueue.offer(ZkStateReader.toJSON(m));
                }
            }
        }
    }
    // now wait till the updates are in our state
    long now = System.currentTimeMillis();
    long timeout = now + 1000 * 30;
    boolean foundStates = false;
    while (System.currentTimeMillis() < timeout) {
        clusterState = zkStateReader.getClusterState();
        collections = clusterState.getCollections();
        for (String collectionName : collections) {
            CacheCollection collection = clusterState.getCollection(collectionName);
            Collection<Shard> slices = collection.getShards();
            for (Shard slice : slices) {
                Collection<Replica> replicas = slice.getReplicas();
                for (Replica replica : replicas) {
                    if (replica.getStr(ZkStateReader.STATE_PROP).equals(ZkStateReader.DOWN)) {
                        updatedNodes.remove(replica.getStr(ZkStateReader.CORE_NAME_PROP));
                    }
                }
            }
        }
        if (updatedNodes.size() == 0) {
            foundStates = true;
            Thread.sleep(1000);
            break;
        }
        Thread.sleep(1000);
    }
    if (!foundStates) {
        log.warn("Timed out waiting to see all nodes published as DOWN in our cluster state.");
    }
}
Also used : ArrayList(java.util.ArrayList) Replica(com.newcosoft.cache.Replica) CacheCollection(com.newcosoft.cache.CacheCollection) Shard(com.newcosoft.cache.Shard)

Example 8 with Replica

use of com.newcosoft.cache.Replica in project disgear by yangbutao.

the class CacheClient method getReaderUrl.

public static String getReaderUrl(String key) {
    // String key = "000000000000000001";
    ClusterState clusterState = ClusterStateCacheManager.INSTANCE.getClusterState();
    Set<String> liveNodes = clusterState.getLiveNodes();
    Shard shard = Router.DEFAULT.getTargetShard(key, clusterState.getCollection("DEFAULT_COL"));
    // for read
    // roundrobin
    Replica[] replicas = shard.getReplicas().toArray(new Replica[shard.getReplicas().size()]);
    int totals = ClusterStateCacheManager.INSTANCE.getTotals().getAndDecrement();
    if (totals <= 0) {
        ClusterStateCacheManager.INSTANCE.setTotals(new AtomicInteger(10000));
    }
    int index = totals % (replicas.length);
    // System.out.println("***********index size="+index+"************replicas="+replicas.length);
    Replica reader = replicas[index < 0 ? (index + 1) : index];
    while (!liveNodes.contains(reader.getName())) {
        totals = ClusterStateCacheManager.INSTANCE.getTotals().getAndDecrement();
        if (totals <= 0) {
            ClusterStateCacheManager.INSTANCE.setTotals(new AtomicInteger(10000));
        }
        index = totals % (replicas.length);
        reader = replicas[index < 0 ? (index + 1) : index];
    }
    return reader.getStr("base_url");
}
Also used : ClusterState(com.newcosoft.zookeeper.ClusterState) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Shard(com.newcosoft.cache.Shard) Replica(com.newcosoft.cache.Replica)

Example 9 with Replica

use of com.newcosoft.cache.Replica in project disgear by yangbutao.

the class TestShard method main1.

public static void main1(String[] args) {
    /*List<Range> ranges1 = Router.DEFAULT.partitionRange(2);
		for (Range range : ranges1) {
			System.out.println(range.toString());
		}*/
    List<Range> ranges = Router.DEFAULT.partitionRange(3);
    Replica replica1 = new Replica("node1", new HashMap());
    Replica replica11 = new Replica("node11", new HashMap());
    Map<String, Replica> replicas_1 = new HashMap<String, Replica>();
    replicas_1.put("replica1", replica1);
    replicas_1.put("replica11", replica11);
    Map<String, Object> propMap1 = new HashMap<String, Object>();
    propMap1.put("range", ranges.get(0));
    Shard shard1 = new Shard("shard1", replicas_1, propMap1);
    Replica replica2 = new Replica("node2", new HashMap());
    Replica replica21 = new Replica("node21", new HashMap());
    Map<String, Replica> replicas_2 = new HashMap<String, Replica>();
    replicas_2.put("replica2", replica2);
    replicas_2.put("replica21", replica21);
    Map<String, Object> propMap2 = new HashMap<String, Object>();
    propMap2.put("range", ranges.get(1));
    Shard shard2 = new Shard("shard2", replicas_2, propMap2);
    Replica replica3 = new Replica("node3", new HashMap());
    Replica replica31 = new Replica("node31", new HashMap());
    Map<String, Replica> replicas_3 = new HashMap<String, Replica>();
    replicas_3.put("replica3", replica3);
    replicas_3.put("replica31", replica31);
    Map<String, Object> propMap3 = new HashMap<String, Object>();
    propMap3.put("range", ranges.get(2));
    Shard shard3 = new Shard("shard3", replicas_3, propMap3);
    Map<String, Shard> shards = new HashMap<String, Shard>();
    shards.put("shard1", shard1);
    shards.put("shard2", shard2);
    shards.put("shard3", shard3);
    CacheCollection col = new CacheCollection("testCol", shards, new HashMap(), Router.DEFAULT);
    System.out.println("*****************uuuuudoo1**********" + Router.DEFAULT.getTargetShard("uuuuudoo5", col).getName());
    System.out.println("*****************uuuuudoo2**********" + Router.DEFAULT.getTargetShard("423423468913", col).getName());
    System.out.println("*****************uuuuudoo3**********" + Router.DEFAULT.getTargetShard("423423468925", col).getName());
}
Also used : HashMap(java.util.HashMap) Range(com.newcosoft.cache.Range) Shard(com.newcosoft.cache.Shard) Replica(com.newcosoft.cache.Replica) CacheCollection(com.newcosoft.cache.CacheCollection)

Example 10 with Replica

use of com.newcosoft.cache.Replica in project disgear by yangbutao.

the class TestShard method main.

public static void main(String[] args) {
    List<Range> ranges = Router.DEFAULT.partitionRange(3);
    Replica replica1 = new Replica("node1", new HashMap());
    Replica replica11 = new Replica("node11", new HashMap());
    Map<String, Replica> replicas_1 = new HashMap<String, Replica>();
    replicas_1.put("replica1", replica1);
    replicas_1.put("replica11", replica11);
    Map<String, Object> propMap1 = new HashMap<String, Object>();
    propMap1.put("range", ranges.get(0));
    Shard shard1 = new Shard("shard1", replicas_1, propMap1);
    Replica replica2 = new Replica("node2", new HashMap());
    Replica replica21 = new Replica("node21", new HashMap());
    Map<String, Replica> replicas_2 = new HashMap<String, Replica>();
    replicas_2.put("replica2", replica2);
    replicas_2.put("replica21", replica21);
    Map<String, Object> propMap2 = new HashMap<String, Object>();
    propMap2.put("range", ranges.get(1));
    Shard shard2 = new Shard("shard2", replicas_2, propMap2);
    Replica replica3 = new Replica("node3", new HashMap());
    Replica replica31 = new Replica("node31", new HashMap());
    Map<String, Replica> replicas_3 = new HashMap<String, Replica>();
    replicas_3.put("replica3", replica3);
    replicas_3.put("replica31", replica31);
    Map<String, Object> propMap3 = new HashMap<String, Object>();
    propMap3.put("range", ranges.get(2));
    Shard shard3 = new Shard("shard3", replicas_3, propMap3);
    Map<String, Shard> shards = new HashMap<String, Shard>();
    shards.put("shard1", shard1);
    shards.put("shard2", shard2);
    shards.put("shard3", shard3);
    CacheCollection col = new CacheCollection("testCol", shards, new HashMap(), Router.DEFAULT);
    int shard1Count = 0;
    int shard2Count = 0;
    int shard3Count = 0;
    for (int i = 1; i < 9999999; i++) {
        String key = "0000000000" + i;
        String shardName = Router.DEFAULT.getTargetShard(key, col).getName();
        if (shardName.equals("shard1")) {
            shard1Count++;
        } else if (shardName.equals("shard2")) {
            shard2Count++;
        } else if (shardName.equals("shard3")) {
            shard3Count++;
        }
    }
    System.out.println("shard1=" + shard1Count);
    System.out.println("shard2=" + shard2Count);
    System.out.println("shard3=" + shard3Count);
/*
		System.out.println("*****************uuuuudoo1**********"+Router.DEFAULT.getTargetShard("uuuuudoo5", col).getName());
		System.out.println("*****************uuuuudoo2**********"+Router.DEFAULT.getTargetShard("423423468913", col).getName());
		System.out.println("*****************uuuuudoo3**********"+Router.DEFAULT.getTargetShard("423423468925", col).getName());
*/
}
Also used : HashMap(java.util.HashMap) Range(com.newcosoft.cache.Range) Shard(com.newcosoft.cache.Shard) Replica(com.newcosoft.cache.Replica) CacheCollection(com.newcosoft.cache.CacheCollection)

Aggregations

Replica (com.newcosoft.cache.Replica)13 Shard (com.newcosoft.cache.Shard)12 CacheCollection (com.newcosoft.cache.CacheCollection)6 Range (com.newcosoft.cache.Range)4 ClusterState (com.newcosoft.zookeeper.ClusterState)4 HashMap (java.util.HashMap)4 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)2 ArrayList (java.util.ArrayList)1 HashSet (java.util.HashSet)1 List (java.util.List)1 Map (java.util.Map)1 Set (java.util.Set)1 KeeperException (org.apache.zookeeper.KeeperException)1 WatchedEvent (org.apache.zookeeper.WatchedEvent)1 Watcher (org.apache.zookeeper.Watcher)1 Stat (org.apache.zookeeper.data.Stat)1