(三)OpenFeign

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(三)OpenFeign相关的知识,希望对你有一定的参考价值。

参考技术A 这里可以在客户端单独提供一个API进行描述,客户端可以直接引入,无需再定义。服务端也同样引入,直接实现即可。

OpenFeign底层也是通过http请求实现。

该接口其实就是为了描述http请求所需要的全部条件。如:服务名称(地址)、请求方式、请求方法、请求参数、返回类型...等

在远程调用请求、响应数据较大的情况下可以配置使用GZIP压缩。(默认2048字符以上)

可以针对某些Feign接口指定日志跟踪。

修改配置关闭httpclient,开启okhttp

引入okhttp jar

OpenFeign可以看做是一个模板。比如下方示例。定义了请求方式,包括。服务名称(host)、请求路径、GET/POST、参数、结果,这些已经可以满足我们进行http请求调用。OpenFeign客户端便是通过这些,生成代理对象,从而在调用时向服务端发起请求。

代理对象中主要通过对注解进行解析,从Eureka中获取服务列表,再利用LoadBlance进行负载均衡,最后向服务端请求数据结果。

OpenFeign方便了跨服务之间的调用。如果没有OpenFeign我们要知道具体的地址才可以发起http请求获得返回结果。

底层使用Http通讯方式。RestTemplate是对Http协议的一种封装。

不引入服务端jar包自己写接口也完全可以。
只要定义好FeignClient模板,交给Feingn去扫描加载,都可以请求到服务端。服务端直接提供jar包的方式是一种接口的收敛,方便客户端调用,有变动仅需要修改服务端版本即可。比如,服务端A提供了接口IA,同时被服务B/C/D使用,如果不引入jar包由客户端B/C/D自行定义,容易出错,且服务A修改需要增加参数时,B/C/D必需要修改。

思考,如果服务A 1.0版本接口 IA 只有一个参数 id,B服务引入了该版本服务接口。 然后服务A 升级版本,1.1 ,接口IA 增加参数 name,此时,服务 B 继续使用1.0版本接口IA,请求时是否会出现问题?取决于什么?为什么?

以上是关于(三)OpenFeign的主要内容,如果未能解决你的问题,请参考以下文章

SpringCouldRibbon和OpenFeign

day07-OpenFeign-服务调用

微服务架构整理-(十一SpringCloud实战之OpenFeign)

微服务架构整理-(十一SpringCloud实战之OpenFeign)

最适合新手入门的SpringCloud教程 7—OpenFeign「F版本」

三指针(三指针排序只有三种元素的数组)--12--三指针--颜色分类