Feign负载均衡

【云原生&微服务九】SpringCloud之Feign实现声明式客户端负载均衡详细案例 Feign是一个声明式的客户端负载均衡器;采用的是基于接口的注解;整合了ribbon,具有负载均衡的能力;整合了Hystrix,具有熔断的能力; 阅读详情

1.简介:

feign是声明式的web service客户端,它让微服务之间的调用变得更简单了,类似controller调用
service。
Spring Cloud集成了Ribbon和Eureka,可在使用Feign时提供负载均衡的http客户端。
只需要创建一个接口,然后添加注解即可!
feign ,主要是社区,大家都习惯面向接口编程。这个是很多开发人员的规范。调用微服务访问两种方法
1. 微服务名字 【ribbon】
2. 接口和注解 【feign 】

2.作用:

Feign能干什么?
Feign旨在使编写Java Http客户端变得更容易
前面在使用Ribbon + RestTemplate时,利用RestTemplate对Http请求的封装处理,形成了一套模
板化的调用方法。但是在实际开发中,由于对服务依赖的调用可能不止一处,往往一个接口会被多
处调用,所以通常都会针对每个微服务自行封装一些客户端类来包装这些依赖服务的调用。所以,
Feign在此基础上做了进一步封装,由他 来帮助我们定义和实现依赖服务接口的定义,在Feign的实
现下,我们只需要创建一个接口并使用注解的方式来配置它(类似于以前Dao接口上标注Mapper
注解,现在是一个微服务接口上面标注一个Feign注解即可。)即可完成对服务提供方的接口绑
定,简化了使用Spring Cloud Ribbon时,自动封装服务调用客户端的开发量。

3.Feign的使用

我们在api上创建接口:


  1. package com.csh.springcloud.service;

  2. import com.csh.springcloud.pojo.Dept;

  3. import org.springframework.cloud.openfeign.FeignClient;

  4. import org.springframework.stereotype.Component;

  5. import org.springframework.web.bind.annotation.PathVariable;

  6. import org.springframework.web.bind.annotation.RequestMapping;

  7. import java.util.List;

  8. @Component

  9. @FeignClient(value = “SPRINGCLOUD-PROVIDER-DEPT”,fallbackFactory = DeptClientServiceFallbackFactory.class)

  10. public interface DeptClientService {

  11. @RequestMapping(“/dept/add”)

  12. public boolean addone();

  13. @RequestMapping(“/dept/find/{id}”)

  14. public Dept findbyid(@PathVariable(“id”) int id);

  15. @RequestMapping(“/dept/selectall”)

  16. public List<Dept> findall();

  17. }

实现类:


  1. package com.csh.springcloud.service;

  2. import com.csh.springcloud.pojo.Dept;

  3. import feign.hystrix.FallbackFactory;

  4. import org.springframework.stereotype.Component;

  5. import java.util.List;

  6. @Component

  7. public class DeptClientServiceFallbackFactory implements FallbackFactory<DeptClientService> {

  8. //这里提供的降级服务是当服务器崩了后停了之后客户端再来访问时还是能够访问得到降级信息,不至于服务崩溃了

  9. @Override

  10. public DeptClientService create(Throwable throwable) {

  11. return new DeptClientService() {

  12. @Override

  13. public boolean addone() {

  14. return false;

  15. }

  16. @Override

  17. public Dept findbyid(int id) {

  18. return new Dept().setDeptno(id).setDname(“降级”).setDb_source(“降级库”);

  19. }

  20. @Override

  21. public List<Dept> findall() {

  22. return null;

  23. }

  24. };

  25. }

  26. }

4.consumer上的修改:

DeptComsumerController控制层的修改:


  1. package com.csh.springcloud.controller;

  2. import com.csh.springcloud.pojo.Dept;

  3. import com.csh.springcloud.service.DeptClientService;

  4. import org.springframework.beans.factory.annotation.Autowired;

  5. import org.springframework.web.bind.annotation.PathVariable;

  6. import org.springframework.web.bind.annotation.RequestMapping;

  7. import org.springframework.web.bind.annotation.RestController;

  8. @RestController

  9. public class DeptComsumerController {

  10. @Autowired

  11. DeptClientService deptClientService=null;

  12. @RequestMapping(“/consumer/get/{id}”)

  13. public Dept findbyid(@PathVariable(“id”) int id)

  14. {

  15. return this.deptClientService.findbyid(id);

  16. }

  17. }

