负载均衡——Ribbon
2023-12-26 18:40:20
Ribbon,Nexflix发布的负载均衡器,有助于控制HTTP和TCP客户端的行为。基于某种负载均衡算法(轮询、随机登),自动地帮助服务消费者去请求。
当Ribbon和Eureka配合使用时,Ribbot可自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务提供者实例。
Ribbon和Eureka配合使用
项目引入Ribbon
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
如果已经引入spring-cloud-starter-eureka,无需再次引人,里面已经包含该依赖
RestTemplate添加@LoadBalanced注解
只需添加@LoadBalanced就可为RestTemplate整合Ribbon,使其具备负载均衡能力
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
// 用于访问第三方网络接口
return new RestTemplate();
}
注意
当Ribbon和Eureka配合使用时,会自动将虚拟主机名(可将其简单理解成为提供者的服务名)映射成微服务的网络地址,代码中记得替换
microservice-provider-user 替换 localhost:8000
@GetMapping("user/{id}")
public User findById(@PathVariable Long id){
return restTemplate.getForObject("http://microservice-provider-user/" + id, User.class);
}
自定义均衡方式
代码注册方式
// 注意:该类不应该在主应用程序上下文的@ComponentScan 中,否则该类中的配置信息就被所有的@RibbonClient共享
// 注意:自定义算法不可以放在与注解 @ComponentScan 的同包或者子包下,否则不起作用
@Configuration
public class MySelfRule {
@Bean
public IRule ribbonRule(){
System.out.println("hahahahah");
// 负载均衡规则改为随机
return new RandomRule();
}
}
在主程序添加
@RibbonClient(name = "microservice-provider-user", configuration = MySelfRule.class)
// @ComponentScan忽略指定包
// @ComponentScan(excludeFilters={@ComponentScan.Filter(type = FilterType.REGEX,pattern = "com.cloud.config.*")})
配置方式
# 修改服务地址轮询策略,默认是轮询,可配置随机等
microservice-provider-user:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
Ribbon脱离Eureka使用
https://www.dandelioncloud.cn/article/details/1596843302127353857
报错:
Field loadBalancerClient in com.cloud.controller.MovieController required a bean of type ‘org.springframework.cloud.client.loadbalancer.LoadBalancerClient’ that could not be found.
文章来源:https://blog.csdn.net/weixin_40970987/article/details/134058067
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!