Spring Cloud是當前煊赫一時的微服務開發框架。它的功能強大,組件豐富,設計優雅。目前Spring Cloud還在不斷髮展之中。java
Spring Cloud即將發佈Spring Cloud Edgware
版本。該版本解決了很多Bug,新增了很多新特性,本系列博客將爲你們詳細闡述在Spring Cloud Edgware中新增的特性。git
爲了讓描述更加的貼合實際,本文將結合筆者所在團隊遇到的實際狀況進行講解。github
Eureka服務器與客戶端之間默認使用Jersey 1.x
進行基於HTTP協議的交互。然而咱們團隊,需使用docker-client
(https://github.com/docker-java/docker-java) 。這貨只支持Jersey 2.x
,而Jersey 1.x與2.x並不兼容。spring
因而,咱們團隊面臨以下幾種選擇:docker
eureka-client-jersey2
模塊,即便用Jersey 2.x
來代替Jersey 1.x
https://github.com/Netflix/eureka/tree/master/eureka-client-jersey2 。然而,這種方式不夠穩妥,緣由是eureka-client-jersey2
是由社區提供,並不是由Eureka官方團隊維護,而且已經好久不更新了。docker-client
,使用其餘的Docker客戶端,例如https://github.com/spotify/docker-client (該項目支持Jersey 1.x以及Jersey 2.x)。Spring Cloud Netflix
到1.4.x,即:Spring Cloud Edgware
【筆者認爲的最佳方案】。本文探討的就是在Spring Cloud Edgware
中Eureka的點點滴滴。apache
Spring Cloud Edgware
中,Jersey並不是必選。可爲Eureka Client禁用掉Jersey,轉而使用咱們想要的HTTP客戶端,例如RestTemplate。只需將Jersey的包從依賴中刪除,Spring Cloud就會自動配置一個基於Spring RestTemplate
的傳輸客戶端。操做以下:服務器
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> <exclusions> <exclusion> <groupId>com.sun.jersey</groupId> <artifactId>jersey-client</artifactId> </exclusion> <exclusion> <groupId>com.sun.jersey</groupId> <artifactId>jersey-core</artifactId> </exclusion> <exclusion> <groupId>com.sun.jersey.contribs</groupId> <artifactId>jersey-apache-client4</artifactId> </exclusion> </exclusions> </dependency>
簡單的操做後,有兩個好處:框架
詳見:https://github.com/spring-cloud/spring-cloud-netflix/issues/1849 。簡單來講,就是Eureka提供了一個抽象,容許用戶爲Eureka Client定製本身的HTTP客戶端,而不像老版本,強制使用Jersery。微服務