1.eureka註冊中心
3.客戶端註冊服務到集群
eureka:
client:
service-url: # eurekaserver位址,多個位址以』,'隔開
defaultzone:
4.服務續約
lease-renewal-interval-in-seconds:服務續約(renew)的間隔,預設為30秒 lease-expiration-duration-in-seconds:服務失效時間,預設值90秒
2.ribbon:負載均衡
消費者身上:
@bean
@loadbalanced
public resttemplate resttemplate()
重試機制
spring:
cloud:
loadbalancer:
retry:
enabled: true # 開啟spring cloud的重試功能 user-service:
ribbon:
connecttimeout: 250 # ribbon的連線超時時間
readtimeout: 1000 # ribbon的資料讀取超時時間 oktoretryonalloperations: true # 是否對所有操作都進行重試 maxautoretriesnextserver: 1 # 切換例項的重試次數 maxautoretries: 1 # 對當前例項的重試次數
3.hystix:熔斷器
hystix是netflix開源的乙個延遲和容錯庫,用於隔離訪問遠端服務、第三方庫,防止出現級聯失敗。
1.在消費者身上
@hystrixcommand(fallbackmethod=「queryuserbyidfallback」) :宣告乙個失敗回滾處理函式 queryuserbyidfallback,當queryuserbyid執行超時(預設是1000毫秒),就會執行fallback函式,返回錯 誤提示。
為了方便檢視熔斷的觸發時機,我們記錄請求訪問時間。
2.在服務提供者身上
// 為了演示超時現象,我們在這裡然執行緒休眠,時間隨機 0~2000毫秒 thread.sleep(new random().nextint(2000));
4.feign:服務呼叫
1.你會發現resttemplate的註冊被我刪除了。feign中已經自動整合了ribbon負載均衡,因此我們不需要自己 定義resttemplate了
2.另外,我們可以像上節課中講的那樣去配置ribbon,可以通過 ribbon.xx 來進行全域性配置。也可以通過 服務名.ribbon.xx 來對指定服務配置:
user-service:
ribbon:
connecttimeout: 250 # 連線超時時間(ms)
readtimeout: 1000 # 通訊超時時間(ms)
oktoretryonalloperations: true # 是否對所有操作重試
maxautoretriesnextserver: 1 # 同一服務不同例項的重試次數 maxautoretries: 1 # 同一例項的重試次數
5.zuul:服務閘道器
對外服務呼叫:
首先,破壞了服務無狀態特點。
為了保證對外服務的安全性,我們需要實現對服務訪問的許可權控制,而開放服務的許可權控制機制將會貫 穿並汙染整個開放服務的業務邏輯,這會帶來的最直接問題是,破壞了服務集群中rest api無狀態的特 點。 從具體開發和測試的角度來說,在工作中除了要考慮實際的業務邏輯之外,還需要額外考慮對介面訪問 的控制處理。
其次,無法直接復用既有介面。
當我們需要對乙個即有的集群內訪問介面,實現外部服務訪問時,我們不得不通過在原有介面上增加校驗邏輯,或增加乙個**呼叫來實現許可權控制,無法直接復用原有的介面。
1.不管是來自於客戶端(pc或移動端)的請求,還是服務內部呼叫。一切對服務的請求都會經過zuul這個網 關,然後再由閘道器來實現 鑑權、動態路由等等操作。zuul就是我們服務的統一入口。
2.面向服務的路由
3.過濾器
zuul作為閘道器的其中乙個重要功能,就是實現請求的鑑權。而這個動作我們往往是通過zuul提供的過濾器來實現
的。場景非常多:
請求鑑權:一般放在pre型別,如果發現沒有訪問許可權,直接就攔截了
異常處理:一般會在error型別和post型別過濾器中結合來處理。
服務呼叫時長統計:pre和post結合使用。
4.負載均衡和熔斷
6.config配置中心
Springcloud常用元件
一 eureka netfix下 雲端服務發現,乙個基於 rest 的服務,用於定位服務,以實現雲端中間層服務發現和故障轉移。二 spring cloud config spring下 配置管理工具包,讓你可以把配置放到遠端伺服器,集中化管理集群配置,目前支援本地儲存 git以及subversion...
springcloud常用註解
1 在主程式類名上新增註解 enableeurekaserver 開啟eureka註冊中心功能 2 在主程式類名上新增註解 enablediscoveryclient 將自己自動註冊到註冊中心 3 給容器中注入乙個resttemplate並使用ribbon進行負載均衡呼叫 loadbalanced ...
springcloud常用註解
configuration 表示將該類作用springboot配置檔案類 enableautoconfiguration 表示程式啟動時,自動載入springboot預設的配置 componentscan 表示程式啟動是,自動掃瞄當前包及子包下所有類 enablediscoveryclient en...