feign不過注冊中心子系統聯調的方法


前言


對於使用spring cloud進行實現微服務的時候時候,通常使用feign作為api接口調用的相關組件。對於常規的使用這里不進行具體說明,主要是對聯調時不通過注冊中心直接對接的方法進行說明。主要有以下兩種方法

  • 通過feign注解@FeignClient的url屬性
  • 通過ribbon的相關配置

為了便於說明,進行如下的假設,有兩個子系統

子系統a服務名為micro-server-a,服務地址為10.206.19.100,端口為8080

子系統b服務名為micro-server-b,服務地址為10.206.19.110,端口為8080

子系統a需要通過調用子系統b的接口/inner/api提供的服務

通過@FeignClient的url屬性


@FeignClient注解的url屬性,最主要的作用是與其他系統對接時,可以通過配置該屬性,封裝對其他系統的訪問接口。我們可以借助該屬性進行子系統間的聯調,@FeignClient的配置如下

@FeignClient(name = "micro-server-b", url = "http://10.206.19.110:8080", fallback = FeignApiFallbackComponent.class) 

這種方式將兩個子系統作為無關系統直接調用,只適合與開發環境上面做聯調,聯調結束之后需要刪除url屬性。

  • 主要的缺點是如果沒有刪除直接上傳,會導致代碼結果被破壞,而且不利於調試定位。需要通過修改代碼來實現
  • 主要的優點是聯調比較簡單

通過ribbon相關配置


feign在子系統間調用時,主要是借助於ribbon進行負載均衡的,因此,我們可以通過配置ribbon屬性,方便的進行聯調。

feign的配置如下:

@FeignClient(name = "micro-server-b", fallback = FeignApiFallbackComponent.class) 

在spring boot開發時,我們通常會針對開發環境配置application-dev.properties文件作為開發環境的配置。因此,我們可以在該文件中增加如下的配置,直接進行聯調

ribbon.eureka.enabled=false
micro-server-b.ribbon.listOfServers=10.206.19.110:8080

其中,micro-server-b為我們在@FeignClient中配置的name。

程序啟動的時候,需要加上如下的程序參數

--spring.profiles.active=dev

通過這種方式,就可以直接在開發環境中進行聯調,主要是通過spring boot的配置文件進行的。這種方式的主要優缺點如下

  • 主要的優點是,打包之后環境不同,不會相互影響,確保生產環境的正確性。在部署到生產環境之后,也可以通過該方式,測試子系統間的可用性
  • 主要的缺點是,需要增加一個配置文件

結論


為了確保代碼和包的健壯性,建議通過ribbon相關配置進行子系統聯調



轉載鏈接:https://www.jianshu.com/p/996347925e48


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM