2022-01-18 作者 :旋风数控网 围观 : 0次
大家好,今天小编关注到一个比较有意思的话题,就是关于数控机床无负荷运行原理的问题,于是小编就整理了1个相关介绍数控机床无负荷运行原理的解答,让我们一起看看吧。
首先说明一下,feign只是一个声明式的Http客户端,提供以声明式的方式定义Http调用。本身并没有实现负载均衡,负载均衡是ribbon实现的,feign只是使用而已。
我从不使用feign进行接口调用开始,到使用feign进行接口调用,来说明使用和不使用feign的区别以及如何实现负载均衡的。
不使用Feign的调用
不使用Feign的情况下,进行接口调用,一般都是使用Spring提供的RestTemplate。RestTempate提供了很多调用接口的方法,你可以简单的把RestTemplate理解为是Spring提供的HttpClient。
如果要实现负载均衡,那么只需要加一个LoadBalanced注解,就像下面这样:
那它是怎么实现负载均衡的呢?简单梳理一下源码:
LoadBalancerAutoConfiguration中有下面这段代码,它会将所有有LoadBalanced注解的RestTemplate注入进来
然后通过下面的逻辑,将负载均衡逻辑给添加进去
RestTemplate会在执行之前,先执行拦截器,然后去执行最终的请求
而拦截器中有负载均衡逻辑
首先客户端从服务列表中获取到所有的服务列表信息
具体代码流程比较复杂,这里不具体说明,后续可能会专门写几篇关于SpringCloud源码分析的文章
问题
使用RestTemplate有什么问题呢?
和RestTemplate强依赖,不利于扩展或重构
和本地接口调用方式不统一
使用Feign
假设我要调用一个远程接口,获取用户的信息。那么我们可以这么写:
1处,注解UserApiService为FeignClient,其中的name是需要调用的应用的AppName,即注册到注册中心上的名字
怎么调用呢?
调用方式是不是和普通的接口一样?调用端根本就不必关系UserApiService是一个本地实现,还是一个远程调用。这就解决了上面提到的两个问题。
Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。
负载均衡的实现原理:
1. Feign默认集成了Ribbon,Ribbon是一个负载均衡客户端,可以很好的控制htt和tcp的一些行为。Feign利用Ribbon实现了客户端的负载均衡。
2. 当我们通过Feign调用服务时,Feign会通过Ribbon实现负载均衡,Ribbon会从Eureka注册中心中获取服务列表,然后使用轮询算法,从服务列表中选择一个服务实例,进行调用。
到此,以上就是小编对于数控机床无负荷运行原理的问题就介绍到这了,希望介绍关于数控机床无负荷运行原理的1点解答对大家有用。