Feign的调用

Feign是一种简化远程调用的工具,它集成了Ribbon的负载均衡和Hystrix的熔断策略。Feign通过动态代理接口进行调用,构建代理对象并使用Contract协议解析接口元数据。调用过程中,拦截器处理Request和Response,支持重试和降级策略。重试可基于Ribbon配置,降级则通过Hystrix策略实现。
摘要由CSDN通过智能技术生成

服务调用方式

  • Eureka ->http://ip:port/path

  • Ribbon ->http://serviceName/path

  • Feign->@FeignClient(“service-name”)

Feign

  • 简化远程调用,集成Ribbon,集成Hystrix

    • Ribbon:利用负载均衡策略选定目标机器
    • Hystrix:根据熔断器的开启状态,决定是否发起此次调用
  • 动态代理

    Feign是通过一个代理接口进行远程调用,这一步就是为了构造接口的动态代理对象,用来代理远程服务的真实调用,这样你就可以像调用本地方法一样发起HTTP请求,不需要像Ribbon或者Eureka那样在方法调用的地方提供服务名。在Feign中动态代理是通过Feign.build返回的构造器来装配相关参数,然后调用ReflectFeign的newInstance方法创建的。这里就应用到了Builder设计模式

  • Contract

    协议,顾名思义,就像HTTP协议,RPC协议一样,Feign也有自己的一套协议的规范,只不过他解析的不是HTTP请求,而是上一步提到的动态代理类。通过解析动态代理接口+Builder模式,Contract协议会构造复杂的元数据对象MethodMetadata,这里面包含了动态代理接口定义的所有特征。接下来,根据这些元数据生成一系列MethodH

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值