我的微服务Spring Cloud Spring Cloud Alibaba

Spring Cloud Alibaba 实战(六) - 声明式

2019-10-27  本文已影响0人  JavaEdge

本章学习Feign,包括Feign的自定义配置,实现文件上传,进一步实现代码的重用,Feign性能优化,Feign与RestTemplate的对比与选择.

1 使用Feign实现远程HTTP调用

2 Feign的组成

  1. 默认的Feign : 使用的URLConnection性能差


  2. 和ribbon配合的 : 使用了代理模式,其实也就是feign-default的代理


  3. contract
    由于feign默认的注解是非Spring MVC型的


细粒度配置自定义

默认的Feign是不打印日志的

下面将设置为FULL级别

Java代码方式 - 指定日志级别

配置属性方式 - 指定日志级别

将之前的Java配置类的注解注释掉

全局配置

Java代码方式 - 指定日志级别

方式一:让父子上下文ComponentScan重叠(强烈不建议使用)
◆ 方式二[唯一正确的途径] :
@EnableFeignClients(defaultConfiguration=xxx.class)

配置属性方式 - 指定日志级别

支持的配置项

配置最佳实践总结

最佳实践

Feign的继承

关于继承特性的争议

◆ 官方观点:不建议使用



这里继承会产生紧耦合

◆ 业界观点:很多公司使用
比如User服务修改了字段,而Content服务却不知道,没有修改,那么调用时就会报错
◆ 个人观点:权衡利弊

此处有争议,不赘述

多参数请求构造

比如在User服务中有这样一个请求




那么如何使用Feign去请求这样的API呢?

回到Content服务,写代码

因为现在有两个client都叫user-client(测试类也叫user-client), 重名了,所以Spring创建代理时会有问题,加上上述配置即可解决

Feign脱离Ribbon使用

在Content服务写代码


RestTemplate VS Feign

如何选择?

◆ 原则:尽量用Feign ,杜绝使用RestTemplate
◆ 事无绝对,合理选择

Feign性能优化

连接池 [提升15%左右]

使用okhttp同理配置如上两步骤

日志级别

因为默认不打印日志哦!建议设置为basic,不要为full哦

常见问题总结 - 推荐阅读

Feign常见问题总结

现有架构总结

参考

上一篇下一篇

猜你喜欢

热点阅读