云社区 博客 博客详情

SpringCloud梳理-Feign

SegmentFault思否 发表于 2020-11-01 00:19:33 2020-11-01
0
0

【摘要】 1.Feign为服务应用中,ribbon和hystrix同时出现,feign整合两者,并提供了声明式消费者客户端.feign是一种集成工具功能有:远程调用,ribbon-负载均衡和重试,hystrix-降级 熔断1.1Feign远程调用Fegin提供了声明式客户端,只需要定义一个接口,就可以通过接口做远程调用.具体调用代码通过动态代理添加.// 调用商品服务的远程调用接口 ...

1.Feign

为服务应用中,ribbon和hystrix同时出现,feign整合两者,并提供了声明式消费者客户端.
feign是一种集成工具功能有:远程调用,ribbon-负载均衡和重试,hystrix-降级 熔断

1.1Feign远程调用

Fegin提供了声明式客户端,只需要定义一个接口,就可以通过接口做远程调用.具体调用代码通过动态代理添加.
// 调用商品服务的远程调用接口

// 通过注解配置3件事:调用哪个服务,调用什么路径,向这个路径提交什么参数

@FeignClient(name="item-service")

public interface ItemFeignClient {

 @GetMapping("/{orderId}")

 JsonResult> getItems(@PathVariable String orderId);

}

1.1.1添加声明式客户端

1.OpenFegin依赖
2.启动类添加@EnableFeignClient
3.定义声明式客户端接口 例如:ItemFeignClient UserFeignClient OrderFeignClient
4.添加一个测试用的控制器,使用三个声明式客户端接口调用远程服务.

1.2Feign集成Ribbon

负载均衡 重试
Feign默认启用了Ribbon的负载均衡和重试 0配置.
默认重试参数:MaxAutoRetries=0 MaxAutoRetriesNextServer=1 ReadTimeout=1000
重试参数配置
# 对所有服务都有效

ribbon:

 MaxAutoRetries: 1

# 对 item-service 单独配置,对其他服务无效

item-service:

 ribbon: MaxAutoRetries: 0

1.3Feign集成Hystrix

默认不启用hystrix,Feign不推荐启用hystrix

1.3.1如果有特殊需求要启用hystrix,首先做基础配置

1.添加hystrix完整依赖
2.添加@EnableCircuitBreaker
3.yml配置feign.hystrix.enable=true

1.3.2降级

在声明式客户端接口的注解中,制定一个降级类(之前的是降级方法)
@FeignClient(name="item-service", fallback=降级类.class)

public interface ItemFeignClient {

 ....

}
降级类要作为声明式客户端接口的子类来定义.

1.3.3hystrix监控

用actuator暴露hystrix.stream监控端点
1.actuator依赖
2.暴露监控端点
m.e.w.e.i=hystrix.stream
3.http://localhost:3001/actuator/hystrix.stream
4.通过调用后台服务,产生监控数据.

1.4熔断

10秒内20次请求,50%失败执行了降级代码.

2.代码展示

用feign代替hystrix+ribbon

image

文章来源: segmentfault.com,作者:BolunWu,版权归原作者所有,如需转载,请联系作者。

原文链接:segmentfault.com/a/1190000037676542

登录后可下载附件,请登录或者注册

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:huaweicloud.bbs@huawei.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
评论文章 //点赞 收藏 0
点赞
分享文章到微博
分享文章到朋友圈

上一篇:vite 不支持 ie 11?configureBuild Hook 帮你定制 bundle 打包过程

下一篇:数据结构-PHP 线段树的实现

评论 (0)


登录后可评论,请 登录注册

评论