首頁>技術>

Ribbon負載均衡

是什麼

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

能幹嗎

LB,即負載均衡(Load Balance),在微服務或分散式叢集中經常用的一種應用。負載均衡簡單的說就是將使用者的請求平攤的分配到多個服務上,從而達到系統的HA。常見的負載均衡有軟體Nginx,LVS,硬體 F5等。相應的在中介軟體,例如:dubbo和SpringCloud中均給我們提供了負載均衡,SpringCloud的負載均衡演算法可以自定義。

集中式LB

程序內LB

將LB邏輯整合到消費方,消費方從服務註冊中心獲知有哪些地址可用,然後自己再從這些地址中選擇出一個合適的伺服器。Ribbon就屬於程序內LB,它只是一個類庫,集成於消費方程序,消費方透過它來獲取到服務提供方的地址。

官網資料https://github.com/Netflix/ribbon/wiki/Getting-Started

總結:Ribbon其實就是一個軟負載均衡的客戶端元件,他可以和其他所需請求的客戶端結合使用,和eureka結合只是其中的一個例項。

Feign負載均衡

官網解釋:http://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-feign

Feign是一個宣告式WebService客戶端。使用Feign能讓編寫Web Service客戶端更加簡單, 它的使用方法是定義一個介面,然後在上面添加註解,同時也支援JAX-RS標準的註解。Feign也支援可拔插式的編碼器和解碼器。Spring Cloud對Feign進行了封裝,使其支援了Spring MVC標準註解和HttpMessageConverters。Feign可以與Eureka和Ribbon組合使用以支援負載均衡。

Feign是一個宣告式的Web服務客戶端,使得編寫Web服務客戶端變得非常容易,

只需要建立一個介面,然後在上面添加註解即可。

參考官網:https://github.com/OpenFeign/feign

Feign能幹什麼

Feign旨在使編寫Java Http客戶端變得更容易。

前面在使用Ribbon+RestTemplate時,利用RestTemplate對http請求的封裝處理,形成了一套模版化的呼叫方法。但是在實際開發中,由於對服務依賴的呼叫可能不止一處,往往一個介面會被多處呼叫,所以通常都會針對每個微服務自行封裝一些客戶端類來包裝這些依賴服務的呼叫。所以,Feign在此基礎上做了進一步封裝,由他來幫助我們定義和實現依賴服務介面的定義。在Feign的實現下,我們只需建立一個介面並使用註解的方式來配置它(以前是Dao介面上面標註Mapper註解,現在是一個微服務介面上面標註一個Feign註解即可),即可完成對服務提供方的介面繫結,簡化了使用Spring cloud Ribbon時,自動封裝服務呼叫客戶端的開發量。

Feign集成了Ribbon

利用Ribbon維護了MicroServiceCloud-Dept的服務列表資訊,並且透過輪詢實現了客戶端的負載均衡。而與Ribbon不同的是,透過feign只需要定義服務繫結介面且以宣告式的方法,優雅而簡單的實現了服務呼叫

總結:Feign透過介面的方法呼叫Rest服務(之前是Ribbon+RestTemplate),該請求傳送給Eureka伺服器(http://MICROSERVICECLOUD-DEPT/dept/list),透過Feign直接找到服務介面,由於在進行服務呼叫的時候融合了Ribbon技術,所以也支援負載均衡作用。

17
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 老菩突發奇想,2021年學習Python