springcloud: feign原理

首先,通过@EnableFeignClients注解并开启扫描,将注解了@FeignClient的接口信息通过BeanUtils生成bean注入到IOC容器;

当接口被调用时候,通过jdk动态代理,生成具体的requestTemplate,requestTemplate生成request,request交给Client处理,可以是httpUrlConnection或者是okhttp,最后client被封装到LoadBalanceClient类,这个类结合了ribbon做到了负载均衡;

RestFul风格,简洁

dubbo的RPC调用性能更快,但是代码强依赖性,迭代不是很方便

Feign有其他的一些功能实现,比如错误处理,重试机制,hystrix扩展,ribon扩展等等

Feign实际上是整合了ribbon客户端负载均衡+hysterix断路器