ribbon,feign选择和与Hystrix的整合应用

  1. feign是在ribbon上封装的

  2. ribbon请求需要自己拼接 而 Feign 是一个使用起来更加方便的 HTTP 客戶端,使用起来就像是调用自身工程的方法,而感觉不到是调用远程方法。

在这里插入图片描述

  1. feign封装了负载均衡功能

  2. 可以统一管理 方便复用

  3. 极简整合hystrix

2.spring boot使用feign+hystrix


1.修改application类

@SpringBootApplication(scanBasePackages = “com.vanpeng.cms”)

@ComponentScan(“com.vanpeng.cms.*”)

@EnableCaching

@EnableEurekaClient

@EnableSwagger2

@EnableFeignClients #开启feign

@EnableCircuitBreaker #开启hystrix

//@EnableApolloConfig

public class CmsApplication {

public static void main(String[] args) {

SpringApplication.run(CmsApplication.class, args);

}

@Bean

@LoadBalanced

RestTemplate restTemplate() {

return new RestTemplate();

}

}

2.修改application.yml

feign:

hystrix:

enabled: true #hystrix默认关闭需要 开启

ribbon:

ConnectTimeout: 5000 # 请求连接的超时时间 默认的时间为 1 秒

ReadTimeout: 5000 # 请求处理的超时时间

hystrix:

command:

default: #default全局有效,service id指定应用有效

execution:

timeout:

#如果enabled设置为false,则请求超时交给ribbon控制,为true,则超时作为熔断根据

enabled: true

isolation:

strategy: SEMAPHORE

thread:

timeoutInMilliseconds: 5000 #断路器超时时间,默认1000ms

circuitBreaker:

enabled: true

requestVolumeThreshold: 10 #默认20 ,熔断的阈值,如何user服务报错满足3次,熔断器就会打开,就算order之后请求正确的数据也不行。

sleepWindowInMilliseconds: 8000 #默认5S , 等5S之后熔断器会处于半开状态,然后下一次请求的正确和错误讲决定熔断器是否真的关闭和是否继续打开

errorThresholdPercentage: 0.5

3.服务间调用

@FeignClient(name = “data-service”, fallback = DataFallBack.class) //表明是feign接口 name为被调用服务在erueka上的服务名

public interface DataServiceFeign {

@PostMapping(“/selectDataSetId”) //对应着被调用服务的路径 post表明为post请求 请求参数为@RequestBody ResultCatalog resultCatalog

Result selectByDataSetId(@RequestBody ResultCatalog resultCatalog);

@GetMapping(“/resourceMenu/selectFeignService/{lecturerUserNo}”) //表明为get请求 参数为 @PathVariable(value = “lecturerUserNo”) Long lecturerUserNo

Result<List>

selectService(@PathVariable(value = “lecturerUserNo”) Long lecturerUserNo);

}

4.熔断hystrix

@Component

public class DataFallBack implements DataServiceFeign { //需要实现feign接口 每个方法对应着每个feign调用的服务

@Override

public Result selectByDataSetId(ResultCatalog resultCatalog) {

Result result = new Result();

String error = “调用系统失败。”;

result.setCode(506);

result.setMessage(error);

return result;

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
ndroid开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 20
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值