SpringCloud-Alibaba-03调用组件Feign;Dubbo实战
2022-12-17 19:32:48 11 举报
AI智能生成
登录查看完整内容
组件Feign
作者其他创作
大纲/内容
是 Remote Procedure Call ,即远程过程调用,其对应的是我们的本地调用。RPC 的目的是:让我们调用远程方法像调用本地方法一样
设计架构
RPC概述
Netflix开发的声明式、模板化的HTTP客户端,Feign可帮助我们更加便捷、优雅地调用HTTP API
Ribbon+RestTemplate进行微服务调用
String url = \"http://mall-order/order/findOrderByUserId/\
调用方式
Ribbon
@FeignClient(value = \"mall-order\
@AutowiredOrderFeignService orderFeignService;//feign调用R result = orderFeignService.findOrderByUserId(id);
Feign
Ribbon&Feign对比
1.基于面向接口的动态代理方式生成实现类
2.根据接口类的注解生命规则,解析出顶层的MethodHander
4.Encoder将bean包装成请求
5.拦截器负责对请求和返回进行装饰处理
6.日志记录
7.基于重试器发送http请求,可基于不同的http框架处理
引入依赖
编写调用接口+@FeignClient注解
调用端在启动类上添加@EnableFeignClients注解
配置 Feign 的日志,以让 Feign 把请求信息输出来
NONE【性能最佳,适用于生产】:不记录任何日志(默认值)
BASIC【适用于生产环境追踪问题】:仅记录请求方法、URL、响应状态代码以及执行时间。
HEADERS:记录BASIC级别的基础上,记录请求和响应的header。
FULL【比较适用于开发及测试环境定位问题】:记录请求和响应的header、body和元数据
日志级别
日志配置
Spring Cloud的Feign 支持 Spring MVC 的注解来调用。原生的 Feign 是不支持 Spring MVC 注解的
通过契约配置来使用Spring Cloud 中使用原生的注解方式来定义客户端
修改契约配置后,OrderFeignService 不再支持springmvc的注解,需要使用Feign原生的注解
代码修改
yml修改
修改方式
契约配置
通过拦截器实现参数传递
通过 Options 可以配置连接超时时间和读取超时时间,Options 的第一个参数是连接的超时时间(ms),默认值是 2s;第二个是请求处理的超时时间(ms),默认值是 5s
全局配置
Feign的底层用的是Ribbon,但超时时间以Feign配置为准
超时时间配置
Feign 中默认使用 JDK 原生的 URLConnection 发送 HTTP 请求
可以集成别的组件来替换掉 URLConnection,比如 Apache HttpClient,OkHttp
客户端组件配置
开启压缩可以有效节约网络资源,提升接口性能,我们可以配置 GZIP 来压缩数据
当 Feign 的 Http Client 不是 okhttp3 的时候,压缩才会生效
配置方式
GZIP 压缩配置
Feign 中提供了自定义的编码解码器设置,同时也提供了多种编码器的实现,比如 Gson、Jaxb、Jackson
可以用不同的编码解码器来处理数据的传输
Java配置方式
yml配置方式
编码器解码器配置
Spring Cloud Feign扩展
Spring Cloud Alibaba快速整合Feign
修改application.yml
服务实现类上配置@DubboService暴露服务
provider端配置
服务消费方通过@DubboReference引入服务
consumer端配置
Spring Cloud整合Dubbo
调用组件Feign&Dubbo实战
0 条评论
回复 删除
下一页