SpringCloud系列九:脫離Eureka使用Ribbon


1. 回顧

  在前文的示例中,是將Ribbon與Eureka配合使用的。但是現實中可能不具備這樣的條件,例如一些遺留的微服務,它們可能並沒有注冊到Eureka Server上,

  甚至根本不是使用Spring Cloud開發的,此時要如何使用Ribbon實現負載均衡

2. 脫離Eureka使用Ribbon

  > 復制項目 microservice-consumer-movie-ribbon,將ArtifactId修改為 microservice-consumer-movie-without-eureka

  > 為了更具說服力,將Eureka的依賴替換為Ribbon依賴,即將

<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注解

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修改如下:

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微服務架構與實戰》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM