「 從0到1學習微服務SpringCloud 」01 一塊兒來學呀! 「 從0到1學習微服務SpringCloud 」02 Eureka服務註冊與發現
「 從0到1學習微服務SpringCloud 」03 Eureka的自我保護機制java
講完了服務的註冊和發現。在微服務架構中,業務都會被拆分紅一個獨立的服務,服務與服務的通信是基於http restful的。Spring cloud有兩種服務調用方式,一種是Ribbon+RestTemplate,另外一種是feign。在這一篇文章首先講解下基於Ribbon+RestTemplate。spring
負載均衡:用於將工做負載分佈到多個服務器來提升網站、應用、數據庫或其餘服務的性能和可靠性。數據庫
使用負載均衡帶來的好處很明顯:
1.當集羣裏的1臺或者多臺服務器down的時候,剩餘的沒有down的服務器能夠保證服務的繼續使用
2.將訪問壓力分配到各個服務器,不會因爲某一高峯時刻致使系統cpu急劇上升json
負載均衡有好幾種實現策略,常見的有:隨機 (Random),輪詢 (RoundRobin),一致性哈希 (ConsistentHash),哈希 (Hash),加權(Weighted)瀏覽器
Ribbon的默認策略是輪詢
服務器
傳統狀況下在java代碼裏訪問restful服務,通常使用Apache的HttpClient。不過此種方法使用起來太過繁瑣。spring提供了一種簡單便捷的模板類來進行操做,這就是RestTemplate。restful
Spring RestTemplate, 使用java訪問URL更加優雅,更加方便。
例子:架構
String url = "http://localhost:8080/json"; JSONObject json = restTemplate.getForEntity(url, JSONObject.class).getBody();
ps:繼續以前的項目代碼,這裏再也不重複粘貼,可查看以前文章內容。app
1.開啓Eureka Server應用負載均衡
1.新建Eureka Client項目,名爲service-hi,用於提供服務,一樣註冊到註冊中心
//controller提供服務 @RestController public class HiController { @Value("${server.port}") public String port; @GetMapping("hi") public String hi() { return "hi!i am come from " + port; } }
2.複製應用,分別設置端口爲8862,8863,並開啓
3.打開註冊中心,service-hi的兩個服務已成功註冊進來
1.在啓動類注入restTemplate的Bean,並添加@LoadBalanced註解啓動負載均衡
@Bean @LoadBalanced RestTemplate restTemplate() { return new RestTemplate(); }
2.在這個應用中調用service-hi的服務
@RestController public class HiController { @Autowired private HiService hiService; @GetMapping("hi") public String hi() { return hiService.hi(); } } @Service public class HiService { @Autowired private RestTemplate restTemplate; public String hi() { //這裏使用服務名進行調用 return restTemplate.getForObject("http://SERVICE-HI/hi",String.class); } }
3.啓動應用,並在瀏覽器中調用eureka-client的hi方法
瀏覽器交替顯示:
hi!i am come from 8862 hi!i am come from 8863
至此,已經過Ribbon+RestTemplate實現了微服務間的調用與負載均衡
若是以爲不錯,請給個「好看」
分享給你的朋友!
THANDKS
一個立志成大腿而天天努力奮鬥的年輕人
伴學習伴成長,成長之路你並不孤單!