前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring-Cloud-Netflix-Ribbon&Feigen

Spring-Cloud-Netflix-Ribbon&Feigen

作者头像
JokerDJ
发布2023-11-27 13:21:08
1630
发布2023-11-27 13:21:08
举报
文章被收录于专栏:JokerDJJokerDJ
Spring-Cloud-Netflix-Ribbon&Feigen

负载均衡Ribbon

负载均衡概述

  1. 实际环境中,我们往往会开启很多个goods-service的集群。此时我们获取的服务列表中就会有多个,到底该访问哪一个呢
  2. 如何从多台服务器当中, 均衡的调用
Spring Cloud Ribbon

  1. Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。
  2. Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。
  3. Ribbon是Netflix发布的负载均衡器,Ribbon默认为我们提供了很多负载均衡算法,
  4. 例如轮询、随机等。当然,我们也可为Ribbon实现自定义的负载均衡算法。 在Spring
  5. Cloud中,当Ribbon与Eureka配合使用时,Ribbon可自动从Eureka Server获取服务提供者地址列表,
  6. 并基于负载均衡算法,请求其中一个服务提供者实例。展示了Ribbon与Eureka配合使用时的架构。

Ribbon负载均衡配置

  1. 在Eureka当中已经包换了Ribbon,所以我们不需要单独添加依赖
在这里插入图片描述
在这里插入图片描述
  1. 在RestTemplatet的Bean上再添加一个注解@LoadBalanced
在这里插入图片描述
在这里插入图片描述
  1. 在控制器当中定义要调用服务的实例名称
在这里插入图片描述
在这里插入图片描述

默认是轮询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

负载均衡算法

  1. 随机
  2. 轮询
  3. hash:根据ip地址进行hash,通过ip值模于服务的数量,从而确定访问认证
  4. 最少访问

这些算法, 都不需要要我们去写, 直接使用一个Robbin进行操作

核心组件IRule

IRule是是Ribbon对于负载均衡策略实现的接口

默认实现IRule接口的类:

  1. RoundRobinRule:轮询
  2. RandomRule:随机
  3. AvailabilityFilteringRule:会先过滤由于多次访问故障处于断路器跳闸状态 的服务,还有并发的连接数据超过阈值的服务,然后对剩余的服务列表按照轮询策略进行选取
  4. WeightedResponseTimeRule:根据平均响应时间计算所有服务的权重,响应时间越快权重越大,刚启动时如果统计信息不足,则使用RoundRobinRule策略,等统计信息足够时后,会切换到WeightedResponseTieRule
  5. RetryRule:先按照RoundRobinRule的策略获取服务,如果获取服务失败,则在制定时间内会重试,再获取不到, 则放弃
  6. BestAvailableRule:会先过滤掉由于多次访问故障,而处于断路器跳闸的服务,然后选择一个并发量最小的服务
  7. ZoneAvoidanceRule:默认规则,符合判断Server所在区域的性能和server的可用性选择服务器

IRule配置:在启动类添加

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
	@Bean
    public IRule Irule(){
        return new RandomRule();//随机
    }
不同服务设置不同的策略

步骤:

  1. 新建两个order和order1的子模块
在这里插入图片描述
在这里插入图片描述
  1. 添加依赖
代码语言:javascript
复制
	<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--Eureka的客户端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>
  1. 复制goods的文件到order,order1并修改名称
在这里插入图片描述
在这里插入图片描述
  1. 修改配置文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  1. 创建config包,写goods和order的负载均衡配置
在这里插入图片描述
在这里插入图片描述

goodsconfig:

代码语言:javascript
复制
@Configuration
public class goodsConfig {
    @Bean
    public IRule goods(){
        return new RoundRobinRule();
    }
}

orderconfig:

代码语言:javascript
复制
@Configuration
public class OrderConfig {
    @Bean
    public IRule order(){
        return new RandomRule();
    }
}
  1. 启动类添加
在这里插入图片描述
在这里插入图片描述

删除:

在这里插入图片描述
在这里插入图片描述

Feigen

概述:

直接使用RestTemplate存在问题:在请求接口时, 路径仍存在问题,只解决了服务名称,没有解决服务后,功能路径问题,因为有可能是别人开发的, 你不知道后面功能路径是什么

  1. 什么是Feign?

  1. Feign是一个声明式WebService客户端。 Feign旨在使编写Java Http客户端变得更容易。
  2. Feign在RestTemplate基础上做了进一步封装,由他来帮助我们定义和实现依赖服务接口的定义
  3. Feign可以把请求进行隐藏,你不用再自己拼接url,拼接参数等等操作,一切都交给Feign去做。
  4. 调用时,使用的负载均衡,是当前客户端配置的负载均衡规则

使用步骤:

  1. 在客户端引入依赖:
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
  1. 在启动类上面加上注解:@EnableFeignClients
在这里插入图片描述
在这里插入图片描述
  1. 创建服务FeignClient,创建一个service文件夹,在该文件下创建一个接口,在接口加上添加@FeignClient()注解 参数就是你的微服务名字
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
@FeignClient(name= "client-goods")
public interface goodsFeignClient {
    @RequestMapping("/getGoods.do")
    public Object getGoods();
}
  1. 在控制器当中进行调用
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
 	@Autowired
    goodsFeignClient goodsFeignClient;
 	@RequestMapping("/getGoods.do")
    public ResponseResult getGoods(){
        return ResponseResult.success("操作成功",
                goodsFeignClient.getGoods());
    }
  1. 启动访问localhost:5000/getGoods.do
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-11-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Spring-Cloud-Netflix-Ribbon&Feigen
  • 负载均衡Ribbon
    • 负载均衡概述
      • Spring Cloud Ribbon
    • Ribbon负载均衡配置
      • 负载均衡算法
        • 核心组件IRule
        • 不同服务设置不同的策略
    • Feigen
      • 使用步骤:
      相关产品与服务
      负载均衡
      负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档