在以前的實驗中都是經過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
可見請求已經分攤到兩個實例中,實現了負載均衡