feign动态服务名调用(feign调用外部动态配置url)

网友投稿 657 2024-01-06


Feign远程调用原理

“Feign的实现原理主要分为两个部分:文件解析和HTTP协议调用。

程序会进入ReflectiveFeign中的invoke方法,并执行invoke函数中的先决条件验证,如果说toString方法或者hashCode方法一样或者说是同一个FeignClient,就不继续往下执行。构建模板并开始调用远程方法并对放回结果进行解码。

OpenFeign底层也是通过http请求实现。该接口其实就是为了描述http请求所需要的全部条件。如:服务名称(地址)、请求方式、请求方法、请求参数、返回类型...等 在远程调用请求、响应数据较大的情况下可以配置使用GZIP压缩。

feign接口调用时问题整理

1、解决方案:(1)增加maven依赖 (2)增加配置文件 我们项目在调用接口时,往往都会有带请求头的需求,但是通过feign接口后,请求头会消失,因为feign原本是不支持请求头的。

2、spring cloud openFeign 的客户端 ,即调用方,在启动类中一定要加上 @EnableFeignClients 这个注解,service接口上的@service注解和@FeignClient(微服务名) 都写在一起,如果不加,会报@service 没初始化这个service接口。

3、在一次调用FeignClient时,开启了40多个线程调用,然而每次只能调通10个。

4、一般在一个系统调用另一个系统的接口时使用,如下:注解 FeignClient(XXX)public interface XX{ ...} 该注解一般创建在 interface 接口中,然后在业务类@Autowired进去使用非常简单方便。

(三)OpenFeign

1、OpenFeign可以看做是一个模板。比如下方示例。定义了请求方式,包括。服务名称(host)、请求路径、GET/POST、参数、结果,这些已经可以满足我们进行http请求调用。

2、Feign与OpenFeign的区别 1)Feign是Spring Cloud组件中一个轻量级RESTful的HTTP服务客户端,Feign内置了Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务。

3、提供一个普通的controller接口即可,不需要加openfeign依赖、不需要在启动类加feign相关注解。贴一下yml配置:关注server.port和spring.application.name。

第4篇:微服务之间的调用-feign

父项目下新建两个子模块,一个provider,一个consumer。先贴上父pom的配置: provider服务提供方的配置:提供一个普通的controller接口即可,不需要加openfeign依赖、不需要在启动类加feign相关注解。

feign没有实现分布式事务,feign实现了负载均衡。

解决方案:建议将事件类型的入参改为String,到具体微服务层面时再转为Date类型即可。接口的方法入参中,存在多个参数时,需要加上注解 解决方案:在feign接口中必须拆开。

新建一个interface使用注解 @FeignClient 示例中是直接通过接口地址调用,要指定 name 。

需要在diagnose服务的入口,声明@enableEurekaClient 和 @enableFeignClients 建立feign的接口文件 Name 是我们需要需要调用的微服务名,这个名字一定要注意: 都使用小写, 因为k8s对服务名有要求。

使用【Feign】调用接口

解决方案:建议将事件类型的入参改为String,到具体微服务层面时再转为Date类型即可。接口的方法入参中,存在多个参数时,需要加上注解 解决方案:在feign接口中必须拆开。

Feign是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求。Spring Cloud引入 Feign并且集成了Ribbon实现客户端负载均衡调用。

如果想让服务消费者采用GET方式调用服务提供者,那么需要:服务消费者这边feign调用时,在所有参数前加上@RequestParam注解。

记:k8s内部服务调用连接超时

另外一个情况也引起了我的注意,就是当出现服务间连接超时的时候,k8s的 coreDNS 恰好会有一个被调度在服务器A上。所以有时候我也会直接删除服务器A上的 coreDNS 以便k8s调度到其他节点上,来解决连接超时的问题。

从最后一行可以看到,是 APIServer 在尝试创建存储时出现了问题,导致无法正确启动服务,由于 k8s 是使用 etcd 作为存储的,所以我们再来查看 etcd 的日志。

我们的告警逻辑是通过告警程序调用部署在k8s服务接口,如果接口超时超过一定的次数就告警。因为告警程序和服务部署在不同的机房,于是认为是网络抖动引起的,因为前几天就发送过k8s网络组建出现问题导致服务调用耗时突然变高。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java权限管理框架(java用户权限框架)
下一篇:chromeapkdownloadapkpure
相关文章

 发表评论

暂时没有评论,来抢沙发吧~