当前位置: 首页>后端>正文

dubbo 的负载均衡算法 rabbin负载均衡

回顾

上一遍总结了注册中心的作用,咱们继续总结一下ribbon的作用。

什么是Robbin

Ribbon是一个客户端负载均衡器,可以让您对HTTP和TCP客户端的行为进行大量控制,功能如下:

  • 负载均衡
  • 容错
  • 异步和反应模型中的多协议(HTTP,TCP,UDP)支持
  • 缓存和批处理



dubbo 的负载均衡算法 rabbin负载均衡,dubbo 的负载均衡算法 rabbin负载均衡_容错处理 负载均衡,第1张


Robbin有什么用

先回顾一下之前的业务,之前只有一家外卖。


dubbo 的负载均衡算法 rabbin负载均衡,dubbo 的负载均衡算法 rabbin负载均衡_负载均衡_02,第2张


现在有两家外卖


dubbo 的负载均衡算法 rabbin负载均衡,dubbo 的负载均衡算法 rabbin负载均衡_负载均衡_03,第3张


现在你的问题就来了,现在这么多选择,我到底该选哪一家呢?此时如果你有选择恐惧症的话,正好。请个秘书,这种点餐的小事情就交给他做了。这个秘书常见的点餐手法就是轮询,一家一家挨着来点,雨露均沾就是这个意思。

启动两个user-service实例

一个8081,一个8082


dubbo 的负载均衡算法 rabbin负载均衡,dubbo 的负载均衡算法 rabbin负载均衡_客户端_04,第4张


eureka监控面板


dubbo 的负载均衡算法 rabbin负载均衡,dubbo 的负载均衡算法 rabbin负载均衡_dubbo 的负载均衡算法_05,第5张


配置user-consumer的负载均衡

无需单独添加依赖,因为在eureka中已经依赖了。

在RestTemplate bean上加上@LoadBalanced注解就ok


dubbo 的负载均衡算法 rabbin负载均衡,dubbo 的负载均衡算法 rabbin负载均衡_dubbo 的负载均衡算法_06,第6张


修改UserDao,不再手动获取ip和端口,而是直接通过在eureka中注册的服务名称调用:此处为USER-SERVICE


dubbo 的负载均衡算法 rabbin负载均衡,dubbo 的负载均衡算法 rabbin负载均衡_HTTP_07,第7张


重启user-consumer,访问http://localhost:8080/consume?id=1


dubbo 的负载均衡算法 rabbin负载均衡,dubbo 的负载均衡算法 rabbin负载均衡_HTTP_08,第8张


以上就已经开启了user-consumer负载均衡,真的是超级简单。

测试负载均衡策略


dubbo 的负载均衡算法 rabbin负载均衡,dubbo 的负载均衡算法 rabbin负载均衡_容错处理 负载均衡_09,第9张


打印结果:


dubbo 的负载均衡算法 rabbin负载均衡,dubbo 的负载均衡算法 rabbin负载均衡_容错处理 负载均衡_10,第10张


以上结论得出,确实是轮询机制。一个一个的来。

修改负载均衡策略

将策略改成随机


dubbo 的负载均衡算法 rabbin负载均衡,dubbo 的负载均衡算法 rabbin负载均衡_dubbo 的负载均衡算法_11,第11张


再次运行结果


dubbo 的负载均衡算法 rabbin负载均衡,dubbo 的负载均衡算法 rabbin负载均衡_dubbo 的负载均衡算法_12,第12张


关掉一个user-service服务测试

访问第一次,发现报错了。


dubbo 的负载均衡算法 rabbin负载均衡,dubbo 的负载均衡算法 rabbin负载均衡_容错处理 负载均衡_13,第13张


说明ribbon正好随机到刚才关闭的实例。这种情况明显不是我们想看到的,能不能达到这种效果:ribbon自动判断该实例服务是否可用,如果不可用的话,自动去访问另一个实例,如果还不可用,继续去连另一个。

ribbon当然有这种重试功能,作为一个秘书,这点能力是必须的。

开启ribbon重试功能

加入retry依赖


dubbo 的负载均衡算法 rabbin负载均衡,dubbo 的负载均衡算法 rabbin负载均衡_负载均衡_14,第14张


加入日志依赖


dubbo 的负载均衡算法 rabbin负载均衡,dubbo 的负载均衡算法 rabbin负载均衡_客户端_15,第15张


配置application.yml


dubbo 的负载均衡算法 rabbin负载均衡,dubbo 的负载均衡算法 rabbin负载均衡_dubbo 的负载均衡算法_16,第16张


关掉一个user-service,测试


dubbo 的负载均衡算法 rabbin负载均衡,dubbo 的负载均衡算法 rabbin负载均衡_HTTP_17,第17张


打印的重试次数=1。并没有报错。这样一来就可以保证另一台挂了,也不影响其它实例的正常使用。

总结

Ribbon是一个客户端的负载均衡器,用于保证客户端调用集群服务的高可用性。


https://www.xamrdz.com/backend/3s21922063.html

相关文章: