一、搭建负载均衡环境
1 修改提供者01的实现和配置文件
public class SomeServiceImpl implements SomeService {
@Override
public String hello(String name) {
System.out.println("执行【第一个】提供者的hello() ");
return "【第一个】提供者";
}
}
2 修改提供者02的实现和配置文件
public class SomeServiceImpl implements SomeService {
@Override
public String hello(String name) {
System.out.println("执行【第二个】提供者的hello() ");
return "【第二个】提供者";
}
}
3 修改提供者03的实现和配置文件
public class SomeServiceImpl implements SomeService {
@Override
public String hello(String name) {
System.out.println("执行【第三个】提供者的hello() ");
return "【第三个】提供者";
}
}
二、负载均衡算法
若消费者与提供者均设置了负载均衡策略,消费者端设置的优先级高。 若消费者端没有显式的设置,但提供者端显式的设置了,且同一个服务(接口名、版本 号、分组都相同)的负载均衡策略相同。消费者调用时会按照提供者设置的策略调用。 若多个提供者端设置的不相同,则最后一个注册的会将前面注册的信息覆盖。
1 Dubbo 内置的负载均衡算法
Dubbo 内置了四种负载均衡算法
(1)random
随机算法,是 Dubbo 默认的负载均衡算法。存在服务堆积问题。
(2)roundrobin
轮询算法。按照设定好的权重依次进行调度。
(3)roundrobin
最少活跃度调度算法。即被调度的次数越少,其优选级就越高,被调度到的机率就越高。
(4)consistenthash
一致性 hash 算法。对于相同参数的请求,其会被路由到相同的提供者。
2 指定负载均衡算法
负载均衡算法可以在消费者端指定,也可以在提供者端指定。
(1)消费端指定
(2)服务端制定