跑马竞赛算法是什么?是一种能良好感知服务端负载进行连接的负载均衡算法。当客户端与服务端进行长连接时,客户端需要选择合适的一台服务器节点起进行连接。客户端选择服务端的ip有多种方式,跑马竞赛算法相比于其他又有什么优点呢,怎么去实现,接下来一一讲解
客户端与服务端进行长连
客户端通过http请求服务端拿到服务端所有的ip节点后,开始要选择一个ip进行连接,怎么选择ip呢?
方式1:hash取模
首先获取到客户端的ip,对客户端ip的进行hash,然后对服务端节点数进行取模,模的位置就是ip的位置
//获取客户端ip
String clientIp = getClientIp();
//http请求服务端拿到服务端所有节点ip
List<String> serverIpList = getServerIp();
//获取客户端ip的hash值
int hash = clientIp.hash();
//用hash值对服务端节点数进行取模
int index = hash % serverIpList.size();
//获取到客户端与服务端进行长连接的ip
String chooseIp = serverIpList.get(index);
方式2:随机获取
利用math.random随机获取一个随机数,随机