1. 回顧web
在前文的示例中,是將Ribbon與Eureka配合使用的。可是現實中可能不具有這樣的條件,例如一些遺留的微服務,它們可能並無註冊到Eureka Server上,spring
甚至根本不是使用Spring Cloud開發的,此時要如何使用Ribbon實現負載均衡架構
2. 脫離Eureka使用Ribbonapp
> 複製項目 microservice-consumer-movie-ribbon,將ArtifactId修改成 microservice-consumer-movie-without-eureka負載均衡
> 爲了更具說服力,將Eureka的依賴替換爲Ribbon依賴,即將ide
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
替換爲微服務
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
> 去掉啓動類上的@EnableDiscoveryClient註解spa
package com.itmuch.cloud.microserviceconsumermoviewithouteureka; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate; @SpringBootApplication public class MicroserviceConsumerMovieWithoutEurekaApplication { public static void main(String[] args) { SpringApplication.run(MicroserviceConsumerMovieWithoutEurekaApplication.class, args); } @Bean @LoadBalanced // 實現負載均衡
public RestTemplate restTemplate() { return new RestTemplate(); } }
> 將application.yml修改以下:rest
server:
port: 8010
spring:
application:
name: microservice-consumer-movie
microservice-provider-user:
ribbon:
listOfServers: localhost:8000,localhost:8001
其中,屬性microservice-provider-user.ribbon.listOfServers用於爲名爲microservice-provider-user的Ribbon客戶端設置請求的地址列表日誌
> 啓動兩個以上的 microservice-simple-provider-user 實例
> 啓動 microservice-consumer-without-eureka
> 屢次訪問 http://localhost:8010/log-instance,控制檯打印相似以下日誌
由結果可知,儘管電影微服務和用戶微服務並無註冊到Eureka上,Ribbon仍可正常工做,請求依舊會分攤到兩個用戶微服務節點上
3. 總結
本文講解了脫離Eureka使用Ribbon的狀況。
下文將講解使用Feign實現聲明式REST調用,敬請期待~~~
4. 參考
周立 --- 《Spring Cloud與Docker微服務架構與實戰》