你不知道的Nginx负载均衡算法,快进来迅速掌握!

2020-05-25 00:00:00 算法 服务器 权重 加权 轮训

关于负载均衡的三种算法,轮询法,随机法,小连接法,这三种负载均衡的算法,但是关于负载均衡还有其他的算法,我们也需要你去看,而且在面试的过程中,很有可能是会问到的呦。

对于要实现高性能集群,选择好负载均衡器很重要,同时针对不同的业务场景选择合适的负载均衡算法也是非常重要的。之前已经罗列出几个了,接下来再说剩下的几个算法,

1. 源地址哈希算法

不丢失策略的算法,但是负载均衡和源数据信息和哈希算法有很大关系。

源地址哈希法的思想是根据服务消费者请求客户端的 IP 地址,通过哈希函数计算得到一个哈希值,将此哈希值和服务器列表的大小进行取模运算,得到的结果便是要访问的服务器地址的序号。采用源地址哈希法进行负载均衡,相同的 IP 客户端,如果服务器列表不变,将映射到同一个后台服务器进行访问。

还是之前的操作,伪代码:

private static Map<String, Integer> serviceWeightMap = new HashMap<String, Integer>(); 
 
static { 
    serviceWeightMap.put("192.168.1.100", 1); 
    serviceWeightMap.put("192.168.1.101", 1); 
    serviceWeightMap.put("192.168.1.102", 4); 
    serviceWeightMap.put("192.168.1.103", 1); 
   } 
 
   public static String testConsumerHash(String remoteIp) { 
 
       Map<String, Integer> serverMap = new HashMap<String, Integer>(); 
       serverMap.putAll(serviceWeightMap); 
 
       //取得IP地址list 
       Set<String> keySet = serverMap.keySet(); 
       ArrayList<String> keyList = new ArrayList<String>(); 
       keyList.addAll(keySet); 
 
       int hashCode = remoteIp.hashCode(); 
       int pos = hashCode % keyList.size(); 
 
       return keyList.get(pos); 
   } 

相关文章