使用连接池对于feign的远程调用的优化

  1. Feign底层发起http请求时,默认使用URLConnection发起http请求,不支持连接池操作,那么为了提高Feign的性能,可以采用的手段是使用连接池代替默认的URLConnection
    1. 支持连接池的http客户端
      1. Apache HttpClient
      2. OKHttp
  2. 本示例采用的是Apache HttpClient进行连接池集成
    1. 首先在maven的pom文件中添加feign-httpclient依赖
      1.         
                
                    io.github.openfeign
                    feign-httpclient
                
    2. 在application.yml文件中添加连接池配置信息
      1. feign:
          client:
            config:
              # 指的是@FeignClient中的value设定的值,也就是对应的微服务名称
              nacos-feign-user-service:
                # 日志级别
                loggerLevel: NONE
          httpclient:
            # 开启feign对HttpClient的支持
            enabled: true
            # 最大的连接数,根据实际压测数据调整
            max-connections: 256
            # 每个路径的最大连接数,根据实际压测数据调整
            max-connections-per-route: 64
        
      2. 相关完整配置官网详细信息
        1. Common application properties (spring.io)
  3. 如何验证连接池已经生效
    1. 找到源码类FeignClientFactoryBean,在loadBalance的方法内打断点调试
      1. 使用连接池对于feign的远程调用的优化_第1张图片
      2. 使用连接池对于feign的远程调用的优化_第2张图片
    2. 然后通过debug模式启动微服务,断点出现之后向下执行可以看出client为ApacheHttpClient即可说明已经生效
      1. 使用连接池对于feign的远程调用的优化_第3张图片

你可能感兴趣的:(spring,cloud,java,spring,cloud)