springCloud入門學習(八):脫離Eureka使用Ribbon

在以前的實驗中都是經過Eureka和Ribbon結合使用的,可是現實中可能不具有這樣的條件。例若有些服務沒有註冊到註冊中心,但此時須要負載均衡到該服務,因此須要一種脫離Eureka使用Ribbon。java


修改movie:spring

一、去掉pom文件中的Eureka依賴負載均衡

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>

這個包其實包含ribbon相關包,因爲以前的負載均衡都是基於Eureka的,因此無需單獨引入Ribbon相關包。如今把這個依賴去掉而且單獨引入ribbon包。ide

二、加入Ribbon包rest

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>

三、修改啓動類,去掉 @EnableEurekaClient  註解server

@SpringBootApplication
//@EnableEurekaClient
public class MovieApplication {

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

    public static void main(String[] args) {
        SpringApplication.run(MovieApplication.class, args);
    }

}

四、瞭解到,ribbon和Eureka結合使用時,從Eureka獲取服務提供者的服務端口及IP來調用服務,如今脫離Eureka後沒法獲取服務提供者的訪問地址,所以須要在movie中指定服務調用者的端口及ip,修改yml文件:blog

user:
  ribbon:
    listOfServers: localhost:8010,localhost:8011

調用格式:<clientName.ribbon.listOfServers>,能夠配置多個實例地址,經過「,」分隔ip


啓動movie,而且啓動多個user實例,訪問http://localhost:8020/movie/findById?userId=1 get

能夠得到結果。在觀察user的控制檯:it

image.png

image.png

可見請求已經分攤到兩個實例中,實現了負載均衡

相關文章
相關標籤/搜索