然后是在启动类上加上注解:

@EnableFeignClients(basePackages = “com.csh.springcloud”)

5.总结

Feign通过接口的方法调用Rest服务 ( 之前是Ribbon+RestTemplate )
该请求发送给Eureka服务器 (http://MICROSERVICECLOUD-PROVIDER-DEPT/dept/list)
通过Feign直接找到服务接口,由于在进行服务调用的时候融合了Ribbon技术,所以也支持负载均衡作
用!
feign其实不是做负载均衡的,负载均衡是ribbon的功能,feign只是集成了ribbon而已,但是负载均衡的功能
还是feign内置的ribbon再做,而不是feign。
feign的作用的替代RestTemplate,性能比较低,但是可以使代码可读性很强

【SpringCloudNetflix-OpenFeign客户端负载均衡】 接着上章【SpringCloudNetflix-Ribbon客户端负载均衡】,继续学习OpenFeign客户端负载均衡Feign是一个声明式的http客户端,使用Feign可以实现声明式REST调用,它的目的就是让Web Service调用更加简单。Feign整合了Ribbon和SpringMvc注解,这让Feign的客户端接口看起来就像一个Controller。Feign提供了HTTP请求的模板,通过编写简单的接口和插入注解,就可以定义好HTTP请求的参数、格式、地址等信息。 阅读详情

相关推荐

springcloud入门实战:Feign+Ribbon实现客户端负载均衡

Feign+Ribbon实现客户端负载均衡 理论上,如果服务端同一个服务提供者存在多个运行实例,一般的负载均衡方案分为以下两种: 1.服务端负载均衡 在消费者和服务提供者中间使用独立的反向代理服务进行负载均衡。可以通过硬件的方式提供反向代理服务,比如F5专业设备;也可以通过软件的方式提供反向代理服务,比如Nginx反向代理服务器;更多的情况是两种方式结合,并且有多个层级的反向代理。 2.客户端负载均衡 客户端自己维护一份从注册中心获取的Provider列表清单,根据自己配置的Provider负载均

公众号:该用户快成仙了 772

第五章 Feign负载均衡详解

参考官网: https://github.com/OpenFeign/feign在Spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端。我们可以使用JDK原生的URLConnection、Apache的Http Client、Netty的异步HTTP Client,Spring的RestTemplate。但是,用起来最方便的还是要属Feign了。Feign是一个声明式WebService客户端。

qq_41946216的博客 5852

四、Feign负载均衡

四、Feign负载均衡1. 概念2. 负载均衡配置2.1 新建项目2.2 引入依赖2.3 修改yml文件2.4 添加Feign接口2.5 添加Controller2.6 修改启动类2.7 效果测试 1. 概念   前面在使用Ribbon+RestTemplate时,利用RestTemplate对http请求的封装处理,形成了一套模板化的调用方法。   但在实际开发中,由于对服务依赖的调用可能不止一处,往往一个借口会被多处调用,素以通常都会针对每个微服务自行封装一些客户端类来包装这些依赖服务的调用。   因此

Chavaer 1617

【SpringCloud Alibaba】(四)使用 Feign 实现服务调用的负载均衡

这里,我们通过修改订单微服务的代码来实现自定义负载均衡。由于在整个项目中,订单微服务作为客户端存在,由订单微服务调用用户微服务和商品微服务,所以,这里采用的是客户端负载均衡的模式。

sco5282的博客 4194

Ribbon及Feign负载均衡

负载均衡 Ribbon 和 Feign 1. Ribbon 内容介绍 1.1 Ribbon 简介 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。 简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一R起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助

musterbig的博客 396

C#与YOLOv8工业缺陷检测实战:从算法到PLC集成的工程化落地

目标检测作为计算机视觉的核心任务,其原理是通过深度学习模型在图像中定位并识别物体。这项技术的关键价值在于将AI的感知能力转化为实际生产力,尤其在工业自动化领域,它能实现高效、精准的视觉检测。在工业缺陷检测这一典型应用场景中,稳定性和实时性是核心挑战。本文聚焦于如何将YOLOv8这一先进的目标检测模型,与C#上位机开发及工业相机硬件深度集成,构建一个能够7x24小时稳定运行的智能检测系统。文章深入探讨了从模型训练、ONNX部署,到与PLC通信联调的完整工程化路径,并针对工业环境中常见的稳定性、性能及调试问题提

weixin_33508411的博客 236

feign负载均衡

Targeter@FeignClient(name = "my-service") // name 对应配置的 clients.my-service你也可以定期在服务端维护一个“健康实例列表”,通过 Spring Cloud LoadBalancer 的自定义逻辑,把不健康的副本剔除(但这需要你自己维护健康状态)。功能是否由 LoadBalancer 提供负载均衡✅ 是熔断(失败跳过)❌ 否(需配合 Circuit Breaker)实例健康剔除❌ 否(需你手动实现)

lonelyhiker 1666

南京银行信息技术岗提前批笔试与面试

1、笔试 笔试大致可以分为三部分:性格测试、行测题目、专业知识 性格测试 性格测试一般会有较多的体量,可能一共大概有一百多道接近两百道的样子,这个是不限时的。 前面有100道是这样的题目,就是有四个选项都是各种形容词,然后分别选出最符合自己的与最不符合自己的选项。这种题你就顺着自己的潜意识填就行了,但是前后要一致,我怀疑他出这么多题,可能就是考一考你记不记得前面填了啥。比如你做到第90题的时候,可能会出现和前面第2题类似的四个形容词,更有甚者就是一模一样的,你要对自己之前选的什么有个比较清楚的记忆。

qq_40971025的博客 6920

Feign-负载均衡

一、简介 Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特 性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。 简而言之: Feign 采用的是基于接口的注解 Feign 整合了ribbo...

CentOS 1万+

推荐系统(1):推荐系统评测

对于可以离线优化的指标,我个人的看法是应该在给定覆盖率、多样性、新颖性等限制条件下,尽量优化预测准确度。用一个数学公式表达,离线实验的优化目标是:最大化预测准确度使得 覆盖率 > A多样性 > B新颖性 > C其中,A、B、C的取值应该视不同的应用而定。

数据不会骗人 2526

人民网留言数据爬取

起因是要做一个LDA主题分析的实践案例,需要数据来源,人民网的留言数据特别的适合,想着能不能用人民网留言数据来做一个LDA,种种原因还是放弃了,但是第一次弯弯绕绕地通过爬虫拿到了数据,还是想记录一下。值得说明的是,这篇博客写于2025年11月9日,其中的加密逻辑可能会随着时间而变动。

Phoenix1st的博客 1020

spring boot负载均衡Feign

springboot负载均衡Feign1. 创建 Feign2. 配置gradle3. Feign配置4. 开启Feign5. 创建Feign配置6. 创建FeignDao7. 创建FeignService8. 创建FeignController9. 启动&验证10. Feign与Ribbon的关系11. FeignClient12. FeignClient配置 git地址 https:/...

a18792721831的博客 2515

新华硕笔记本ubuntu18.04双系统安装之后,wifi没有显示无法链接wifi

本来我以为跟简单安装一个wifi网卡的驱动就可以解决的问题,没想到花了我一早上的时候解决… 惭愧。 另外,本来是没打算写这篇博客的,但是我在搜索解决这个问题的过程中, 发现多人提出的解决方案跟我的都不一样,甚至我的解决方案都没有搜到相应的答案,还是只能靠自己啊。。 言归正传,还是说说怎么正确的安装wifi驱动吧! 1. wifi没有正确安装、或没有正确配置的表现 我的电脑现象: 有wifi图标, wifi设置上显示unaviable,无法搜索到任何wifi; 还有其他类似的表现,大家可以看看其他朋友的提

Ian的博客 1889

feign如何实现负载均衡?

spring初始化默认加载resource下META-INF下spring.factory配置,其中FeignLoadBalancerAutoConfiguration是feign实现负载均衡的核心 HttpClientFeignLoadBalancerConfiguration:ApacheHttpClient请求配置 OkHttpFeignLoadBalancerConfiguration:OkHttpClient网络请求方式 DefaultFeignLoadBalancerConfiguratio

cs_coding的博客 8219

短信验证码逻辑漏洞学习——各种绕过姿势技巧

短信验证码逻辑漏洞学习——各种绕过姿势技巧

记录并分享学习安全的知识点.. 2555

YOLOv8 置信度阈值 (conf) 和 IoU 阈值 (iou) 详解:如何平衡漏检与误检?

摘要 本文深入探讨了YOLOv8目标检测模型中两个关键参数——置信度阈值(conf)和IoU阈值(iou)的核心作用。文章从目标检测的基础概念出发,解释了置信度分数反映模型预测可靠性,IoU衡量预测框重叠程度。重点剖析了非极大值抑制(NMS)机制如何通过这两个阈值进行预测框筛选:置信度阈值作为初筛门槛,IoU阈值决定重叠框的取舍。通过生动比喻和可视化图表,阐述了合理调节这两个参数能有效平衡误检与漏检问题,是优化YOLOv8模型实际表现的重要技巧。全文以实践为导向,帮助开发者掌握成为"调参大师&qu

深耕 Vue 生态与 JS/TS 技术,聚焦组件封装、响应式原理、TS 类型设计,解析工程化配置与性能优化方案。同时分享 YOLOv8 目标检测实战、AI 大模型面试核心考点,以代码实例拆解技术实现与业务解法。 1236

SpringCloud-Feign负载均衡

SpringCloud-Feign负载均衡 注明:此项目为本人学习尚硅谷老师的教学视频然后整理核心的配置文件,所有的项目均在以下地址下载。https://github.com/xwbGithub/microservicecloud下载 本项目请参考microservicecloud-consumer-dept-feign...

有一种信仰叫海阔天空 2615

完整复盘【避雷jd文职某岗位】潍坊青州hhj(据说未来搬到天津),助理实验师岗位,三人进面,面试全部不及格,空头岗位!像这种情况,该单位很多 | 附个人完整备考背诵题目 | 世间一场梦,不会再考这个了

本文以博主本人报考jun dui文职,从报考、备考、考试、查成绩到资格审查、面试,全程亲身经历,给想要报考该内容的朋友们一些小的参考。祝你顺利上岸!完整复盘【避雷jd文职某岗位】潍坊青州hhj(据说未来搬到天津),助理实验师岗位,三人进面,面试全部不及格,空头岗位!像这种情况,该单位很多 | 附个人完整备考背诵题目 | 世间一场梦,不会再考这个了

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 244

负载均衡-Feign(二)

Feign 是Spring Cloud Netflix 组件中的一个轻量级RESTFul的HTTP服务客户端,实现了负载均衡和Rest调用的开源框架,封装了Ribbon和RestTemplate;实现了WebService的面向接口编程,进一步降低了项目的耦合度

华小灼 2794

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

SpringCloud06-Feign负载均衡

Feign是声明式的web service客户端,它让微服务之间的调用变得更简单了,类似controller调用service. SpringCloud集成了Ribbon和Eureka,可在使用Feign时提供负载均衡的http客户端。只需要创建一一个接口,然后添加注解即可!feign 主要是社区,大家都习惯面向接口编程。这个是很多开发人员的规范。调用微服务访问两种方法微服务名字 [ribbon]接口和注解 [feign]

xzh202206的博客 945

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Spring Cloud Feign 负载均衡策略配置

feignClient中修改ribbon的配置 1.使用@FeignClient注解发现服务 服务提供者的controller: @RestController public class StudentController { @Autowired private StudentService studentService; @GetMapping("/getA...

guoqiusheng的专栏 2万+

【feign】Spring Cloud Feign组件的重试策略及负载均衡策略

文章目录Spring Cloud Feign组件的重试策略及负载均衡策略简介Feign重试策略Feign负载均衡策略 Spring Cloud Feign组件的重试策略及负载均衡策略 简介 在使用Spring Cloud微服务框架的过程中,经常会使用Feign组件进行服务间的远程调用。微服务远程调用技术的dubbo具备负载均衡策略(轮训、最小连接数、随机轮训、加权轮训)及失败策略(快速失败、失败重试),那么 Feign的负载均衡策略是什么? 失败后是否会重试,重试策略又是什么? 带着这些疑问,查阅了一些资料

hkk666123的博客 2076
上一篇: Ribbon负载均衡
下一篇: Hystrix断路器
jakeonil
博客等级 码龄5年 1万+粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jakeonil

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值