「 從0到1學習微服務SpringCloud 」04服務消費者Ribbon+RestTemplate

系列文章(更新ing):

「 從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

Ribbon

負載均衡:用於將工做負載分佈到多個服務器來提升網站、應用、數據庫或其餘服務的性能和可靠性。數據庫

使用負載均衡帶來的好處很明顯:
1.當集羣裏的1臺或者多臺服務器down的時候,剩餘的沒有down的服務器能夠保證服務的繼續使用
2.將訪問壓力分配到各個服務器,不會因爲某一高峯時刻致使系統cpu急劇上升json

負載均衡有好幾種實現策略,常見的有:隨機 (Random),輪詢 (RoundRobin),一致性哈希 (ConsistentHash),哈希 (Hash),加權(Weighted)瀏覽器

Ribbon的默認策略是輪詢服務器

RestTemplate

傳統狀況下在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();

Ribbon+RestTemplate的使用

ps:繼續以前的項目代碼,這裏再也不重複粘貼,可查看以前文章內容。app

Eureka Server

1.開啓Eureka Server應用負載均衡

Eureka Client
service-hi(用於提供服務)

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,並開啓

image

3.打開註冊中心,service-hi的兩個服務已成功註冊進來

image

eureka-client(用於消費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方法

image

image

瀏覽器交替顯示:

hi!i am come from 8862
hi!i am come from 8863

至此,已經過Ribbon+RestTemplate實現了微服務間的調用與負載均衡

若是以爲不錯,請給個「好看」

分享給你的朋友!

image

image

 THANDKS

  • End -

一個立志成大腿而天天努力奮鬥的年輕人

伴學習伴成長,成長之路你並不孤單!

 掃描二維碼,關注公衆號

相關文章
相關標籤/搜索