springcloud之使用ribbon進行客戶端負載均衡

在講ribbon之前我們先來說下什麼是ribbon, Spring Cloud Ribbon是基於Netflix Ribbon實現的一套客戶端負載均衡的工具。簡單的說,Ribbon是Netflix發佈的開源項目,主要功能是提供客戶端的軟件負載均衡算法,將Netflix的中間層服務連接在一起。Ribbon客戶端組件提供一系列完善的配置項如連接超時,重試等。簡單的說,就是在配置文件中列出Load Balancer(簡稱LB)後面所有的機器,Ribbon會自動的幫助你基於某種規則(如簡單輪詢,隨機連接等)去連接這些機器。我們也很容易使用Ribbon實現自定義的負載均衡算法。

相信很多大兄弟可以能都聽說過或者用過負載均衡,比如我們的nginx軟負載,f5硬件負載(土豪才用的起的)等等。

但是細心的同學可以能會注意到,ribbon用來做客戶端負債均衡,那麼想必也聽過服務端負載均衡,那麼什麼叫客戶端負載均衡,什麼叫服務端負載均衡呢?下面我們先來說下:
在這裏插入圖片描述
如上圖,就是一個簡單的服務端負載均衡的圖例,比如我們有一個server集羣,現在我們的client需要訪問我們的server,他會先將請求發送給我們的nginx,然後通過這個代理服務器通過算法(輪詢,隨機,權重等等…)反向代理來實現一個服務端的負載均衡。
在這裏插入圖片描述
如上圖便是一個客戶端負載均衡的簡單模型,比如我們現在客戶端需要調用我們的user,然後user中需要調用我們的呃order,現在我們的eureka(不知道什麼叫eureka的可以看看我的另一篇博客:https://blog.csdn.net/baomw/article/details/86620457)中註冊了兩個order和一個user,當然我們的user一次肯定只能調用一個order,那麼怎麼調用呢,那麼便是我們的客戶端負載均衡了,這麼理解吧: 客戶端的負載均衡則是一個請求在客戶端的時候已經聲明瞭要調用哪個服務,然後通過具體的負載均衡算法來完成負載均衡

既然說ribbon,那麼我們的項目中具體要這麼使用ribbon呢,當然對於一個技術,在我們需要使用的時候我們首先肯定想到的是:引入maven依賴。但是,eureka已經把ribbon集成到他的依賴裏面去了,所以這裏不需要再引用ribbon的依賴,如圖:
在這裏插入圖片描述
要使用ribbon,只需要一個註解:
在這裏插入圖片描述
在這裏插入圖片描述
調用端代碼如下,我們直接通過服務名調用即可,下面我們便可以將服務啓動
在這裏插入圖片描述
首先將我們的環境搭起來,可以看到我們的order和user都註冊進去了,如下圖,可以看到,同一個地址訪問,一次是返回9058,一次返回9068,可見調用的是不同的服務。有興趣的大兄弟可以自己試一下。
在這裏插入圖片描述
在這裏插入圖片描述
這裏可能有點抽象,需要你們自己去寫才能體會到,但是我們已經完成了負載均衡, 他默認的負載均衡是輪詢策略,也就是一人一次。那麼ribbon具體有哪些負載均衡策略呢?
其實在ribbon中,所有負載均衡的實現都是基於一個接口:IRule,也就是我們負載均衡的核心組件。那麼負載在ribbon中具體有哪些實現呢?可以看下圖:
在這裏插入圖片描述
當然,我們也可以實現我們自己的負載均衡策略?至於具體怎麼實現,我會單獨寫一篇來做詳細介紹,今天關於ribbon的一些基本的東西就先介紹到這了。

有興趣的東西還是自己去動手實踐一下,有的東西,再簡單,你不去做一遍,你還是始終都不會,再難的東西,做的多了,也就熟能生巧了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章