(三)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的主要内容,如果未能解决你的问题,请参考以下文章
微服务架构整理-(十一SpringCloud实战之OpenFeign)
微服务架构整理-(十一SpringCloud实战之OpenFeign)