Feign源碼解析系列-最佳實踐

前幾篇準備寫完feign的源碼,這篇直接給出Feign的最佳實踐,考慮到目前網上還沒有一個比較好的實踐解釋,對於新使用spring cloud的同學會對微服務之間的依賴產生一些迷惑,也會走一些彎路。這裏給出目前本人在公司推薦的最佳實踐,供各位參考。

1,服務提供方在Facade層定義好接口信息,包括接口路徑,請求方式,入參,出參,返回錯誤等,並提供jar。

2,服務調用方項目引入提供方Facade層的jar,在自己項目中抄一份接口的定義,再包一層代理提供給自己業務層調用。 抄一份雖然說看起來不是很優雅,但是也有個好處對外部依賴是可以控制的,代碼也會清晰。一方面原因,如果你嘗試想直接依賴jar來引入Feign client 那麼在EnableFeignClients註解的basePackages需要更改,如果依賴不斷增多這個值也會不斷變動。還有更重要的原因是,我們知道fallback的定義在Feign client接口上定義的,在調用方配置fallback纔是更加合理,如果打入jar,那就無法實現fallback的配置了。

3,服務提供方打的facade jar包中不需要提供Fallback能力,由調用方配置實現Fallback,推薦使用FallbackFactory,原因是create方法可以細化異常的判斷。

4,在調用方上寫的Feign proxy 需要對響應的返回值或異常進行處理後再提供給自己上層業務代碼調用。接口的異常返回內容推薦在方法上進行詳細的註釋,我們約定接口返回的標準參數,比如code可以判定接口返回的實際情況,由上層調用方進行判斷轉換成自己的業務。

5,最後關於feign的默認配置比如請求超時時間等,最好是在配置中心進行全局配置一份,各個應用自己可以覆蓋配置。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章