Spring Cloud Eureka是Spring Cloud Netflix項目下的服務治理模塊。而Spring Cloud Netflix項目是Spring Cloud的子項目之一,主要內容是對Netflix公司一系列開源產品的包裝,它爲Spring Boot應用提供了自配置的Netflix OSS整合。經過一些簡單的註解,開發者就能夠快速的在應用中配置一下經常使用模塊並構建龐大的分佈式系統。它主要提供的模塊包括:服務發現(Eureka),斷路器(Hystrix),智能路由(Zuul),客戶端負載均衡(Ribbon)等。web
教程spring
注意pom導入包的版本,版本不對沒法啓動app
在默認設置下,該服務註冊中心也會將本身做爲客戶端來嘗試註冊它本身,因此咱們須要禁用它的客戶端註冊行爲負載均衡
服務提供方與enreka的鏈接分佈式
@EnableDiscoveryClient @SpringBootApplication public class Application { public static void main(String[] args) { new SpringApplicationBuilder( Application.class) .web(true).run(args); } }
spring.application.name=eureka-client server.port=2001 eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/
消費方在pom中多了一個依賴spring-boot
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
啓動的時候獲取RestTemplateui
@EnableDiscoveryClient @SpringBootApplication public class EurekaConsumerApplication { [@Bean](https://my.oschina.net/bean) public RestTemplate restTemplate() { return new RestTemplate(); } public static void main(String[] args) { new SpringApplicationBuilder(EurekaConsumerApplication.class).web(true).run(); } }
使用RestTemplate獲取提供服務方的IP:端口,並訪問返回結果url
@GetMapping("/consumer") public String dc() { ServiceInstance serviceInstance = loadBalancerClient.choose("eureka-client"); String url = "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "/dc"; System.out.println(url); return restTemplate.getForObject(url, String.class); }
建立好後,能夠打開服務治理項目,服務提供項目,消費項目,跑一下。能夠看出消費者項目是經過服務治理項目獲取到服務提供方的地址的。.net
分佈式項目與獨立部署的幾個項目有何區別?rest