使用Ribbon实现客户端负载均衡
来源:互联网 发布:linux修改tomcat内存 编辑:程序博客网 时间:2024/06/13 15:44
- 关于Ribbon
- Ribbon实现负载均衡
- 使用属性自定义Ribbon配置
- 负载均衡策略介绍
上篇已经实现了Eureka Server的高可用,理论上已经使得微服务更加完美,但依旧存在些许问题。例如,来自服务消费者的请求如何分摊到部署了多个实例的服务提供者?分摊规则如何取?本篇即揭开Ribbon面纱。
1、Ribbon简介
Ribbon是Netflix发布的负载均衡器,它可以控制HTTP和TCP客户端的行为规则。Ribbon支持多种负载均衡规则帮助服务消费者根据指定规则分摊请求到服务提供者,如轮询、随机、加权响应时间、区域感知轮询等。Ribbon配合Eureka使用更加的高效,配置也得到的极大的简化,大致架构图如下:
2、Ribbon实现负载均衡
由上面的架构图可以清晰的看出,Ribbon配置在服务消费者端。下面开始配置
复制项目microservice-springcloud-ticket-consumer,修改ArtifactId为 microservice-consumer-ribbon;
pom文件中添加ribbon依赖: eureka中已包含ribbon依赖的jar了,故不再重复引入;
启动类ConsumerTicketApplication类中的RestTemplate上加上@LoadBalanced注解即可
@LoadBalanced@Beanpublic RestTemplate restTemplate() { return new RestTemplate();}
修改TicketController类:
@GetMapping("/ribbon/{id}")public UserActivityInfo findById(@PathVariable Long id) { return this.restTemplate.getForObject("http://microservice-springcloud-eureka-provider/"; + id, UserActivityInfo.class);}
注意: microservice-springcloud-eureka-provider是用户微服务实例中spring.application.name定义的服务提供者名称,一个名称可对应多个服务提供者实例
测试:
启动microservice-springcloud-eureka服务
启动microservice-consumer-ribbon服务
启动两个或更多microservice-springcloud-eureka-provider实例,每个实例端口要不一致
浏览器多次访问: http://localhost:8888/ribbon/1405050
可以发现,每访问一次,控制台依次输出一次,也就是每次请求均匀分配到了各个实例上,默认负载规则为轮询,上述代码已实现
项目代码:microservice-consumer-ribbon
3、使用属性配置自定义Ribbon配置
特定场景下,需要修改负载均衡规则,如不再使用轮询,改为随机,那么结合属性配置的方式这些将变得很简单
在项目microservice-consumer-ribbon中的application.yml中添加服务提供者的ribbon负载均衡规则
microservice-springcloud-eureka-provider: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
microservice-springcloud-eureka-provider同上面的注意点的含义一致,这样便将负载均衡规则改为了随机
测试步骤同上,依次访问,依次观察两个用户微服务实例控制台的log,可以发现负载规则已经不再是轮询,而是随机了
4、Ribbon提供以下7种负载均衡策略(此表格借阅自他人博客)
阅读全文
1 0
- 使用Ribbon实现客户端负载均衡
- springcloud使用ribbon实现客户端负载均衡
- spring cloud学习(二)使用Ribbon实现客户端负载均衡
- ribbon客户端负载均衡
- spring cloud使用ribbon实现负载均衡
- SpringCloud---Ribbon客户端负载均衡
- spring cloud中使用Ribbon实现客户端的软负载均衡
- 【SpringCloud】(六):Ribbon实现客户端负载均衡
- Spring Cloud+Eureka+Ribbon实现客户端负载均衡
- Ribbon客户端负载均衡(译)
- 客户端负载均衡 Spring Cloud Ribbon
- spring cloud Ribbon 2 (客户端负载均衡)
- Ribbon实现服务器端的负载均衡
- 3.消费者(REST+Ribbon实现负载均衡)
- 使用配置文件自定义Ribbon的负载均衡
- SpringCloud-----1、Eureka实现服务治理(Ribbon客户端负载均衡调用服务)
- SpringCloud(第 006 篇)电影微服务,使用 Ribbon 在客户端进行负载均衡
- SpringBoot -- 负载均衡Ribbon
- LoRaWAN节点RTC定时器链表分析
- web前端开发中关于面向对象(三)
- 10-25 最小生成树——kruskal算法学习——经典例题及自编模版
- 如何实现点击一个下拉菜单的选项就弹出不同的输入框或者下拉菜单
- git 工作中常用命令
- 使用Ribbon实现客户端负载均衡
- hibernate整合的公共工具类---继承实现
- oracle11gserver在win10系统上面的安装和使用
- angularJS订单管理
- 无线轮播 + GridView
- 小程序模板中的data里面的...item是什么意思
- Java并发编程:ThreadLocal
- Python: PS 滤镜--旋涡特效
- PAT考试乙级1001(C语言实现)