Spring Cloud Alibaba 实战(六) - 声明式HTTP客户端-Feign

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

1 使用Feign实现远程HTTP调用

  • Feign是Netflix开源的声明式HTTP客户端

  • 添加依赖

在这里插入图片描述

  • 新建包及接口

  • 服务实现类

2 Feign的组成

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

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

    1. contract

    因为feign默认的注解是非Spring MVC型的
    segmentfault

    • 经过该默认类实现了MVC注解

    细粒度配置自定义

    默认的Feign是不打印日志的性能优化

    • 自定义Feign日志级别

    下面将设置为FULL级别架构

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

    • 接口类

    • 日志配置类
    • 配置文件

    • 注意坑,若是在feign配置类加了该注解,就必须放在compscan包之外,以避免复制上下文重复扫描问题

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

    将以前的Java配置类的注解注释掉微服务

    • 配置文件

    全局配置

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

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

    • 先将以前的细粒度配置注释掉!

    • 找到启动类的EFC注解并指定为配置类

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

    • 恢复以前的配置文件信息并修改以下

    支持的配置项

    • 代码方式

    • 属性方式

    配置最佳实践总结

    • Ribbon配置 VS Feigne配置

    • Feign代码方式 VS 属性方式

    最佳实践

    • 尽可能使用属性配置,属性方式实现不了的状况下再考虑用代码配置
    • 在同一个微服务内尽可能保持单一性,好比统一使用属性配置,不要两种方式混用,增长定位代码的复杂性

    Feign的继承

    • UserCenter中的

    • ContentCenter中的,使其继承上面的代码

    关于继承特性的争议

    ◆ 官方观点:不建议使用

    这里继承会产生紧耦合学习

    ◆ 业界观点:不少公司使用
    好比User服务修改了字段,而Content服务殊不知道,没有修改,那么调用时就会报错
    ◆ 我的观点:权衡利弊测试

    此处有争议,不赘述优化

    多参数请求构造

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


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

    回到Content服务,写代码

    • 写一测试类

    • 在测试启动类添加该测试项目

    • 启动报错,根据error提示,添加配置,以后正常启动!

    由于如今有两个client都叫user-client(测试类也叫user-client), 重名了,因此Spring建立代理时会有问题,加上上述配置便可解决

    • 可是此刻这样访问依旧报错405
    • Feign端服务代码, 还须要添加注解

    • 推荐阅读

    如何使用Feign构造多参数的请求

    Feign脱离Ribbon使用

    在Content服务写代码

    • 测试类添加测试项目

    • 直接访问便可!

    RestTemplate VS Feign

    如何选择?

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

    Feign性能优化

    链接池 [提高15%左右]

    • 添加依赖

    • 配置文件

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

    日志级别

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

    常见问题总结 - 推荐阅读

    Feign常见问题总结

    现有架构总结

    参考

    本文由博客一文多发平台 OpenWrite 发布!
    相关文章
    相关标签/搜索