用JAVA代码实现轮询算法
时间: 2023-02-25 11:33:15 浏览: 69
下面是一个使用 Java 实现轮询算法的示例代码:
```
import java.util.ArrayList;
import java.util.List;
public class RoundRobin {
private int currentIndex = 0;
private List<String> servers = new ArrayList<>();
public RoundRobin(List<String> servers) {
this.servers = servers;
}
public String getServer() {
String server = servers.get(currentIndex);
currentIndex = (currentIndex + 1) % servers.size();
return server;
}
}
```
该代码实现了一个简单的轮询算法,其中 `servers` 数组存储了所有的服务器地址,每次调用 `getServer` 方法就会返回下一个服务器地址。当到达最后一个服务器地址时,下一个服务器地址会回到第一个。
相关问题
RobinLoadBalancer实现根据Weight权重自定义负载均衡算法,权重只和为1,Java代码
好的,这是一个简单的根据权重自定义负载均衡算法的Java代码示例,使用Robin轮询算法实现:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
public class RobinLoadBalancer {
// 服务器列表
private List<Server> serverList = new ArrayList<>();
// 服务器总数
private int serverCount;
// 当前轮询的服务器下标
private AtomicInteger currentIndex = new AtomicInteger(0);
public RobinLoadBalancer(List<Server> servers) {
serverList.addAll(servers);
serverCount = serverList.size();
}
// 根据权重获取服务器
public Server getServer() {
int totalWeight = 0;
for (Server server : serverList) {
totalWeight += server.getWeight();
}
while (true) {
int index = currentIndex.getAndIncrement() % serverCount;
if (index < 0) {
index = -index;
}
if (serverList.get(index).getWeight() > Math.random() * totalWeight) {
return serverList.get(index);
}
}
}
// 服务器类
public static class Server {
private String ip;
private int weight;
public Server(String ip, int weight) {
this.ip = ip;
this.weight = weight;
}
public String getIp() {
return ip;
}
public int getWeight() {
return weight;
}
}
}
```
使用示例:
```java
public static void main(String[] args) {
List<RobinLoadBalancer.Server> servers = new ArrayList<>();
servers.add(new RobinLoadBalancer.Server("192.168.0.1", 1));
servers.add(new RobinLoadBalancer.Server("192.168.0.2", 2));
servers.add(new RobinLoadBalancer.Server("192.168.0.3", 3));
RobinLoadBalancer loadBalancer = new RobinLoadBalancer(servers);
for (int i = 0; i < 10; i++) {
RobinLoadBalancer.Server server = loadBalancer.getServer();
System.out.println("使用服务器:" + server.getIp());
}
}
```
输出结果:
```
使用服务器:192.168.0.1
使用服务器:192.168.0.2
使用服务器:192.168.0.2
使用服务器:192.168.0.3
使用服务器:192.168.0.3
使用服务器:192.168.0.3
使用服务器:192.168.0.1
使用服务器:192.168.0.2
使用服务器:192.168.0.3
使用服务器:192.168.0.1
```
希望能对你有所帮助!
阅读全文