天天看點

SpringCloud第二講 Ribbon負載均衡源碼分析

前言介紹:

      這一講我們将依據Eureka的負載均衡規則,Eureka的具體服務搭建以及服務注冊和服務發現可以參考基于Eureka實作服務注冊和服務發現_熱愛Java的程式設計小白的部落格-CSDN部落格

      Eureka的服務搭建之後便可以在這上面進行服務注冊,如果存在兩個相同的服務名注冊,此時服務請求這個相同名稱的服務的時候,将會配合Ribbon進行負載均衡處理,換言之,會在注冊的同名服務清單中拉取其中一個服務處理本次請求。是以本講将詳細介紹Ribbon的負載均衡政策源碼。

源碼介紹:(基于idea工具進行講解)

      輕按兩下鍵盤Shift打開全局搜尋,輸入LoadBalancerInterceptor進入到這個類裡面,我們可以看到這個類實作了ClientHttpRequestInterceptor這個接口,這個接口是請求攔截器。這個接口會将請求進行攔截并且做負載均衡處理。

SpringCloud第二講 Ribbon負載均衡源碼分析

       進入接口會發現這個接口隻有一個實作攔截方法,那麼負載均衡将會基于這個攔截方法進行負載均衡處理。

SpringCloud第二講 Ribbon負載均衡源碼分析

      進入方法檢視發現會擷取位址資訊,服務名,擷取到的服務名稱,将會依據擷取到的服務名稱拉取從Eureka上拉取的同名服務執行個體。

SpringCloud第二講 Ribbon負載均衡源碼分析

       繼續往下執行會發現allServerList已經從Eureka上拉取到這兩個服務名稱相同的服務執行個體

SpringCloud第二講 Ribbon負載均衡源碼分析

       繼續跟進rule.choose(key),将會選擇輪詢還是随機,進入Rule接口

SpringCloud第二講 Ribbon負載均衡源碼分析

 将會看到裡面有輪詢和随機方法

SpringCloud第二講 Ribbon負載均衡源碼分析

 最後成功拿到執行個體。

SpringCloud第二講 Ribbon負載均衡源碼分析

Ribbon負載均衡源碼分析就到這了,希望對大家有幫助!

繼續閱讀