springcloud系列9——Ribbon脫離Eureka使用
阿新 • • 發佈:2018-12-10
前言
Eureka對遠端服務發現提供了抽象,你不需要在客戶端硬編碼URL。但是,如果你不想在Ribbon中使用Eureka,也是非常簡單的。 這裡仍然以前面章節中的microservice-springcloud-movie進行測試。
在Ribbon中禁用Eureka
在application.yml中增加下面的配置:
ribbon:
eureka:
enabled: false
宣告Ribbon客戶端提供的服務列表
在application.yml中增加:
microservice-springcloud-user:
ribbon:
listOfServers : localhost:7902,localhost:7903
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
microservice-springcloud-user2:
ribbon:
listOfServers: localhost:7904,localhost:7905
在上面Ribbon客戶端中定義的服務列表包括了microservice-springcloud-user和microservice-springcloud-user2兩個服務,其中microservice-springcloud-user服務隨機訪問,microservice-springcloud-user2不配置則使用預設的輪詢策略。
測試
- 1.啟動Eureka Server;
- 2.啟動microservice-springcloud-user的2個服務;
- 3.啟動microservice-springcloud-user2的2個服務;
- 4.啟動microservice-springcloud-movie。
測試1
瀏覽器中輸入http://localhost:7901/test並重新整理多次,檢視控制檯 可以看到microservice-springcloud-user隨機訪問的,microservice-springcloud-user2則是輪詢。
測試2
如果在application.yml中不配置microservice-springcloud-user2,則訪問 http://localhost:7901/test會報錯,但使用了eureka則不會。
直接使用Ribbon API
public class MyClass {
@Autowired
private LoadBalancerClient loadBalancer;
public void doStuff() {
ServiceInstance instance = loadBalancer.choose("stores");
URI storesUri = URI.create(String.format("http://%s:%s", instance.getHost(), instance.getPort()));
// ... do something with the URI
}
}