返回顶部
首页 > 资讯 > 精选 >SpringCloud中Ribbon和Feign组件如何使用
  • 664
分享到

SpringCloud中Ribbon和Feign组件如何使用

2023-06-02 11:06:20 664人浏览 八月长安
摘要

SpringCloud中Ribbon和Feign组件如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、Ribbon简介1、基本概念Ribbon是一个客户

SpringCloud中Ribbon和Feign组件如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

一、Ribbon简介

1、基本概念

Ribbon是一个客户端的负载均衡(Load Balancer,简称LB)器,它提供对大量的Httptcp客户端的访问控制。

2、负载均衡简介

目前主流的负载均衡方案可分成两类:

1)集中式

即在服务的消费方和提供方之间使用独立的LB设施,可以是硬件,如F5,也可以是软件,如Nginx,由该设施负责把访问请求通过某种策略转发至服务的提供方;

2)进程内

将LB逻辑集成到消费方,消费方从服务注册中心获取可用服务列表,然后根据指定负载均衡策略选择合适的服务器。Ribbon就属于该方式。

3、Ribbon负载策略

SpringCloud中Ribbon和Feign组件如何使用

1) RoundRobinRule 轮询轮询服务列表List<Server>的index,选择index对应位置的服务。2) RandomRule 随机随机服务列表List<Server>的index,选择index对应位置的服务。3) RetryRule 重试指定时间内,重试(请求)某个服务不成功达到指定次数,则不再请求该服务。

二、Feign简介

基本概念

Feign 是一个声明式的 WEB Service 客户端。它的出现使开发 Web Service 客户端变得很简单。使用 Feign 只需要创建一个接口加上对应的注解,比如:@FeignClient 接口类注解。

执行流程

1) 主程序入口添加 @EnableFeignClients 注解开启对 FeignClient 接口扫描加载。接口使用@FeignClient注解。

2) 调用Feign 接口中的方法被时,通过jdk的代理的方式,生成具体的 RequestTemplate。

3) RequestTemplate 生成 Request请求,结合Ribbon实现服务调用负载均衡策略。

三、综合使用案例

1、项目结构图

SpringCloud中Ribbon和Feign组件如何使用

1)、模块描述

Eureka注册中心node02-eureka-7001两个服务提供方node02-provider-6001node02-provider-6002Ribbon服务调用node02-consume-8001Feign服务调用node02-consume-8002

2)、依赖Eureka知识

上篇文章Eureka使用:

2、Ribbon服务调用

代码所属模块:node02-consume-8001

1)、核心依赖

<dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-starter-ribbon</artifactId></dependency>

2)、配置文件

@Configurationpublic class LoadConfig {    @Bean    @LoadBalanced    public RestTemplate getRestTemplate (){        return new RestTemplate() ;    }    @Bean    public IRule getIRule (){        // 默认轮询算法        // return new RoundRobinRule() ;        // 重试算法:默认情况,访问某个服务连续三次失败,就不会再访问        // return new RetryRule() ;        // 随机算法        return new RandomRule() ;    }}

3)、调用方式

@RestControllerpublic class ConsumeController {    @Autowired    private RestTemplate restTemplate ;    String server_name = "http://NODE02-PROVIDER" ;    // http://localhost:8001/showInfo    @RequestMapping("/showInfo")    public String showInfo (){        return restTemplate.getForObject(server_name+"/getInfo",String.class) ;    }}

这里的NODE02-PROVIDER就是服务提供方的配置文件。两个服务提供方的这块配置相同,Ribbon正基于此,实现多个服务调用的负载均衡。

spring:  application:    name: node02-provider

4)、提供方接口

@RequestMapping("/getInfo")public String getInfo (){    LOG.info("provider-6002");    return "success" ;}

3、Feign服务调用

代码所属模块:node02-consume-8002

1)、核心依赖

<dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-starter-feign</artifactId></dependency>

2)、配置文件

@FeignClient(value = "NODE02-PROVIDER")public interface GetAuthorService {    @RequestMapping(value = "/getAuthorInfo/{authorId}",method = RequestMethod.GET)    String getAuthorInfo (@PathVariable("authorId") String authorId) ;}

3)、调用方式

@RestControllerpublic class ConsumeController {    @Resource    private GetAuthorService getAuthorService ;    @RequestMapping(value = "/getAuthorInfo")    public String getAuthorInfo () {        return getAuthorService.getAuthorInfo("1") ;    }}

4)、启动类注解

// 因为包名路径不同,需要加basePackages属性@EnableFeignClients(basePackages={"cloud.block.code.service"})

5)、提供方接口

@RequestMapping(value = "/getAuthorInfo/{authorId}",method = RequestMethod.GET)public String getAuthorInfo (@PathVariable("authorId") String authorId) {    LOG.info("provider-6002");    return "知了一笑"+authorId ;}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: SpringCloud中Ribbon和Feign组件如何使用

