手写模拟Nginx简单hash算法,分配客户端Ip到多台tomcat服务器上
这种方式,当客户端数量很大的时候,影响也非常大,随着服务器的扩容或缩容,都会重新计算hash
package com.lagou.hash;
/**
* 感受一下hash算法过程
*/
public class HashUniformity {
public static void main(String[] args) {
// 定义客户端IP 数组
String[] ip = new String[]{"12.10.1.0","25.25.25.0","30.30.30.0"};
//定义服务器个数
int serverClient = 5;
// hash(ip)%node_counts=index
//根据index锁定应该路由到的tomcat服务器
for (String ips : ip) {
int hash = Math.abs(ips.hashCode());
int index = hash % serverClient;
System.out.println("客户端IP数量:" + ip + "被路由到的服务器编号:" + index );
}
}
}