SpringCloud-Alibaba-03调用组件Feign;Dubbo实战
2022-12-17 19:32:48 12 举报
AI智能生成
组件Feign
作者其他创作
大纲/内容
RPC概述
是 Remote Procedure Call ,即远程过程调用,其对应的是我们的本地调用。RPC 的目的是:让我们调用远程方法像调用本地方法一样
设计架构
Feign
Netflix开发的声明式、模板化的HTTP客户端,Feign可帮助我们更加便捷、优雅地调用HTTP API
Ribbon&Feign对比
Ribbon
Ribbon+RestTemplate进行微服务调用
调用方式
String url = "http://mall-order/order/findOrderByUserId/"+id;
R result = restTemplate.getForObject(url,R.class);
Feign
调用方式
@FeignClient(value = "mall-order",path = "/order")
public interface OrderFeignService {
@RequestMapping("/findOrderByUserId/{userId}")
public R findOrderByUserId(@PathVariable("userId") Integer userId);
}
public interface OrderFeignService {
@RequestMapping("/findOrderByUserId/{userId}")
public R findOrderByUserId(@PathVariable("userId") Integer userId);
}
@Autowired
OrderFeignService orderFeignService;
//feign调用
R result = orderFeignService.findOrderByUserId(id);
OrderFeignService orderFeignService;
//feign调用
R result = orderFeignService.findOrderByUserId(id);
设计架构
1.基于面向接口的动态代理方式生成实现类
2.根据接口类的注解生命规则,解析出顶层的MethodHander
3.基于RequestBean,动态生成bean
4.Encoder将bean包装成请求
5.拦截器负责对请求和返回进行装饰处理
6.日志记录
7.基于重试器发送http请求,可基于不同的http框架处理
Spring Cloud Alibaba快速整合Feign
引入依赖
编写调用接口+@FeignClient注解
调用端在启动类上添加@EnableFeignClients注解
Spring Cloud Feign扩展
日志配置
配置 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
Options 的第一个参数是连接的超时时间(ms),默认值是 2s;第二个是请求处理的超时时间(ms),默认值是 5s
修改方式
全局配置
yml修改
Feign的底层用的是Ribbon,但超时时间以Feign配置为准
客户端组件配置
Feign 中默认使用 JDK 原生的 URLConnection 发送 HTTP 请求
可以集成别的组件来替换掉 URLConnection,比如 Apache HttpClient,OkHttp
GZIP 压缩配置
开启压缩可以有效节约网络资源,提升接口性能,我们可以配置 GZIP 来压缩数据
当 Feign 的 Http Client 不是 okhttp3 的时候,压缩才会生效
配置方式
编码器解码器配置
Feign 中提供了自定义的编码解码器设置,同时也提供了多种编码器的实现,比如 Gson、Jaxb、Jackson
可以用不同的编码解码器来处理数据的传输
配置方式
Java配置方式
yml配置方式
Spring Cloud整合Dubbo
provider端配置
引入依赖
修改application.yml
服务实现类上配置@DubboService暴露服务
consumer端配置
引入依赖
修改application.yml
服务消费方通过@DubboReference引入服务
0 条评论
下一页