一 算法
加权轮询是对基本轮询算法的一个补充。加权轮询是指给后端的每个节点都赋予权重,分配请求时,不只按照节点数量轮询,而是按照节点的权重来决定轮询的个数。按照权重的总和来轮询,再根据没个权重所属的服务节点来决定将请求分配给哪个节点。
权重高的节点占用的轮询份数较多,被请求的次数增加,权重小的节点占用的轮询份数较少,被请求的次数减少。
二 实现
package loadbalance;
/**
* @className: WeightRobinSelect
* @description: 加权轮询
* @date: 2022/1/15
* @author: cakin
*/
public class WeightRobinSelect {
// 当前要分配的服务器的序号,从 0 开始
static int curServerIndex = 0;
// 当前要分配的服务器权重计数
static int curSum = 0;
/**
* 功能描述:加权轮询
*
* @param serverNum 后端服务器总量
* @param weight 每个服务器的权重
* @return int 服务器的序号,可以根据序号找到服务器 IP 地址并转发
* @author cakin
* @date 2022/1/15
*/
static int robinSelect(int serverNum, int weight[])