Feign

feign
-名词解释:
Feign是一个声明式的REST客户端,它的目的就是让REST调用更加简单。
Feign提供了HTTP请求的模板,通过编写简单的接口和插入注解,就可以定义好HTTP请求的参数、格式、地址等信息。
并且,Feign则会完全代理HTTP请求,我们只需要像调用方法一样调用它就可以完成服务请求及相关处理。
SpringCloud对Feign进行了封装,使其支持SpringMVC标准注解和HttpMessageConverters。

-底层:RequetTemplate

-使用体验:在Spring Cloud中使用Feign, 我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。

-使用:只需要注解+接口即可,不需要实现类

-模板化体现:Spring Cloud应用在启动时,Feign会扫描标有@FeignClient注解的接口,生成代理,并注册到Spring容器中。
生成代理时Feign会为每个接口方法创建一个RequetTemplate对象,该对象封装了HTTP请求需要的全部信息,请求参数名、请求方法等信息都是在这个过程中确定的,Feign的模板化就体现在这里。

-默认使用springMVC的合约(比如:接口调用注解,@RequestMapping),也可以使用feign的合约(如:@RequestLine),但是需要自定义配置。
比如:feign默认的日志记录级别是:DEBUG 可以通过自定义的Configuration 类中加入 其他日志级别

-Feign可以与Eureka和Ribbon组合使用以支持负载均衡。

-熔断处理方式的区别:
1,fallback只是在接口异常时执行类里面的实现,无法抓取具体的异常信息。

2,如果在FeignClient调用接口,接口服务出现异常的情况下需要提取异常信息,可以使用fallbackFactory.

PS:
1,Feign本身没有集成Eureka。
2,通过Eureka和ribbon提供负载均衡。(feign 整合了ribbon)

博客地址:https://www.cnblogs.com/jalja/p/7011439.html
https://blog.csdn.net/wshl1234567/article/details/78744806
(Feign中注解的属性解释)
https://www.cnblogs.com/moonandstar08/p/7565442.html

熔断机制 hystrix

-名词解释:Hystrix回退,当电路(服务调用)断开或出现错误(服务调用异常)时执行的默认代码路径(执行指定的类的方法),
要为给定的@FeignClient启用回退,请将fallback属性设置为实现回退的类名。

-注意:
1,fallback 和 fallbackFactory 同时配置的时候,只有fallback生效,而fallbackFactory并不会被执行,所以fallback 和 fallbackFactory只需配置一个即可。

-注解解释:
1,feign.hystrix.enabled=true 是否开启熔断器

2,hystrix.command.default.execution.timeout.enabled=true 是否开启超时熔断, 如果为false, 则熔断机制只在服务不可用时开启

3,hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=300 设置超时熔断时间

-在Spirng Cloud 的启动类中加入@EnableHystrixDashboard注解,开启hystrixDashboard(仪表盘)

博客地址:https://www.cnblogs.com/leeSmall/p/8847652.html
http://cheneyph.iteye.com/blog/2366483

RestTemplate
-名词解释:RestTemplate是Spring提供的用于访问Rest服务的客户端

-有什么作用/优势?
RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。

-执行过程
1,调用RestTemplate的默认构造函数,RestTemplate对象在底层通过使用java.net包下的实现创建HTTP 请求
2,通过使用ClientHttpRequestFactory指定不同的HTTP请求方式。
3,ClientHttpRequestFactory接口主要提供了两种实现方式
(1、一种是SimpleClientHttpRequestFactory,使用J2SE提供的方式(既java.net包提供的方式)创建底层的Http请求连接。
2、一种方式是使用HttpComponentsClientHttpRequestFactory方式,底层使用HttpClient访问远程的Http服务,使用HttpClient可以配置连接池和证书等信息。

PS:
1,唯一的弊端就是你需要知道服务提供者的地址

博客:https://www.cnblogs.com/duanxz/p/3510622.html

FeignClient与RestTemplate的区别比较简单研究
博客: https://www.cnblogs.com/EasonJim/p/8321355.html

在Spring cloud有两种服务调用方式,一种是ribbon+restTemplate,另一种是feign,feign注解化更方便使用

PS:
1,@FeignClient注解是为了调用方的在服务注册机器上找到服务提供方 name属性:name对应调用服务的spring.applicatoin.name

ribbon
-名词解释:ribbon是一个客户端的负载均衡器,运行在客户端上,可以很好的控制htt和tcp的一些行为。Feign默认集成了ribbon。

博客:https://blog.csdn.net/forezp/article/details/74820899

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值