在服務消費者(user-consumer)的啟動類中的resttemplate
類加上@loadbalanced
註解
@enablediscoveryclient
public
class
@bean
@loadbalanced
public resttemplate resttemplate()
}修改dao,通過服務名稱來獲取服務提供者的ip和埠
@component
public
class
userdao
}
複製當前服務提供者,修改埠號為8083,同時啟動兩個服務提供者:
原始碼跟蹤:傳送請求http://localhost:8082/user/findusers?ids=1,2,3,4,在loadbalancerinterceptor
類中打斷點
進入getserver()
方法:
進入chooseserver
方法,在下面呼叫了父類的chooseserver()
方法
進入父類:baseloadbalancer
,其chooseserver()
方法如下
在該類中定義的rule
,可以看出使用的是乙個new roundrobinrule();
的物件
roundrobinrule
該類裡面就定義的負載均衡的策略,可以看出缺省使用的就是輪詢的策略
通過測試類測試:
@runwith
(springrunner.
class
)@springboottest
class
)public
class
loadbalancetest
}}
檢視列印:
從列印結果中可以看出確實是使用輪詢的策略,服務消費者交替從兩個服務提供者獲取資料
修改負載均衡的策略為隨機選取
#拉取eureka server服務的列表唯讀備份,然後快取在本地
registry-fetch-interval-seconds:5
#每隔5秒重新拉取並更新資料,生產環境30
user-service
:ribbon
:nfloadbalancerruleclassname
: com.netflix.loadbalancer.randomrule
再次執行測試方法,獲取20次,列印如下:
新增依賴
>
>
org.springframework.retrygroupid
>
>
spring-retryartifactid
>
dependency
>
新增配置
server
:port
:8082
spring::
name
: user-consumer
cloud
:loadbalancer
:retry
:enabled
:true
# 開啟重試
#拉取eureka server服務的列表唯讀備份,然後快取在本地
registry-fetch-interval-seconds:5
#每隔5秒重新拉取並更新資料,生產環境30
user-service
:ribbon
:connecttimeout
:250
# ribbon的連線超時時間 ms
readtimeout
:1000
# ribbon的資料讀取超時時間
oktoretryonalloperations
:true
# 是否對所有操作都進行重試
maxautoretriesnextserver:1
# 切換例項的重試次數
maxautoretries:1
# 對當前例項的重試次數
logging
:level
:org.springframework
: debug
com.liaoxiang
: debug
同時開啟兩個服務提供者,然後停掉乙個之後通過服務消費者訪問檢視日誌: 四大元件(四) content provider
content provider相當於是程式與程式之間的介面。讓原本不可能通訊的程式,通過內容提供者這個橋梁變得可以通訊。定義乙個類 繼承 contentprovider public class backdoor extends contentprovider 註冊contentprovider ...
第四周任務四
程式頭部注釋開始 程式的版權和版本宣告部分 檔名稱 作 者 李超 完成日期 2012 年 3 月 14 日 版 本 號 對任務及求解方法的描述部分 輸入描述 問題描述 程式輸出 程式頭部的注釋結束 includeusing namespace std class salary int main vo...
走過四年 無言的大四
大四,不知道該記述那現實歲月裡的那一點。前三年,有夢想的人可以盡情地追夢 沒有夢的人,還可以忘我地醉生夢死。然而,大四。所有人都被拉回現實,面臨選擇 工作還是創業 考研,還是出國留學。現實非常的現實。生活還是照常,但每個人都改變著。臥談會的內容也不再只有遊戲 女生,會加進工作 工資,未來。大四上,提...