负载平衡改善了多个计算资源(如计算机、计算机集群、网络链接、中央处理器或磁盘驱动器)之间的工作负载分布。负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间,并避免任何单个资源过载。
: 目录
1.负载平衡的基本配置2。自定义负载平衡器
1、负载均衡基本配置
负载均衡,其实就是把请求分配给多个操作单元执行,从而共同完成任务。
负载平衡策略主要用于在客户端有多个提供者时选择一个提供者。
在集群负载均衡中,Dubbo提供了多种均衡策略(包括随机、轮询、最小活动调用数、一致哈希),默认为随机调用。
这一块主要来自官方文件,写得很详细。
配置负载平衡策略,可以在服务提供者端或服务使用者端配置,如下所示:
(注:这里只介绍基于注释的配置方法,其他方法参考官方文档)
//在服务消费者端配置负载均衡策略。
@Reference(check=false,loadbalance=random )
//在服务提供者端配置负载平衡
@Service(loadbalance=random )
公共类HelloServiceImpl实现HelloService {
公共字符串sayHello(字符串名称){
返回“你好”名称;
}
}
2、自定义负载均衡器
Dubbo中负载均衡器的SPI接口是org。阿帕奇。杜博。RPC。集群。负载均衡,可以用来实现自定义的负载均衡规则。
(1)定制负载平衡器
基于上一节的案例创建名为dubbo-spi-loadbalance的Maven模块,并创建一个负载平衡器。
OnlyFirstLoadbalancer .这里的功能只是选择所有机器中的第一台(按字母顺序排列端口)。
导入dubbo依赖项
属国
groupIdorg.apache.dubbo/groupId
artifactIddubbo/artifactId
版本2 . 7 . 5/版本
/依赖关系
包com . lagou . load balance;
导入org . Apache . dubbo . common . URL;
导入org . Apache . dubbo . RPC . invocation;
导入org . Apache . dubbo . RPC . invoker;
import org . Apache . dubbo . RPC . RPC exception;
导入org . Apache . dubbo . RPC . cluster . load balance;
导入Java . util . list;
仅公共类FirstLoadbalancer实现负载平衡{
@覆盖
public T InvokerT select(ListInvokerT列表,URL url,调用调用)引发RpcException {
//所有服务提供商按ip端口排序,选择第一个。
//ListInvokerT列表包含所有服务提供商的信息。
返回list.stream()。已排序((i1,i2) - {
final int ipCompare=i1.getUrl()。getIp()。compareTo(i2.getUrl()。getIp());
if (ipCompare==0) {
返回Integer.compare(i1.getUrl()。getPort(),i2.getUrl()。getPort());
}
返回ipCompare
}).findFirst()。get();
}
}
(2)配置负载均衡器。
在dubbo-spi-loadbalance项目的META-INF/dubbo目录下新建一个文件org . Apache . dubbo . RPC . cluster . load balance,将当前类的全名写入
OnlyFirst=包名。负载平衡器(onlyFirst:只是一个ID,配置自定义负载平衡是参考名称)
only first=com . lagou . load balance . only first load balancer
(3)在服务提供商工程实现类中写一个测试负载均衡效果的方法。当启动不同的端口时,方法返回的信息是不同的。
(4)启动多个服务,要求它们使用相同的接口在同一个注册表中注册,但它们的dubbo通信端口不同。
(5)仅首先在服务消费者处指定自定义负载平衡器。
(6)测试定制负载均衡的效果。
这就是这篇关于Dubbo负载均衡策略的文章。有关Dubbo负载平衡的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!