6、哈希负载算法package com.example.demo.core.hash; import java.util.Arrays;import java.util.List;import java.util.SortedMap;import java.util.TreeMap; /** * hash负载算法 * 在一个集群环境下,让同一个用户的访问,分流到固定的一台机器上 */public class HashServer {public static List<String> list = Arrays.asList("10.180.11.126:8888","10.180.11.128:8888","10.180.11.130:8888");public static String getServer(String client){int nodeCount = 40;TreeMap<Integer,String> treeMap = new TreeMap<>();for(String s : list) {for(int i = 0; i < nodeCount; i++) {treeMap.put((s + "address:" + i).hashCode(), s);}}SortedMap<Integer,String> sortedMap = treeMap.tailMap(client.hashCode());Integer firstHash = (sortedMap.size() > 0) ? sortedMap.firstKey() : treeMap.firstKey();return treeMap.get(firstHash);}public static void main(String[] args) {for(int i = 0; i < 100; i++) {System.out.println(getServer("用户:" + i + "访问"));}} }
【Java 实现6种负载均衡算法】
推荐阅读
- 如何实现一个简单的RPC
- 安卓|vivo秀商务旗舰X Note主摄:V1芯片下 实现实时黑光夜视
- 四个最佳实践,引导你写出高质量JavaScript模块
- Java 字符串格式化 Formatter
- redis各类型数据结构和底层实现源码分析
- Java集合详解
- TimingWheel 时间轮算法是如何实现的?
- 如何在Java中创建不可变类?
- 探究Java中的final关键字
- 利用openresty+lua+redis 实现封杀频繁恶意访问IP地址
