redis实现轮询算法_负载均衡之随机、轮询、一致性哈希

本文详细介绍了负载均衡的基本概念、常见的软件和硬件负载均衡器,以及三种常见的负载均衡算法:随机算法、轮询算法(包括权重考虑和优化)和一致性哈希算法。通过Java代码示例展示了如何使用Redis实现这些算法,以实现更智能的服务器资源分配。
摘要由CSDN通过智能技术生成

1、什么是负载均衡

负载均衡指多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。

通过某种负载分担任务,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接受到的请求的服务器独立地回应客户的请求。

负载均衡能够平均分配客户请求到服务器阵列,借此提供快速获取重要数据,解决大量并发访问服务问题,这种集群技术可以用最少的投资获得接近于大型主机的性能。

负载均衡方式:

软件负载均衡:Nginx、LVS、HAProxy

硬件负载均衡:Array、F5

2 随机算法实现

2.1 最简单版本:

随机平均选择服务器

import java.util.Arrays;

import java.util.List;

public class ServerIps {

public static final List LIST = (List) Arrays.asList(

"192.168.0.1",

"192.168.0.2",

"192.168.0.3",

"192.168.0.4",

"192.168.0.5",

"192.168.0.6",

"192.168.0.7",

"192.168.0.8",

"192.168.0.9",

"192.168.0.10"

);

}

import java.util.Random;

public class RandomChoose{

public static String getServer() {

Random random = new Random();

return ServerIps.LIST.get(random.nextInt(ServerIps.LIST.size()));

}

public static void main(String[] args) {

for (int i = 0; i < 10; i++) {

System.out.println(getServer());

}

}

}

2.2 考虑权重的影响

但是每台机器的性能可能不同,性能强的机器能够处理更多的业务量,这种情况平均轮询不是很合理。

这样的话,需要给不同的机器设置不同的权重。

public class ServerIps {

public static final Map WEIGHT_MAP = new HashMap<>();

static {

WEIGHT_MAP.put("192.168.0.1", 2);

WEIGHT_MAP.put("192.168.0.2", 8);

WEIGHT_MAP.put("192.168.0.3", 1);

WEIGHT_MAP.put("192.168.0.4", 9);

WEIGHT_MAP.put("192.168.0.5", 4);

WEIGHT_MAP.put("192.168.0.6", 6);

}

}

2.2.1 暴力解法

创建一个新的List将所有的IP地址装入List,注意根据权重来选择装入几次IP地址,比如“198.168.0.1”这个IP地址的权重是2,那么就装入2次该IP地址

import java.util.ArrayList;

import java.util.List;

import java.util.Random;

public class WeightRandom{

public static String getServer() {

List ips = new ArrayList<>();

for(String ip: ServerIps.WEIGHT_MAP.keySet()) {

Integer weight = ServerIps.WEIGHT_MAP.get(ip);

for(int i=0; i

ips.add(ip);

}

}

Random random = new Random();

return ips.get(random.nextInt(ips.size()));

}

public static void main(String[] args) {

for (int i = 0; i < 10; i++) {

System.out.println(getServer());

}

}

}

2.2.2 优化

当权重很大的时候,将会存入很多次IP地址&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值