在上一篇文章中,我們使用了ribbon進行負載均衡,但是仔細思考一下,我們的請求封裝和調用以及結果的返回都是我們自己編碼完成的,如果需要調用的接口很多,那么無疑開發量是比較大的,那有沒有比較好的方式呢?答案就是feign.讓我們先通過代碼來看一下feign的使用:
首先,我們需要復制一份consumer的代碼,並且重命名為dhp-micro-service-consumer-feign:
然后修改代碼如下:
1.新增maven依賴:
2.修改代碼:
首先新增一個feign的接口:
另外,如果要通過Feign進行遠程調用,依然需要安全服務提供方的認證問題,所幸feign里面已經集成了這塊功能:
此時,准備工作已經做好了,修改controller的代碼:
然后啟動起來試一試:
說明feign已經繼承成功,可以看到,和之前的代碼量相比,使用feign之后代碼已經簡潔許多了,並且如果producer啟動了集群,可以發現feign自帶負載均衡功能,因為feign也集成了ribbon,我們用兩張圖來對比一下:
在沒有集成feign之前,我們是直接走ribbon:
集成feign之后,我們是走feign:
我們可以新增ribbon策略試一試:
再次啟動,會發現負載均衡規則是隨機訪問了.
數據壓縮
我們已經知道,feign最主要的作用就是將Rest服務的信息轉化為接口,這其中還有其他的一些地方應該要考慮,比如:數據的壓縮.Rest協議更多的傳輸的是文本,JSON或者XML,如果用戶發送的請求很大,這個時候有必要對數據進行壓縮處理,feign本身提供了對壓縮的支持:
介紹完了feign,下一篇文章,我們會介紹服務熔斷與降級hystrix,敬請期待.
本文的GitHub地址
本文由博客一文多發平台 OpenWrite 發布!