# 7-10 Feign的性能优化

# 导航

回到spring cloud alibaba导航页

# RestTemplate VS Feign

角度 RestTemplate Feign
可读性、可维护性 一般 级佳
开发体验 欠佳 级佳
性能 很好 中等(RestTemplate50%左右)
灵活性 级佳 中等(内置功能可满足绝大数需求)

# Feign的性能优化方案

  • 连接池【提升15%左右】 feign默认是使用URLConnection发送请求的,URLConnection是没有连接池的,但是feign的底层除了支持URLConnection发送请求以外,还可以支持Apache HttpClient以及 OKHttp去发送请求,而Apache 的HttpClient以及OKHttp都是支持连接池的

  • 为feign设置合适的日志级别 feign默认是不打印任何日志的,这个性能是最好的,但是在生产环境如想要了解请求的细节,建议将日志级别设置成 BASIC

# 实例1:Feign使用Apache HttpClient的连接池

# 步骤1 加依赖

            <dependency>
                <groupId>io.github.openfeign</groupId>
                <artifactId>feign-httpclient</artifactId>
            </dependency>
1
2
3
4

# 步骤2:yml写配置

feign.httpclient.enabled=true

feign:
  client:
    config:
    # 想要调用的微服务的名称
      default:
        loggerLevel: full
  httpclient:
  # 让feign使用apache httpclien做请求,而不是默认的urlconnection
    enabled: true
    # feign最大连接数
    max-connections: 200
    # feign的单个路径的最大连接数
    max-connections-per-route: 50
    # 这两个值如何做到最优:可以设置大一点的值,然后做压测
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 实例2:Feign使用OKHttp HttpClient的连接池

# 步骤1:加依赖

<!--feign-okhttp这里需要自己指定版本 -->
            <dependency>
                <groupId>io.github.openfeign</groupId>
                <artifactId>feign-okhttp</artifactId>
                <version>11.0</version>
            </dependency>
1
2
3
4
5
6

# 步骤2:写配置

feign:
  okhttp:
    enabled: true
    # feign最大连接数
    max-connections: 200
    # feign的单个路径的最大连接数
    max-connections-per-route: 50
    # 这两个值如何做到最优:可以设置大一点的值,然后做压测
1
2
3
4
5
6
7
8

# Feign的常见问题

Feign的常见问题 (opens new window)

# 7-15现有架构总结

使用Nacos 实现了 服务注册与发现,使用Ribbon实现了负载均衡,使用Feign调用提示了幸福感,但是现在的架构还是有很多问题,例如:雪崩效应、断路器等等 现有架构

# 导航,上一页,下一页

上一页
下一页

# 支持我-微信扫一扫-加入微信公众号

Aseven公众号

# 赞赏作者

赞赏作者