当前位置: 首页 > news >正文

负载均衡——Ribbon

文章目录

    • Ribbon和Eureka配合使用
      • 项目引入Ribbon
      • RestTemplate添加@LoadBalanced注解
      • 注意
      • 自定义均衡方式
        • 代码注册方式
        • 配置方式
    • Ribbon脱离Eureka使用

Ribbon,Nexflix发布的负载均衡器,有助于控制HTTP和TCP客户端的行为。基于某种负载均衡算法(轮询、随机等),自动地帮助服务消费者去请求。

当Ribbon和Eureka配合使用时,Ribbot可自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务提供者实例。

对Ribbon理解

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 {@Beanpublic 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.

相关文章:

  • 密码学:带密钥的消息摘要算法一数字签名算法
  • 【 YOLOv5】目标检测 YOLOv5 开源代码项目调试与讲解实战(3)-训练yolov5模型(本地)
  • 一次降低进程IO延迟的性能优化实践——基于block层bfq调度器
  • YOLOv8改进 | 2023主干篇 | FasterNeT跑起来的主干网络( 提高FPS和检测效率)
  • 手撸一个仿蚂蚁森林微信小程序
  • Python序列之集合
  • 三.Linux无名管道(PIPE)和有名管道(FIFO)的区别
  • CSS去掉按钮阴影 | css去掉按钮边框 | 注意改变搜索的关键词、搜索方式
  • 论文阅读——SG-Former
  • 【Minikube Prometheus】基于Prometheus Grafana监控由Minikube创建的K8S集群
  • 通配符和正则表达式
  • JVM系列-方法区、堆区、栈区
  • 常见负载均衡方案分析
  • ClickHouse基础知识(六):ClickHouse的副本配置
  • jsp结合servlet
  • hexo+github搭建个人博客
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 「面试题」如何实现一个圣杯布局?
  • Angular 响应式表单之下拉框
  • Javascript基础之Array数组API
  • JDK 6和JDK 7中的substring()方法
  • JS函数式编程 数组部分风格 ES6版
  • JS专题之继承
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • Phpstorm怎样批量删除空行?
  • Redis 懒删除(lazy free)简史
  • 阿里云应用高可用服务公测发布
  • 每天一个设计模式之命令模式
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 使用权重正则化较少模型过拟合
  • 项目实战-Api的解决方案
  • 写给高年级小学生看的《Bash 指南》
  • 用jQuery怎么做到前后端分离
  • 阿里云重庆大学大数据训练营落地分享
  • 数据库巡检项
  • 我们雇佣了一只大猴子...
  • (23)Linux的软硬连接
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • .apk 成为历史!
  • .htaccess配置常用技巧
  • .NET 8.0 发布到 IIS
  • .Net CF下精确的计时器
  • .net core 控制台应用程序读取配置文件app.config
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .net wcf memory gates checking failed
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .NET和.COM和.CN域名区别
  • .net中调用windows performance记录性能信息