接下來在整個微服務架構中,我們比較關心的就是服務間的服務該如何調用,有哪些調用方式?
總結:在springcloud中服務間調用方式主要是使用 http restful方式進行服務間調用
1|0 1. 基於RestTemplate的服務調用
在上面的基礎上,使用的是consul註冊,pom.xml文件
1|1 1. 說明
spring框架提供的RestTemplate類可用於在應用中調用rest服務,它簡化了與http服務的通信方式,統一了RESTful的標準,封裝了http連結, 我們只需要傳入url及返回值類型即可。相較於之前常用的HttpClient,RestTemplate是一種更優雅的調用RESTful服務的方式。1|2 2. RestTemplate 服務調用
創建兩個服務並註冊到consul註冊中心中users 代表用戶服務 埠為 9999products 代表商品服務 埠為 9998`注意:這裡服務僅僅用來測試,沒有實際業務意義
1|3 3. 在商品服務中提供服務方法
1|4 4. 在用戶服務中使用restTemplate進行調用
1|5 5.啟動服務
1|6 6.測試服務調用
瀏覽器訪問用戶服務 localhost:9999/user/findAll
1|7 7. 總結
rest Template是直接基於服務地址調用沒有在服務註冊中心獲取服務,也沒有辦法完成服務的負載均衡如果需要實現服務的負載均衡需要自己書寫服務負載均衡策略。restTemplate直接調用存在問題1.直接使用restTemplate方式調用沒有經過服務註冊中心獲取服務地址,代碼寫死不利於維護,當服務宕機時不能高效剔除2.調用服務時沒有負載均衡需要自己實現負載均衡策略2|0 2. 基於Ribbon的服務調用
2|1 0. 說明
官方網址Spring Cloud Ribbon是一個基於HTTP和TCP的客戶端負載均衡工具,它基於Netflix Ribbon實現。通過Spring Cloud的封裝,可以讓我們輕鬆地將面向服務的REST模版請求自動轉換成客戶端負載均衡的服務調用。再創建一個服務類,和上面的服務類一樣,只有埠不同
其他一樣
2|2 1. Ribbon 服務調用
默認的輪訓策略,也就是當前訪問的9998,之後是9997,循環訪問
2|3 2. Ribbon負載均衡策略
ribbon負載均衡算法
RoundRobinRule 輪訓策略 按順序循環選擇 ServerRandomRule 隨機策略 隨機選擇 ServerAvailabilityFilteringRule 可用過濾策略`會先過濾由於多次訪問故障而處於斷路器跳閘狀態的服務,還有並發的連接數量超過閾值的服務,然後對剩餘的服務列表按照輪詢策略進行訪問WeightedResponseTimeRule 響應時間加權策略`根據平均響應的時間計算所有服務的權重,響應時間越快服務權重越大被選中的概率越高,剛啟動時如果統計信息不足,則使用RoundRobinRule策略,等統計信息足夠會切換到RetryRule 重試策略`先按照RoundRobinRule的策略獲取服務,如果獲取失敗則在制定時間內進行重試,獲取可用的服務。BestAviableRule 最低並發策略`會先過濾掉由於多次訪問故障而處於斷路器跳閘狀態的服務,然後選擇一個並發量最小的服務
2|4 3.修改服務的默認負載均衡策略
2|5 4.Ribbon停止維護