容错处理 负载均衡_SpringCloud-负载均衡Ribbon

回顾

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

什么是Robbin

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

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

Robbin有什么用

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

容错处理 负载均衡_SpringCloud-负载均衡Ribbon_第2张图片

现在有两家外卖

容错处理 负载均衡_SpringCloud-负载均衡Ribbon_第3张图片

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

启动两个user-service实例

一个8081,一个8082

容错处理 负载均衡_SpringCloud-负载均衡Ribbon_第4张图片

eureka监控面板

容错处理 负载均衡_SpringCloud-负载均衡Ribbon_第5张图片

配置user-consumer的负载均衡

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

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

容错处理 负载均衡_SpringCloud-负载均衡Ribbon_第6张图片

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

容错处理 负载均衡_SpringCloud-负载均衡Ribbon_第7张图片

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

容错处理 负载均衡_SpringCloud-负载均衡Ribbon_第8张图片

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

测试负载均衡策略

容错处理 负载均衡_SpringCloud-负载均衡Ribbon_第9张图片

打印结果:

容错处理 负载均衡_SpringCloud-负载均衡Ribbon_第10张图片

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

修改负载均衡策略

将策略改成随机

容错处理 负载均衡_SpringCloud-负载均衡Ribbon_第11张图片

再次运行结果

容错处理 负载均衡_SpringCloud-负载均衡Ribbon_第12张图片

关掉一个user-service服务测试

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

容错处理 负载均衡_SpringCloud-负载均衡Ribbon_第13张图片

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

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

开启ribbon重试功能

加入retry依赖

容错处理 负载均衡_SpringCloud-负载均衡Ribbon_第14张图片

加入日志依赖

容错处理 负载均衡_SpringCloud-负载均衡Ribbon_第15张图片

配置application.yml

容错处理 负载均衡_SpringCloud-负载均衡Ribbon_第16张图片

关掉一个user-service,测试

容错处理 负载均衡_SpringCloud-负载均衡Ribbon_第17张图片

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

总结

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

你可能感兴趣的:(容错处理,负载均衡)