コード例 #1
0
  /**
   * 生成虚拟节点信息 @Title: genVisualCacheNode
   *
   * @param cacheNode
   * @author: zzh
   * @date: 2016年12月2日 下午8:59:35
   * @version: v1.0.0
   */
  private static List<VisualCacheNode> genVisualCacheNode(CacheNode cacheNode) {
    List<VisualCacheNode> visualCacheNodeList = new ArrayList<VisualCacheNode>();
    for (int i = 0; i < SINGLE_VISUAL_NUM; i++) {
      String visualNodeKey = "VNode-" + cacheNode.getIp() + "-Num-" + i;

      // 对虚拟节点的key值做下md5
      String md5VisualNodeKey = DigestUtils.md5Hex(visualNodeKey); // 使用common-codec工具包
      int hashKey = DJBHash(md5VisualNodeKey);

      VisualCacheNode visualCacheNode = new VisualCacheNode(visualNodeKey, cacheNode);

      visualCacheNodeList.add(visualCacheNode);
      System.out.println(
          "虚拟节点信息:" + visualNodeKey + ", hashkey=" + hashKey + " , RealIp=" + cacheNode.getIp());
    }

    return visualCacheNodeList;
  }
コード例 #2
0
  /**
   * 根据IP,删除真实节点 @Title: removeRealCache
   *
   * @param ip
   * @author: zzh
   * @date: 2016年12月4日 下午9:20:24
   * @version: v1.0.0
   */
  private static void removeRealCache(String ip) {

    int removeCachePos = 0;
    for (int i = 0; i < realNodeList.size(); i++) {
      CacheNode c = realNodeList.get(i);
      if (ip.equals(c.getIp())) {
        removeCachePos = i;
        break;
      }
    }
    realNodeList.remove(removeCachePos);
  }