【SpringCloud-Alibaba系列教程】5.負(fù)載均衡
一、介紹
上一章我們簡(jiǎn)單的說(shuō)了一下關(guān)于Nacos的使用,這次我們首先做從Nacos獲取微服務(wù)地址和端口的操作,然后再進(jìn)行引出負(fù)載均衡的問(wèn)題。
二、我們開(kāi)始吧
首先我們?cè)谟唵蜟ontroller繼續(xù)編寫(xiě)
這樣就通過(guò)了nacos獲取商品微服務(wù)ip以及端口等信息。
這樣看來(lái) 我的list中serviceInstanceList.get(0);
獲取的是第一個(gè)。那么問(wèn)題來(lái)了如果我要想讓隨機(jī)訪問(wèn)到商品微服務(wù)ip以及端口上面。
或者我想循環(huán),那么怎么辦呢,但是我們?nèi)绾芜M(jìn)行設(shè)置呢?
我們首先啟動(dòng)兩個(gè)端口的商品微服務(wù)。
我們可以通過(guò)隨機(jī)數(shù),隨機(jī)獲取一個(gè)微服務(wù)序號(hào),然后進(jìn)行調(diào)用。
這樣也會(huì)有一個(gè)問(wèn)題,我們要使用其他的負(fù)載均衡條件,一般是實(shí)現(xiàn)不了的,那有沒(méi)有其他的負(fù)載均衡的組件呢?
答案肯定是有的,那就是Ribbon。
那我們接下來(lái)就是使用這個(gè)Ribbon進(jìn)行對(duì)我們的代碼優(yōu)化。
我們打開(kāi)OrderApplication在restTemplate添加一個(gè)負(fù)載均衡注解
然后我們打開(kāi)地址http://localhost:8091//order/prod/1
刷新兩次進(jìn)行日志查看:
我們可以看到兩次分別落在了兩個(gè)端口,這樣就實(shí)現(xiàn)了我們基本的Ribbon(默認(rèn)是輪詢)負(fù)載均衡
當(dāng)然還有其他的模式例如
RandomRule隨機(jī)策略:隨機(jī)選擇server
RoundRobinRule輪詢策略:輪詢選擇, 輪詢index,選擇index對(duì)應(yīng)位置的Server;
RetryRule重試策略:對(duì)選定的負(fù)載均衡策略機(jī)上重試機(jī)制,在一個(gè)配置時(shí)間段內(nèi)當(dāng)選擇Server不成功,則一直嘗試使用subRule的方式選擇一個(gè)可用的server;
BestAvailableRule最低并發(fā)策略:逐個(gè)考察server,如果server斷路器打開(kāi),則忽略,再選擇其中并發(fā)鏈接最低的server
AvailabilityFilteringRule可用過(guò)濾策略:過(guò)濾掉一直失敗并被標(biāo)記為circuit tripped的server,過(guò)濾掉那些高并發(fā)鏈接的server(active connections超過(guò)配置的閾值)或者使用一個(gè)AvailabilityPredicate來(lái)包含過(guò)濾server的邏輯,其實(shí)就就是檢查status里記錄的各個(gè)Server的運(yùn)行狀態(tài);
ResponseTimeWeightedRule響應(yīng)時(shí)間加權(quán)重策略:根據(jù)server的響應(yīng)時(shí)間分配權(quán)重,響應(yīng)時(shí)間越長(zhǎng),權(quán)重越低,被選擇到的概率也就越低。響應(yīng)時(shí)間越短,權(quán)重越高,被選中的概率越高,這個(gè)策略很貼切,綜合了各種因素,比如:網(wǎng)絡(luò),磁盤(pán),io等,都直接影響響應(yīng)時(shí)間。
ZoneAvoidanceRule區(qū)域權(quán)重策略:綜合判斷server所在區(qū)域的性能,和server的可用性,輪詢選擇server并且判斷一個(gè)AWS Zone的運(yùn)行性能是否可用,剔除不可用的Zone中的所有server
具體可以查看相關(guān)wiki: https://github.com/Netflix/ribbon/wiki
我們可以在配置文件中配置
service-product: #服務(wù)提供者的名稱
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #策略
這樣我們就實(shí)現(xiàn)了負(fù)載均衡。
后期會(huì)在這個(gè)項(xiàng)目上不斷添加,喜歡的請(qǐng)點(diǎn)個(gè)start~
項(xiàng)目源碼參考一下分支220127_xgc_loadBalance
Gitee:https://gitee.com/coderxgc/springcloud-alibaba
GitHub:https://github.com/coderxgc/springcloud-alibaba
Spring Cloud 負(fù)載均衡緩存
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。