前言介紹:
這一講我們将依據Eureka的負載均衡規則,Eureka的具體服務搭建以及服務注冊和服務發現可以參考基于Eureka實作服務注冊和服務發現_熱愛Java的程式設計小白的部落格-CSDN部落格
Eureka的服務搭建之後便可以在這上面進行服務注冊,如果存在兩個相同的服務名注冊,此時服務請求這個相同名稱的服務的時候,将會配合Ribbon進行負載均衡處理,換言之,會在注冊的同名服務清單中拉取其中一個服務處理本次請求。是以本講将詳細介紹Ribbon的負載均衡政策源碼。
源碼介紹:(基于idea工具進行講解)
輕按兩下鍵盤Shift打開全局搜尋,輸入LoadBalancerInterceptor進入到這個類裡面,我們可以看到這個類實作了ClientHttpRequestInterceptor這個接口,這個接口是請求攔截器。這個接口會将請求進行攔截并且做負載均衡處理。
進入接口會發現這個接口隻有一個實作攔截方法,那麼負載均衡将會基于這個攔截方法進行負載均衡處理。
進入方法檢視發現會擷取位址資訊,服務名,擷取到的服務名稱,将會依據擷取到的服務名稱拉取從Eureka上拉取的同名服務執行個體。
繼續往下執行會發現allServerList已經從Eureka上拉取到這兩個服務名稱相同的服務執行個體
繼續跟進rule.choose(key),将會選擇輪詢還是随機,進入Rule接口
将會看到裡面有輪詢和随機方法
最後成功拿到執行個體。
Ribbon負載均衡源碼分析就到這了,希望對大家有幫助!