java架構師高端課微服務_03_SpringCloud_Netflix_Ribbon
主要內(nèi)容
Ribbon簡介
使用Ribbon開發(fā)微服務
集中式與進程內(nèi)負載均衡區(qū)別
Ribbon常見的負載均衡策略
Ribbon的點對點直連
學習目標

Spring Cloud?Netflix Ribbon
一、?Ribbon簡介
Ribbon 是一個基于Http和TCP的客服端負載均衡工具,它是基于Netflix Ribbon實現(xiàn)的。它不像spring cloud服務注冊中心、配置中心、API網(wǎng)關那樣獨立部署,但是它幾乎存在于每個spring cloud 微服務中。包括feign提供的聲明式服務調(diào)用也是基于該Ribbon實現(xiàn)的。ribbon默認提供很多種負載均衡算法,例如 輪詢、隨機 等等。甚至包含自定義的負載均衡算法。Ribbon可以用于解決并提供微服務的負載均衡的問題。
二、?使用Ribbon開發(fā)微服務
在Spring Cloud中,使用Ribbon技術開發(fā)Eureka Client組件還是非常方便的。我們在開發(fā)過程中,不需要像Dubbo那樣關注服務的角色。無論是Provider還是Consumer都是一個微服務客戶端,只是在編碼層面上,服務消費者代碼的開發(fā)相對比較麻煩。我們通過簡單案例測試一下Spring Cloud中的微服務開發(fā)過程。
因為現(xiàn)在的Eureka Server部署在Linux中,并已為Linux定義了新的主機域名,需要先修改開發(fā)測試環(huán)境中的hosts文件。windows中的hosts文件位于:C:\windows\system32\dirvers\etc\hosts。新增內(nèi)容如下:(IP根據(jù)具體情況配置)

1?創(chuàng)建Eureka Client工程

1.1?POM依賴


2???創(chuàng)建Application Service服務提供者Module

3??開發(fā)服務提供者 - Application Service
3.1?POM依賴


3.2?服務提供者代碼

3.3?配置文件application.yml


3.4?啟動類

3.5?檢查Eureka Server中的服務注冊情況

4??創(chuàng)建Application Client服務消費者Module

5??開發(fā)服務消費者 - Application Client
5.1?POM依賴

5.2?服務消費者代碼
5.2.1?服務接口

5.2.2?服務實現(xiàn)


5.2.3?控制器


5.4?啟動類

三、?集中式與進程內(nèi)負載均衡區(qū)別
業(yè)界主流的負載均衡解決方案有:集中式負載均衡和進程內(nèi)負載均衡。
1?集中式負載均衡
即在客戶端和服務端之間使用獨立的負載均衡設施(可以是硬件,如F5, 也可以是軟件,如nginx), 由該設施負責把訪問請求通過某種策略轉發(fā)至服務端。

2??進程內(nèi)負載均衡
將負載均衡邏輯集成到客戶端組件中,客戶端組件從服務注冊中心獲知有哪些地址可用,然后自己再從這些地址中選擇出一個合適的服務端發(fā)起請求。Ribbon就是一個進程內(nèi)的負載均衡實現(xiàn)。

四、?Ribbon常見的負載均衡策略
Ribbon就屬于進程內(nèi)負載均衡,它只是一個類庫,集成于Eureka Client進程,Eureka Client進程通過訪問注冊中心Eureka Server發(fā)現(xiàn)服務列表,發(fā)現(xiàn)的服務列表信息是由ribbon來管理的。當訪問Application Service的時候,Application Client會通過ribbon來找到合適的Application Service地址信息,并發(fā)起遠程調(diào)用請求。
1?Ribbon中的常用負載均衡簡介
ribbon的負載均衡策略是通過不同的類型來實現(xiàn)的,下表詳細介紹一些常用負載均衡策略及對應的Ribbon策略類。







2??配置負載均衡策略
可以通過修改Application Client應用的全局配置文件來改變當前環(huán)境中使用的Ribbon負載均衡策略。


五、?Ribbon的點對點直連
Ribbon也可以脫離Eureka Server注冊中心,通過配置的方式指定要調(diào)用的遠程服務信息,實現(xiàn)Ribbon點對點直連。修改的配置內(nèi)容如下:
