天天看點

Springcloud微服務-元件三Ribbon

繼上兩篇接着說我們将服務注冊到Eureka注冊中心後,那麼服務之間的調用是怎麼完成的?

我們的消費者想要去注冊中心上消費我們的服務這裡就需要使用到springcloud 的元件ribbon 。

一、Ribbon是什麼?

Ribbon是一個基于HTTP和TCP的用戶端負載均衡器。當使用Ribbon對服務進行通路的時候,它會實作從Eureka注冊中心中擷取服務端清單,并通過Eureka用戶端來确定服務端已經啟動。Ribbon在Eureka用戶端服務發現的基礎上,實作了對服務執行個體的選擇政策,是以Ribbon也是實作負載均衡的政策的。

二、Ribbon在項目中怎麼使用?

1、起步依賴

<!--SpringCloud 內建 eureka 用戶端的起步依賴--> <dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
           

2、激活 Eureka 中的EnableEurekaClient 功能:

在 Spring Boot 的入口函數處,通過添加@EnableEurekaClient 注解來表明自己是一個 eureka 用戶端,讓我的服務消費者可以使用 eureka 注冊中心;

3、配置服務的名稱和注冊中心的位址:

spring.application.name=03-springcloud-web-consumer
eureka.client.service-url.defaultZone=http://localhost:8761/eureka
           

4、Ribbon來實作服務的調用

@loadBalance 該注冊就是Ribbon的核心,Springcloud對Ribbon實作的封裝,讓我們開發變得非常的友善,我們在項目中一般會見一個配置類,例如:

@LoadBalanced
@Bean
public RestTemplate restTemplate () {
 return new RestTemplate();
}
           

那麼我們可以說我們建立了一個RestTemplate模闆對象,交由spring來管理,我們需要調用微服務的時候就可以使用該模闆對象來調用了。例如

需要注意的時:加入了Ribbon的支援,在調用服務的過程中,就是使用服務的名稱來調用。

restTemplate.getForEntity("http://01-SPRINGCLOUD-SERVICE-PROVIDER/cloud/hello", 
String.class).getBody();