Http請求優化

Http請求優化

咱們在作項目開發或多或少的都會使用SpringCloud,其中作遠程調度的時候會將HTTP請求Http請求優化。git

HTTP請求Client存在不少種。github

  • JDK原生的URLConnection 發送HTTP請求,沒有鏈接池,是對每個地址保持一個長鏈接,利用HTTP的persistence connection。這樣極大的影響系統的併發性能。咱們能夠採用替換方案。

實例:緩存

  • 咱們使用Feign是 默認就是使用JDK的HTTP Client;

這時咱們就能夠使用別的Client進行替換:網絡

  • 好比Apache的HttpClient 來替換原始的HttpClient。能夠經過設置鏈接池,以及訪問超時時間等服務之間的調用進行優化。
  • OKHTTP: okHttp也是一個很不錯的HttpClient,具備不少優秀的特性:
    • 支持SPDY,能夠合併多個到同一主機的請求;
    • 使用鏈接池技術減小請求的延遲;
    • 使用GZIP壓縮減小傳輸的數據量;
    • 緩存響應避免重複的網絡請求。 
    •  1 <dependency>
       2             <groupId>com.netflix.feign</groupId>
       3             <artifactId>feign-httpclient</artifactId>
       4             <version>8.17.0</version>
       5         </dependency>
       6 
       7         <dependency>
       8             <groupId>io.github.openfeign</groupId>
       9             <artifactId>feign-okhttp</artifactId>
      10         </dependency>
      11     </dependencies>
      1 feign:
      2   httpclient:
      3     enabled: false
      4   okhttp:
      5     enabled: true
    •  1 @Configuration
       2 @ConditionalOnClass(Feign.class)
       3 @AutoConfigureBefore(FeignAutoConfiguration.class)
       4 public class FeignOkHttpConfig {
       5     @Bean
       6     public okhttp3.OkHttpClient okHttpClient(){
       7         return new okhttp3.OkHttpClient.Builder()
       8                  //設置鏈接超時
       9                 .connectTimeout(60, TimeUnit.SECONDS)
      10                 //設置讀超時
      11                 .readTimeout(60, TimeUnit.SECONDS)
      12                 //設置寫超時
      13                 .writeTimeout(60,TimeUnit.SECONDS)
      14                 //是否自動重連
      15                 .retryOnConnectionFailure(true)
      16                 .connectionPool(new ConnectionPool())
      17                 //構建OkHttpClient對象
      18                 .build();
      19     }
      20 
      21 }
相關文章
相關標籤/搜索