本文链接: https://lsjlt.com/news/229961.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SpringCloud中Ribbon和Feign组件如何使用
    SpringCloud中Ribbon和Feign组件如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、Ribbon简介1、基本概念Ribbon是一个客户...
    99+
    2023-06-02
  • springcloud之Feign、ribbon如何设置超时时间和重试机制
    Feign、ribbon设置超时时间和重试机制 前言 我们在微服务调用服务的时候,会使用feign和ribbon,比如有一个实例发生了故障而该情况还没有被服务治理机制及时的发现和摘除...
    99+
    2024-04-02
  • Java之Springcloud Feign组件怎么用
    这篇文章主要介绍Java之Springcloud Feign组件怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、Feign是什么?OpenFeign是Spring Cloud提供的一个声明式的伪Hltp客户端...
    99+
    2023-06-20
  • SpringCloud中Feign如何远程调用
    这篇文章将为大家详细讲解有关SpringCloud中Feign如何远程调用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言先来看我们以前利用RestTemplate发起远程调用的代码:这里就有几个问题:...
    99+
    2023-06-22
  • SpringCloud Bus组件如何使用
    本文小编为大家详细介绍“SpringCloud Bus组件如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringCloud Bus组件如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习...
    99+
    2023-06-29
  • 微服务Springcloud之Feign如何使用
    本文小编为大家详细介绍“微服务Springcloud之Feign如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“微服务Springcloud之Feign如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-07-05
  • SpringCloud中如何使用Sentinel哨兵组件
    这篇文章给大家介绍SpringCloud中如何使用Sentinel哨兵组件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、概念描述Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务...
    99+
    2023-06-02
  • SpringCloud中如何利用Ribbon实现负载均衡
    SpringCloud中如何利用Ribbon实现负载均衡,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。首先在pom文件添加Fegin的依赖包。  <d...
    99+
    2023-06-05
  • springcloud如何使用Feign后台内部传递MultipartFile
    目录如何使用Feign后台内部传递MultipartFile先修改FeignClient接口内部调用注意点Feign进行跨服务传递MultipartFile文件通过feign进行跨服...
    99+
    2024-04-02
  • SpringCloud 核心组件Feign【远程调用&自定义配置】
    目录 1,Feign远程调用 1.1:Feign概述 1.2:Feign替代RestTemplate         1):引入依赖         2):添加注解         3):编写Feign的消费服务,提供服务         ...
    99+
    2023-09-22
    spring cloud java spring Feign
  • SpringCloud 如何使用feign时的复杂参数传递
    Feign传参注意 最近在用SpringCloud尝试重构以前的项目,使用Feign客户端组件来调用微服务,经常出现参数传不过去变成null的问题,网上查了一下发现feign在参数上...
    99+
    2024-04-02
  • SpringCloud如何使用Feign实现动态路由操作
    这篇文章主要介绍“SpringCloud如何使用Feign实现动态路由操作”,在日常操作中,相信很多人在SpringCloud如何使用Feign实现动态路由操作问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”S...
    99+
    2023-06-30
  • SpringCloud中Feign组件添加请求头的坑怎么解决
    这篇文章主要介绍“SpringCloud中Feign组件添加请求头的坑怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringCloud中Feign组件添加请求头的坑怎么解决”文章能帮助大...
    99+
    2023-07-02
  • 如何分析SpringCloud中的Ribbon进行服务调用的问题
    这篇文章将为大家详细讲解有关如何分析SpringCloud中的Ribbon进行服务调用的问题,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、Robbon1.1、Ribbon概述(1)、Ri...
    99+
    2023-06-26
  • springcloud中Ribbon和RestTemplate实现服务调用与负载均衡
    文件目录结构 文件目录结构很重要,特别注意的是rule文件要放在主启动类上一级位置,才能够扫描。 写pom <dependencies> <!...
    99+
    2024-04-02
  • SpringCloud如何利用Feign访问外部http请求
    目录Feign访问外部http请求 累死人的写法:(仅参考)话不多说,先上pom.xmlbootstap.yml 部分配置在spingbootApplication启动类上...
    99+
    2024-04-02
  • Vue中如何使用全局组件和局部组件
    Vue中如何使用全局组件和局部组件,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。组件 (Component) 是 Vue.js...
    99+
    2024-04-02
  • Java中如何使用原子组件和同步组件
    Java中如何使用原子组件和同步组件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。原子组件的实现原理CAScas的底层实现可以看下之前写的一篇文章:详解锁原理,synchr...
    99+
    2023-06-15
  • SpringCloud Feign中怎么使用ApacheHttpClient代替默认client方式
    这篇文章主要讲解了“SpringCloud Feign中怎么使用ApacheHttpClient代替默认client方式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringC...
    99+
    2023-06-29
  • Flex中ComboBox和Datagrid组件如何使用
    这篇文章将为大家详细讲解有关Flex中ComboBox和Datagrid组件如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Flex ComboBox和datagrid的使用看完了Fl...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作