真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SpringCloud中如何使用Feign實現(xiàn)負載均衡

Spring Cloud中如何使用Feign 實現(xiàn)負載均衡,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

創(chuàng)新互聯(lián)企業(yè)建站,10多年網(wǎng)站建設經(jīng)驗,專注于網(wǎng)站建設技術,精于網(wǎng)頁設計,有多年建站和網(wǎng)站代運營經(jīng)驗,設計師為客戶打造網(wǎng)絡企業(yè)風格,提供周到的建站售前咨詢和貼心的售后服務。對于成都網(wǎng)站設計、網(wǎng)站制作中不同領域進行深入了解和探索,創(chuàng)新互聯(lián)在網(wǎng)站建設中充分了解客戶行業(yè)的需求,以靈動的思維在網(wǎng)頁中充分展現(xiàn),通過對客戶行業(yè)精準市場調(diào)研,為客戶提供的解決方案。

下面來介紹一下使用 Feign 負載均衡。在介紹之前,我們先來對 Feign 做一下簡單的介紹,先來理解一下什么是 Feign。

1. Feign 是什么?

我們看一下官方的解釋:Feign 是一個聲明式 WebService 客戶端。使用 Feign 能讓編寫的 WebService 客戶端更加簡潔,它的使用方法式定義一個接口,然后在上面添加注解。

Spring Cloud 對 Feign 進行了封裝,使其支持了 Spring MVC 標準注解和 HttpMessageConverters。Feign 可以與 Eureka 和 Ribbon 組合使用以支持負載均衡。

2. 為什么要使用 Feign?

Feign 旨在使編寫 Java Http 客戶端變得更容易。前面在使用 Ribbon + RestTemplate 時,利用 RestTemplate 對 http 請求的封裝處理,形成了一套模板化的調(diào)用方法。但是在實際開發(fā)中,由于對服務依賴的調(diào)用可能不止一處,往往一個接口會被多處調(diào)用,所以通常都會針對每個微服務自行封裝一些客戶端類來包裝這些依賴服務的調(diào)用

所以,F(xiàn)eign 在此基礎上做了進一步的封裝,由它來幫助我們定義和實現(xiàn)依賴服務接口的定義。使用 Feign 只需要創(chuàng)建一個接口并使用一個注解來配置它即可。

這就類似于我們在 dao 層的接口上標注 @Mapper 注解一樣。這樣的話,即完成了對服務提供方的接口綁定,簡化了使用 Spring Cloud Ribbon 時的開發(fā)量。我們用實例來說明。

3. Feign 的使用

3.1 依賴導入



    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-client



   org.springframework.cloud
   spring-cloud-starter-openfeign

3.2 啟動類注解配置

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class OrderConsumerFeign {

   public static void main(String[] args) {
       SpringApplication.run(OrderConsumerFeign.class, args);
   }
}

啟動類需要添加注解 @EnableFeignClients,表示啟用 Feign 客戶端。

3.3 Feign 客戶端

我們先來回憶一下,提供訂單的服務名稱為:MICROSERVICE-ORDER,然后訂單服務中提供的兩個獲取訂單信息的接口url如下:

/**
* feign客戶端
* @author shengwu ni
*/
@FeignClient(value = "MICROSERVICE-ORDER")
public interface OrderClientService {

   @GetMapping("/provider/order/get/{id}")
   TOrder getOrder(@PathVariable(value = "id") Long id);

   @GetMapping("/provider/order/get/list")
   List getAll();
}

可以看到,F(xiàn)eign 客戶端要添加 @FeignClient 注解,value 屬性表示作用到哪個微服務上,這里表示負載均衡作用到請求訂單服務上。要記住,F(xiàn)eign 也是客戶端的負載均衡。

方法內(nèi)定義了兩個接口,接口上即和普通的 SpringMVC 沒什么區(qū)別,url 即訂單提供服務的url。這就是 Feign 客戶端,通過注解 + 接口的方式來和訂單服務的接口綁定。

3.4 Feign 客戶端的使用

定義好了 Feign 客戶端接口后,我們就可以在代碼里通過 @Resource 正常引入進來,然后通過普通的方法調(diào)用即可實現(xiàn)對訂單服務的調(diào)用,如下:

@RestController
@RequestMapping("/consumer/order")
public class OrderConsumerController {

   /**
    * 上面定義的 Feign Client
    */
   @Resource
   private OrderClientService orderClientService;

   @GetMapping("/get/{id}")
   public TOrder getOrder(@PathVariable Long id) {
       return orderClientService.getOrder(id);
   }

   @GetMapping("/get/list")
   public List getAll() {
       return orderClientService.getAll();
   }
}

啟動 eureka 集群、三個訂單提供服務和這個帶有 Feign 的服務消費方(端口 9001)。通過在瀏覽器中訪問:http://localhost:9001//consumer/order/get/1 可以看到,輪流訪問三個訂單服務。說明 Feign 默認是集成了 Ribbon 的輪詢方案。

4. Feign 如何結(jié)合 Ribbon 切換均衡算法

以上就是 Feign 的使用,很簡單,也符合我們平時的接口調(diào)用習慣。但是這是默認的輪詢負載均衡算法。在上一節(jié)我們知道,Ribbon 中支持很多自帶的均衡算法,我們只要在代碼中根據(jù)具體情況,選擇合適的均衡算法即可。甚至我們可以選擇自己自定義的均衡算法。

那么使用 Feign 的時候,如何去切換到 Ribbon 中其他均衡策略呢?甚至切換到自定義的策略呢?

也很簡單,我們可以在 application.yml 配置文件中來指定,如下:

# feign和ribbon結(jié)合,指定策略。feign默認的是輪詢的策略,這里的配置可以自定義
MICROSERVICE-ORDER:
 ribbon:
   NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

MICROSERVICE-ORDER 表示作用到哪個微服務,com.netflix.loadbalancer.RandomRule 即前面介紹 Ribbon 時里面的隨機策略,當然,我們也可以指定為其他策略,包括我們自己定義的,只要把相應的包路徑寫到這即可,很方便。

重新啟動一下服務消費方的程序,訪問上面那個測試 url,可以看到三個訂單服務是隨機調(diào)用的,說明配置生效。

看完上述內(nèi)容,你們掌握Spring Cloud中如何使用Feign 實現(xiàn)負載均衡的方法了嗎?如果還想學到更多技能或想了解更多相關內(nèi)容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


當前名稱:SpringCloud中如何使用Feign實現(xiàn)負載均衡
網(wǎng)頁網(wǎng)址:http://weahome.cn/article/pogpce.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部