SpringCloud Feign 源码底层如何调用Ribbon实现服务调用的负载均衡

本文探讨了SpringCloud Feign如何在微服务架构中通过动态代理实现服务调用,并深入源码分析了Feign如何利用Ribbon进行负载均衡。在调用过程中,FeignInvocationHandler作为入口,通过SynchronousMethodHandler的invoke方法,最终在LoadBalancerFeignClient中调用Ribbon的executeWithLoadBalancer方法,结合ILoadBalancer和负载均衡算法选择服务提供者,完成负载均衡的调用。
摘要由CSDN通过智能技术生成

在SpringCloud微服务中调用都不是直接用Ribbon进行服务调用,因为那样的化项目中的代码量会增加很多,微服务之间的调用是用Feign来进行调用,下面就是普通的一个接口调用例子

这样就可以进行服务间的调用了,那么Feign底层源码是如何调用Ribbon对服务提供者进行负载均衡的调用呢,这里调用的源码入口是FeignInvocationHandler这个类,调用上图的orderFeignService.findOrderByUserId(id)其实就是在调用这个FeignInvocationHandler的invoke方法

其实Feign底层是基于动态代理实现的,这里面的细节我们放到后面再讲

因为方法的名字是findOrderByUserId,这里会进到this.dispatch.get(method)).invoke()方法,这里会进到SynchronousMethodHandler类的invoke方法里面

 

这里首先构造了一个RequestTemplate请求工具类,然后在一个while死循环里面进行服务调用的逻辑,在catch块里面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值